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.

space_syncer.go 2.9 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package api
  2. import (
  3. "net/http"
  4. "gitlink.org.cn/cloudream/common/sdks"
  5. clitypes "gitlink.org.cn/cloudream/jcs-pub/client/types"
  6. )
  7. type SpaceSyncerService struct {
  8. *Client
  9. }
  10. func (c *Client) SpaceSyncer() *SpaceSyncerService {
  11. return &SpaceSyncerService{
  12. Client: c,
  13. }
  14. }
  15. const SpaceSyncerCreateTaskPath = "/spaceSyncer/createTask"
  16. type SpaceSyncerCreateTask struct {
  17. Trigger clitypes.SpaceSyncTrigger `json:"trigger" binding:"required"`
  18. Mode clitypes.SpaceSyncMode `json:"mode" binding:"required"`
  19. Filters []clitypes.SpaceSyncFilter `json:"filters"`
  20. Options clitypes.SpaceSyncOptions `json:"options" binding:"required"`
  21. SrcUserSpaceID clitypes.UserSpaceID `json:"srcUserSpaceID" binding:"required"`
  22. SrcPath string `json:"srcPath"`
  23. DestUserSpaceIDs []clitypes.UserSpaceID `json:"destUserSpaceIDs" binding:"required"`
  24. DestPathes []string `json:"destPathes" binding:"required"`
  25. }
  26. func (r *SpaceSyncerCreateTask) MakeParam() *sdks.RequestParam {
  27. return sdks.MakeJSONParam(http.MethodPost, SpaceSyncerCreateTaskPath, r)
  28. }
  29. type SpaceSyncerCreateTaskResp struct {
  30. Task clitypes.SpaceSyncTask `json:"task"`
  31. }
  32. func (r *SpaceSyncerCreateTaskResp) ParseResponse(resp *http.Response) error {
  33. return sdks.ParseCodeDataJSONResponse(resp, r)
  34. }
  35. func (c *SpaceSyncerService) CreateTask(req SpaceSyncerCreateTask) (*SpaceSyncerCreateTaskResp, error) {
  36. return JSONAPI(&c.cfg, c.httpCli, &req, &SpaceSyncerCreateTaskResp{})
  37. }
  38. const SpaceSyncerGetTaskPath = "/spaceSyncer/getTask"
  39. type SpaceSyncerGetTask struct {
  40. TaskID clitypes.SpaceSyncTaskID `url:"taskID" binding:"required"`
  41. }
  42. func (r *SpaceSyncerGetTask) MakeParam() *sdks.RequestParam {
  43. return sdks.MakeQueryParam(http.MethodGet, SpaceSyncerGetTaskPath, r)
  44. }
  45. type SpaceSyncerGetTaskResp struct {
  46. Task clitypes.SpaceSyncTask `json:"task"`
  47. }
  48. func (r *SpaceSyncerGetTaskResp) ParseResponse(resp *http.Response) error {
  49. return sdks.ParseCodeDataJSONResponse(resp, r)
  50. }
  51. func (c *SpaceSyncerService) GetTask(req SpaceSyncerGetTask) (*SpaceSyncerGetTaskResp, error) {
  52. return JSONAPI(&c.cfg, c.httpCli, &req, &SpaceSyncerGetTaskResp{})
  53. }
  54. const SpaceSyncerCancelTaskPath = "/spaceSyncer/cancelTask"
  55. type SpaceSyncerCancelTask struct {
  56. TaskID clitypes.SpaceSyncTaskID `json:"taskID" binding:"required"`
  57. }
  58. func (r *SpaceSyncerCancelTask) MakeParam() *sdks.RequestParam {
  59. return sdks.MakeJSONParam(http.MethodPost, SpaceSyncerCancelTaskPath, r)
  60. }
  61. type SpaceSyncerCancelTaskResp struct{}
  62. func (r *SpaceSyncerCancelTaskResp) ParseResponse(resp *http.Response) error {
  63. return sdks.ParseCodeDataJSONResponse(resp, r)
  64. }
  65. func (c *SpaceSyncerService) CancelTask(req SpaceSyncerCancelTask) (*SpaceSyncerCancelTaskResp, error) {
  66. return JSONAPI(&c.cfg, c.httpCli, &req, &SpaceSyncerCancelTaskResp{})
  67. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。