parser.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package third
  2. import (
  3. "encoding/json"
  4. "errors"
  5. )
  6. type Parser struct {
  7. card string
  8. baseUrl string
  9. }
  10. type ParserRespond struct {
  11. Code int `json:"code"`
  12. Message string `json:"message"`
  13. Data interface{} `json:"data"`
  14. }
  15. func uPost(req interface{}, url string) (result ParserRespond, err error) {
  16. t, _ := json.Marshal(req)
  17. res, err := post(url, t)
  18. if err != nil {
  19. return
  20. }
  21. err = json.Unmarshal(res, &result)
  22. if err != nil {
  23. return
  24. }
  25. if result.Code != 200 {
  26. return result, errors.New(result.Message)
  27. }
  28. return
  29. }
  30. /*
  31. 功能: 新建一个解析器
  32. 输入:
  33. card: 当前用户卡密
  34. baseUrl: 服务器基础路径
  35. 返回:
  36. respond: 解析记录切片
  37. error: 解析报错
  38. */
  39. func NewParser(card string, baseUrl string) *Parser {
  40. return &Parser{card, baseUrl}
  41. }
  42. /*
  43. 功能: 查看当前接口是否正常, 貌似没啥意义
  44. 输入:
  45. 返回:
  46. respond: 正常/异常
  47. error: 解析报错
  48. */
  49. func (p *Parser) GetUserInfo() (bool, error) {
  50. url := p.baseUrl + VipStatusUrl
  51. _, err := post(url, []byte("{}"))
  52. if err != nil {
  53. return false, err
  54. }
  55. return true, nil
  56. }
  57. /*
  58. 功能: 查看当前用户解析记录
  59. 输入:
  60. 返回:
  61. respond: 解析记录切片
  62. error: 解析报错
  63. */
  64. func (p *Parser) GetRecords() ([]GetRecordsRespondData, error) {
  65. url := p.baseUrl + VipRecordsUrl
  66. key := getUserKey(p.card)
  67. req := GetRecordsRequestParam{
  68. UserToken: key,
  69. Email: key,
  70. }
  71. result, err := uPost(req, url)
  72. if err != nil {
  73. return nil, err
  74. }
  75. r, ok := result.Data.([]GetRecordsRespondData)
  76. if !ok {
  77. return nil, errors.New("断言数据类型错误")
  78. }
  79. return r, nil
  80. }
  81. /*
  82. 功能: 查看当前用户客户端的信息
  83. 输入:
  84. 返回:
  85. respond: 客户端信息
  86. error: 解析报错
  87. */
  88. func (p *Parser) GetCountProxy() (*GetCountProxyRespondData, error) {
  89. url := p.baseUrl + VipProxyStatusUrl
  90. key := getUserKey(p.card)
  91. req := GetCountProxyRequestParam{
  92. Key: key,
  93. }
  94. result, err := uPost(req, url)
  95. if err != nil {
  96. return nil, err
  97. }
  98. r, ok := result.Data.(GetCountProxyRespondData)
  99. if !ok {
  100. return nil, errors.New("断言数据类型错误")
  101. }
  102. return &r, nil
  103. }
  104. /*
  105. 功能: 查看当前文章是否支持解析/或者路径是否正确
  106. 输入:
  107. source: csdn 文章路径
  108. 返回:
  109. bool: 支持/不支持
  110. error: 解析报错
  111. */
  112. func (p *Parser) GetTaskPrice(source string) (bool, error) {
  113. url := p.baseUrl + VipTaskPriceUrl
  114. req := GetTaskPriceRequestParam{
  115. Url: source,
  116. }
  117. result, err := uPost(req, url)
  118. if err != nil {
  119. return false, err
  120. }
  121. r, ok := result.Data.(int)
  122. if !ok {
  123. return false, errors.New("断言数据类型错误")
  124. }
  125. return r == 1, nil
  126. }
  127. /*
  128. 功能: 解析当前文章
  129. 输入:
  130. source: csdn 文章路径
  131. 返回:
  132. result: 解析的文章路径, 可以直接下载查看的路径
  133. error: 解析报错
  134. */
  135. func (p *Parser) PurchasePaperPlusProxy(source string) (string, error) {
  136. url := p.baseUrl + VipParseUrl
  137. key := getUserKey(p.card)
  138. req := PurchasePaperPlusProxyRequestParam{
  139. CssUrl: "https://unlockdoc.smain.cn/assets/13062df20.css",
  140. Other: "1",
  141. Email: nil,
  142. Url: source,
  143. UseNum: 1,
  144. Key: key,
  145. }
  146. result, err := uPost(req, url)
  147. if err != nil {
  148. return "", err
  149. }
  150. r, ok := result.Data.(string)
  151. if !ok {
  152. return "", errors.New("断言数据类型错误")
  153. }
  154. return r, nil
  155. }