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.

bucket.go 3.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package cdssdk
  2. import (
  3. "net/url"
  4. "gitlink.org.cn/cloudream/common/consts/errorcode"
  5. "gitlink.org.cn/cloudream/common/utils/http2"
  6. )
  7. type BucketService struct {
  8. *Client
  9. }
  10. func (c *Client) Bucket() *BucketService {
  11. return &BucketService{c}
  12. }
  13. const BucketGetByNamePath = "/bucket/getByName"
  14. type BucketGetByName struct {
  15. UserID UserID `json:"userID" form:"userID" binding:"required"`
  16. Name string `json:"name" form:"name" binding:"required"`
  17. }
  18. type BucketGetByNameResp struct {
  19. Bucket Bucket `json:"bucket"`
  20. }
  21. func (c *BucketService) GetByName(req BucketGetByName) (*BucketGetByNameResp, error) {
  22. url, err := url.JoinPath(c.baseURL, BucketGetByNamePath)
  23. if err != nil {
  24. return nil, err
  25. }
  26. resp, err := http2.GetForm(url, http2.RequestParam{
  27. Query: req,
  28. })
  29. if err != nil {
  30. return nil, err
  31. }
  32. codeResp, err := ParseJSONResponse[response[BucketGetByNameResp]](resp)
  33. if err != nil {
  34. return nil, err
  35. }
  36. if codeResp.Code == errorcode.OK {
  37. return &codeResp.Data, nil
  38. }
  39. return nil, codeResp.ToError()
  40. }
  41. const BucketCreatePath = "/bucket/create"
  42. type BucketCreate struct {
  43. UserID UserID `json:"userID" binding:"required"`
  44. Name string `json:"name" binding:"required"`
  45. }
  46. type BucketCreateResp struct {
  47. Bucket Bucket `json:"bucket"`
  48. }
  49. func (c *BucketService) Create(req BucketCreate) (*BucketCreateResp, error) {
  50. url, err := url.JoinPath(c.baseURL, BucketCreatePath)
  51. if err != nil {
  52. return nil, err
  53. }
  54. resp, err := http2.PostJSON(url, http2.RequestParam{
  55. Body: req,
  56. })
  57. if err != nil {
  58. return nil, err
  59. }
  60. codeResp, err := ParseJSONResponse[response[BucketCreateResp]](resp)
  61. if err != nil {
  62. return nil, err
  63. }
  64. if codeResp.Code == errorcode.OK {
  65. return &codeResp.Data, nil
  66. }
  67. return nil, codeResp.ToError()
  68. }
  69. const BucketDeletePath = "/bucket/delete"
  70. type BucketDelete struct {
  71. UserID UserID `json:"userID" binding:"required"`
  72. BucketID BucketID `json:"bucketID" binding:"required"`
  73. }
  74. type BucketDeleteResp struct{}
  75. func (c *BucketService) Delete(req BucketDelete) error {
  76. url, err := url.JoinPath(c.baseURL, BucketDeletePath)
  77. if err != nil {
  78. return err
  79. }
  80. resp, err := http2.PostJSON(url, http2.RequestParam{
  81. Body: req,
  82. })
  83. if err != nil {
  84. return err
  85. }
  86. codeResp, err := ParseJSONResponse[response[BucketDeleteResp]](resp)
  87. if err != nil {
  88. return err
  89. }
  90. if codeResp.Code == errorcode.OK {
  91. return nil
  92. }
  93. return codeResp.ToError()
  94. }
  95. const BucketListUserBucketsPath = "/bucket/listUserBuckets"
  96. type BucketListUserBucketsReq struct {
  97. UserID UserID `form:"userID" json:"userID" binding:"required"`
  98. }
  99. type BucketListUserBucketsResp struct {
  100. Buckets []Bucket `json:"buckets"`
  101. }
  102. func (c *BucketService) ListUserBuckets(req BucketListUserBucketsReq) (*BucketListUserBucketsResp, error) {
  103. url, err := url.JoinPath(c.baseURL, BucketListUserBucketsPath)
  104. if err != nil {
  105. return nil, err
  106. }
  107. resp, err := http2.GetForm(url, http2.RequestParam{
  108. Query: req,
  109. })
  110. if err != nil {
  111. return nil, err
  112. }
  113. codeResp, err := ParseJSONResponse[response[BucketListUserBucketsResp]](resp)
  114. if err != nil {
  115. return nil, err
  116. }
  117. if codeResp.Code == errorcode.OK {
  118. return &codeResp.Data, nil
  119. }
  120. return nil, codeResp.ToError()
  121. }