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 2.9 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package cdsapi
  2. import (
  3. "net/http"
  4. "gitlink.org.cn/cloudream/common/sdks"
  5. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  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 cdssdk.UserID `url:"userID" form:"userID" binding:"required"`
  16. Name string `url:"name" form:"name" binding:"required"`
  17. }
  18. func (r *BucketGetByName) MakeParam() *sdks.RequestParam {
  19. return sdks.MakeQueryParam(http.MethodGet, BucketGetByNamePath, r)
  20. }
  21. type BucketGetByNameResp struct {
  22. Bucket cdssdk.Bucket `json:"bucket"`
  23. }
  24. func (r *BucketGetByNameResp) ParseResponse(resp *http.Response) error {
  25. return sdks.ParseCodeDataJSONResponse(resp, r)
  26. }
  27. func (c *BucketService) GetByName(req BucketGetByName) (*BucketGetByNameResp, error) {
  28. return JSONAPI(c.cfg, http.DefaultClient, &req, &BucketGetByNameResp{})
  29. }
  30. const BucketCreatePath = "/bucket/create"
  31. type BucketCreate struct {
  32. UserID cdssdk.UserID `json:"userID" binding:"required"`
  33. Name string `json:"name" binding:"required"`
  34. }
  35. func (r *BucketCreate) MakeParam() *sdks.RequestParam {
  36. return sdks.MakeJSONParam(http.MethodPost, BucketCreatePath, r)
  37. }
  38. type BucketCreateResp struct {
  39. Bucket cdssdk.Bucket `json:"bucket"`
  40. }
  41. func (r *BucketCreateResp) ParseResponse(resp *http.Response) error {
  42. return sdks.ParseCodeDataJSONResponse(resp, r)
  43. }
  44. func (c *BucketService) Create(req BucketCreate) (*BucketCreateResp, error) {
  45. return JSONAPI(c.cfg, http.DefaultClient, &req, &BucketCreateResp{})
  46. }
  47. const BucketDeletePath = "/bucket/delete"
  48. type BucketDelete struct {
  49. UserID cdssdk.UserID `json:"userID" binding:"required"`
  50. BucketID cdssdk.BucketID `json:"bucketID" binding:"required"`
  51. }
  52. func (r *BucketDelete) MakeParam() *sdks.RequestParam {
  53. return sdks.MakeJSONParam(http.MethodPost, BucketDeletePath, r)
  54. }
  55. type BucketDeleteResp struct{}
  56. func (r *BucketDeleteResp) ParseResponse(resp *http.Response) error {
  57. return sdks.ParseCodeDataJSONResponse(resp, r)
  58. }
  59. func (c *BucketService) Delete(req BucketDelete) error {
  60. return JSONAPINoData(c.cfg, http.DefaultClient, &req)
  61. }
  62. const BucketListUserBucketsPath = "/bucket/listUserBuckets"
  63. type BucketListUserBucketsReq struct {
  64. UserID cdssdk.UserID `form:"userID" url:"userID" binding:"required"`
  65. }
  66. func (r *BucketListUserBucketsReq) MakeParam() *sdks.RequestParam {
  67. return sdks.MakeQueryParam(http.MethodGet, BucketListUserBucketsPath, r)
  68. }
  69. type BucketListUserBucketsResp struct {
  70. Buckets []cdssdk.Bucket `json:"buckets"`
  71. }
  72. func (r *BucketListUserBucketsResp) ParseResponse(resp *http.Response) error {
  73. return sdks.ParseCodeDataJSONResponse(resp, r)
  74. }
  75. func (c *BucketService) ListUserBuckets(req BucketListUserBucketsReq) (*BucketListUserBucketsResp, error) {
  76. return JSONAPI(c.cfg, http.DefaultClient, &req, &BucketListUserBucketsResp{})
  77. }