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.3 kB

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