github.com/optim-corp/cios-golang-sdk@v0.5.1/sdk/service/filestorage/node.go (about) 1 package srvfilestorage 2 3 import ( 4 _nethttp "net/http" 5 6 cnv "github.com/fcfcqloow/go-advance/convert" 7 xmath "github.com/fcfcqloow/go-advance/math" 8 "github.com/optim-corp/cios-golang-sdk/cios" 9 ciosctx "github.com/optim-corp/cios-golang-sdk/ctx" 10 "github.com/optim-corp/cios-golang-sdk/util" 11 ) 12 13 func MakeGetNodesOpts() cios.ApiGetNodesRequest { 14 return cios.ApiGetNodesRequest{} 15 } 16 func (self *CiosFileStorage) GetNodes(ctx ciosctx.RequestCtx, bucketID string, params cios.ApiGetNodesRequest) (response cios.MultipleNode, httpResponse *_nethttp.Response, err error) { 17 if err := self.refresh(); err != nil { 18 return cios.MultipleNode{}, nil, err 19 } 20 params.Ctx = self.withHost(ctx) 21 params.ApiService = self.ApiClient.FileStorageApi 22 params.P_bucketId = bucketID 23 params.P_order = util.ToNil(params.P_order) 24 params.P_orderBy = util.ToNil(params.P_orderBy) 25 params.P_name = util.ToNil(params.P_name) 26 params.P_parentNodeId = util.ToNil(params.P_parentNodeId) 27 params.P_key = util.ToNil(params.P_key) 28 return params.Execute() 29 } 30 func (self *CiosFileStorage) GetNodesAll(ctx ciosctx.RequestCtx, bucketID string, params cios.ApiGetNodesRequest) ([]cios.Node, *_nethttp.Response, error) { 31 var ( 32 result []cios.Node 33 httpRes *_nethttp.Response 34 err error 35 offset = int64(0) 36 _limit = int64(1000) 37 getFunction = func(offset int64) (cios.MultipleNode, *_nethttp.Response, error) { 38 return self.GetNodes(ctx, bucketID, params.Limit(xmath.MinInt64(_limit, 1000)).Offset(offset+cnv.MustInt64(params.P_offset))) 39 } 40 ) 41 if params.P_limit != nil { 42 _limit = *params.P_limit 43 for { 44 res, httpRes, err := getFunction(offset) 45 if err != nil { 46 return nil, httpRes, err 47 } 48 result = append(result, res.Nodes...) 49 offset += 1000 50 _limit -= 1000 51 if _limit <= 0 { 52 break 53 } 54 } 55 } else { 56 res, httpRes, err := getFunction(offset) 57 if err != nil { 58 return nil, httpRes, err 59 } 60 result = append(result, res.Nodes...) 61 for offset = int64(1000); offset+cnv.MustInt64(params.P_offset) < res.Total; offset += 1000 { 62 res, httpRes, err = getFunction(offset) 63 if err != nil { 64 return nil, httpRes, err 65 } 66 result = append(result, res.Nodes...) 67 } 68 } 69 return result, httpRes, err 70 } 71 func (self *CiosFileStorage) GetNodesUnlimited(ctx ciosctx.RequestCtx, bucketID string, params cios.ApiGetNodesRequest) ([]cios.Node, *_nethttp.Response, error) { 72 params.P_limit = nil 73 return self.GetNodesAll(ctx, bucketID, params) 74 } 75 76 func (self *CiosFileStorage) GetNode(ctx ciosctx.RequestCtx, bucketID string, nodeID string) (cios.Node, *_nethttp.Response, error) { 77 if err := self.refresh(); err != nil { 78 return cios.Node{}, nil, err 79 } 80 request := self.ApiClient.FileStorageApi.GetNode(self.withHost(ctx), bucketID, nodeID) 81 response, httpResponse, err := request.Execute() 82 if err != nil { 83 return cios.Node{}, httpResponse, err 84 } 85 return response.Node, httpResponse, err 86 } 87 func (self *CiosFileStorage) CreateNode(ctx ciosctx.RequestCtx, bucketID string, name string, parentNodeID *string) (cios.Node, *_nethttp.Response, error) { 88 return self.CreateNodeOnNodeID(ctx, bucketID, cios.NodeRequest{ 89 Name: name, 90 ParentNodeId: parentNodeID, 91 }) 92 } 93 func (self *CiosFileStorage) CreateNodeOnNodeID(ctx ciosctx.RequestCtx, bucketID string, body cios.NodeRequest) (cios.Node, *_nethttp.Response, error) { 94 if err := self.refresh(); err != nil { 95 return cios.Node{}, nil, err 96 } 97 request := self.ApiClient.FileStorageApi.CreateDirectory(self.withHost(ctx), bucketID).NodeRequest(body) 98 response, httpResponse, err := request.Execute() 99 if err != nil { 100 return cios.Node{}, httpResponse, err 101 } 102 return response.Node, httpResponse, err 103 } 104 105 func (self *CiosFileStorage) DeleteNode(ctx ciosctx.RequestCtx, bucketID string, nodeID string) (*_nethttp.Response, error) { 106 if err := self.refresh(); err != nil { 107 return nil, err 108 } 109 return self.ApiClient.FileStorageApi.DeleteNode(self.withHost(ctx), bucketID, nodeID).Execute() 110 } 111 112 func (self *CiosFileStorage) CopyNode(ctx ciosctx.RequestCtx, bucketID string, nodeID string, destBucketID *string, destParentNodeID *string) (cios.Node, *_nethttp.Response, error) { 113 if err := self.refresh(); err != nil { 114 return cios.Node{}, nil, err 115 } 116 request := self.ApiClient.FileStorageApi.CopyNode(self.withHost(ctx), bucketID, nodeID).BucketEditBody(cios.BucketEditBody{ 117 DestBucketId: destBucketID, 118 ParentNodeId: destParentNodeID, 119 }) 120 response, httpResponse, err := request.Execute() 121 if err != nil { 122 return cios.Node{}, httpResponse, err 123 } 124 return response.Node, httpResponse, err 125 } 126 127 func (self *CiosFileStorage) MoveNode(ctx ciosctx.RequestCtx, bucketID string, nodeID string, destBucketID *string, destParentNodeID *string) (cios.Node, *_nethttp.Response, error) { 128 if err := self.refresh(); err != nil { 129 return cios.Node{}, nil, err 130 } 131 request := self.ApiClient.FileStorageApi.MoveNode(self.withHost(ctx), bucketID, nodeID).BucketEditBody(cios.BucketEditBody{ 132 DestBucketId: destBucketID, 133 ParentNodeId: destParentNodeID, 134 }) 135 response, httpResponse, err := request.Execute() 136 if err != nil { 137 return cios.Node{}, httpResponse, err 138 } 139 return response.Node, httpResponse, err 140 } 141 142 func (self *CiosFileStorage) RenameNode(ctx ciosctx.RequestCtx, bucketID string, nodeID string, name string) (cios.Node, *_nethttp.Response, error) { 143 if err := self.refresh(); err != nil { 144 return cios.Node{}, nil, err 145 } 146 request := self.ApiClient.FileStorageApi.RenameNode(self.withHost(ctx), bucketID, nodeID).NodeName(cios.NodeName{Name: name}) 147 response, httpResponse, err := request.Execute() 148 if err != nil { 149 return cios.Node{}, httpResponse, err 150 } 151 return response.Node, httpResponse, err 152 153 }