You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

package.go 4.5 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package cdssdk
  2. import (
  3. "fmt"
  4. "net/url"
  5. "strings"
  6. "gitlink.org.cn/cloudream/common/consts/errorcode"
  7. myhttp "gitlink.org.cn/cloudream/common/utils/http"
  8. "gitlink.org.cn/cloudream/common/utils/serder"
  9. )
  10. type PackageService struct {
  11. *Client
  12. }
  13. func (c *Client) Package() *PackageService {
  14. return &PackageService{c}
  15. }
  16. const PackageGetPath = "/package/get"
  17. type PackageGetReq struct {
  18. UserID UserID `json:"userID"`
  19. PackageID PackageID `json:"packageID"`
  20. }
  21. type PackageGetResp struct {
  22. Package
  23. }
  24. func (c *PackageService) Get(req PackageGetReq) (*PackageGetResp, error) {
  25. url, err := url.JoinPath(c.baseURL, PackageGetPath)
  26. if err != nil {
  27. return nil, err
  28. }
  29. resp, err := myhttp.GetForm(url, myhttp.RequestParam{
  30. Query: req,
  31. })
  32. if err != nil {
  33. return nil, err
  34. }
  35. codeResp, err := myhttp.ParseJSONResponse[response[PackageGetResp]](resp)
  36. if err != nil {
  37. return nil, err
  38. }
  39. if codeResp.Code == errorcode.OK {
  40. return &codeResp.Data, nil
  41. }
  42. return nil, codeResp.ToError()
  43. }
  44. const PackageCreatePath = "/package/create"
  45. type PackageCreateReq struct {
  46. UserID UserID `json:"userID"`
  47. BucketID BucketID `json:"bucketID"`
  48. Name string `json:"name"`
  49. }
  50. type PackageCreateResp struct {
  51. PackageID PackageID `json:"packageID,string"`
  52. }
  53. func (s *PackageService) Create(req PackageCreateReq) (*PackageCreateResp, error) {
  54. url, err := url.JoinPath(s.baseURL, PackageCreatePath)
  55. if err != nil {
  56. return nil, err
  57. }
  58. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  59. Body: req,
  60. })
  61. if err != nil {
  62. return nil, err
  63. }
  64. codeResp, err := myhttp.ParseJSONResponse[response[PackageCreateResp]](resp)
  65. if err != nil {
  66. return nil, err
  67. }
  68. if codeResp.Code == errorcode.OK {
  69. return &codeResp.Data, nil
  70. }
  71. return nil, codeResp.ToError()
  72. }
  73. type PackageDeleteReq struct {
  74. UserID UserID `json:"userID"`
  75. PackageID PackageID `json:"packageID"`
  76. }
  77. func (c *PackageService) Delete(req PackageDeleteReq) error {
  78. url, err := url.JoinPath(c.baseURL, "/package/delete")
  79. if err != nil {
  80. return err
  81. }
  82. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  83. Body: req,
  84. })
  85. if err != nil {
  86. return err
  87. }
  88. contType := resp.Header.Get("Content-Type")
  89. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  90. var codeResp response[any]
  91. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  92. return fmt.Errorf("parsing response: %w", err)
  93. }
  94. if codeResp.Code == errorcode.OK {
  95. return nil
  96. }
  97. return codeResp.ToError()
  98. }
  99. return fmt.Errorf("unknow response content type: %s", contType)
  100. }
  101. type PackageGetCachedNodesReq struct {
  102. PackageID PackageID `json:"packageID"`
  103. UserID UserID `json:"userID"`
  104. }
  105. type PackageGetCachedNodesResp struct {
  106. PackageCachingInfo
  107. }
  108. func (c *PackageService) GetCachedNodes(req PackageGetCachedNodesReq) (*PackageGetCachedNodesResp, error) {
  109. url, err := url.JoinPath(c.baseURL, "/package/getCachedNodes")
  110. if err != nil {
  111. return nil, err
  112. }
  113. resp, err := myhttp.GetJSON(url, myhttp.RequestParam{
  114. Body: req,
  115. })
  116. if err != nil {
  117. return nil, err
  118. }
  119. contType := resp.Header.Get("Content-Type")
  120. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  121. var codeResp response[PackageGetCachedNodesResp]
  122. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  123. return nil, fmt.Errorf("parsing response: %w", err)
  124. }
  125. if codeResp.Code == errorcode.OK {
  126. return &codeResp.Data, nil
  127. }
  128. return nil, codeResp.ToError()
  129. }
  130. return nil, fmt.Errorf("unknow response content type: %s", contType)
  131. }
  132. type PackageGetLoadedNodesReq struct {
  133. PackageID PackageID `json:"packageID"`
  134. UserID UserID `json:"userID"`
  135. }
  136. type PackageGetLoadedNodesResp struct {
  137. NodeIDs []NodeID `json:"nodeIDs"`
  138. }
  139. func (c *PackageService) GetLoadedNodes(req PackageGetLoadedNodesReq) (*PackageGetLoadedNodesResp, error) {
  140. url, err := url.JoinPath(c.baseURL, "/package/getLoadedNodes")
  141. if err != nil {
  142. return nil, err
  143. }
  144. resp, err := myhttp.GetJSON(url, myhttp.RequestParam{
  145. Body: req,
  146. })
  147. if err != nil {
  148. return nil, err
  149. }
  150. contType := resp.Header.Get("Content-Type")
  151. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  152. var codeResp response[PackageGetLoadedNodesResp]
  153. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  154. return nil, fmt.Errorf("parsing response: %w", err)
  155. }
  156. if codeResp.Code == errorcode.OK {
  157. return &codeResp.Data, nil
  158. }
  159. return nil, codeResp.ToError()
  160. }
  161. return nil, fmt.Errorf("unknow response content type: %s", contType)
  162. }