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.

storage.go 2.3 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package storage
  2. import (
  3. "fmt"
  4. "net/url"
  5. "strings"
  6. "gitlink.org.cn/cloudream/common/consts/errorcode"
  7. "gitlink.org.cn/cloudream/common/models"
  8. myhttp "gitlink.org.cn/cloudream/common/utils/http"
  9. "gitlink.org.cn/cloudream/common/utils/serder"
  10. )
  11. type StorageLoadPackageReq struct {
  12. UserID int64 `json:"userID"`
  13. PackageID int64 `json:"packageID"`
  14. StorageID int64 `json:"storageID"`
  15. }
  16. func (c *Client) StorageLoadPackage(req StorageLoadPackageReq) error {
  17. url, err := url.JoinPath(c.baseURL, "/storage/loadPackage")
  18. if err != nil {
  19. return err
  20. }
  21. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  22. Body: req,
  23. })
  24. if err != nil {
  25. return err
  26. }
  27. contType := resp.Header.Get("Content-Type")
  28. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  29. var codeResp response[any]
  30. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  31. return fmt.Errorf("parsing response: %w", err)
  32. }
  33. if codeResp.Code == errorcode.OK {
  34. return nil
  35. }
  36. return codeResp.ToError()
  37. }
  38. return fmt.Errorf("unknow response content type: %s", contType)
  39. }
  40. type StorageCreatePackageReq struct {
  41. UserID int64 `json:"userID"`
  42. StorageID int64 `json:"storageID"`
  43. Path string `json:"path"`
  44. BucketID int64 `json:"bucketID"`
  45. Name string `json:"name"`
  46. Redundancy models.TypedRedundancyInfo `json:"redundancy"`
  47. }
  48. type StorageCreatePackageResp struct {
  49. PackageID int64 `json:"packageID"`
  50. }
  51. func (c *Client) StorageCreatePackage(req StorageCreatePackageReq) (*StorageCreatePackageResp, error) {
  52. url, err := url.JoinPath(c.baseURL, "/storage/createPackage")
  53. if err != nil {
  54. return nil, err
  55. }
  56. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  57. Body: req,
  58. })
  59. if err != nil {
  60. return nil, err
  61. }
  62. contType := resp.Header.Get("Content-Type")
  63. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  64. var codeResp response[StorageCreatePackageResp]
  65. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  66. return nil, fmt.Errorf("parsing response: %w", err)
  67. }
  68. if codeResp.Code == errorcode.OK {
  69. return &codeResp.Data, nil
  70. }
  71. return nil, codeResp.ToError()
  72. }
  73. return nil, fmt.Errorf("unknow response content type: %s", contType)
  74. }