github.com/optim-corp/cios-golang-sdk@v0.5.1/sdk/service/filestorage/bucket.go (about) 1 package srvfilestorage 2 3 import ( 4 "errors" 5 _nethttp "net/http" 6 7 cnv "github.com/fcfcqloow/go-advance/convert" 8 xmath "github.com/fcfcqloow/go-advance/math" 9 "github.com/optim-corp/cios-golang-sdk/cios" 10 ciosctx "github.com/optim-corp/cios-golang-sdk/ctx" 11 "github.com/optim-corp/cios-golang-sdk/util" 12 ) 13 14 func MakeGetBucketsOpts() cios.ApiGetBucketsRequest { 15 return cios.ApiGetBucketsRequest{} 16 } 17 18 func (self *CiosFileStorage) GetBuckets(ctx ciosctx.RequestCtx, params cios.ApiGetBucketsRequest) (response cios.MultipleBucket, httpResponse *_nethttp.Response, err error) { 19 if err = self.refresh(); err != nil { 20 return 21 } 22 params.ApiService = self.ApiClient.FileStorageApi 23 params.Ctx = self.withHost(ctx) 24 params.P_name = util.ToNil(params.P_name) 25 params.P_order = util.ToNil(params.P_order) 26 params.P_orderBy = util.ToNil(params.P_orderBy) 27 params.P_resourceOwnerId = util.ToNil(params.P_resourceOwnerId) 28 return params.Execute() 29 } 30 func (self *CiosFileStorage) GetBucketsAll(ctx ciosctx.RequestCtx, params cios.ApiGetBucketsRequest) ([]cios.Bucket, *_nethttp.Response, error) { 31 var ( 32 result []cios.Bucket 33 httpRes *_nethttp.Response 34 err error 35 offset = int64(0) 36 _limit = int64(1000) 37 getFunction = func(offset int64) (cios.MultipleBucket, *_nethttp.Response, error) { 38 return self.GetBuckets(ctx, 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.Buckets...) 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.Buckets...) 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.Buckets...) 67 } 68 } 69 return result, httpRes, err 70 } 71 func (self *CiosFileStorage) GetBucketsUnlimited(ctx ciosctx.RequestCtx, params cios.ApiGetBucketsRequest) ([]cios.Bucket, *_nethttp.Response, error) { 72 params.P_limit = nil 73 return self.GetBucketsAll(ctx, params) 74 } 75 76 func (self *CiosFileStorage) GetBucket(ctx ciosctx.RequestCtx, bucketID string) (cios.Bucket, *_nethttp.Response, error) { 77 if err := self.refresh(); err != nil { 78 return cios.Bucket{}, nil, err 79 } 80 response, httpResponse, err := self.ApiClient.FileStorageApi.GetBucket(self.withHost(ctx), bucketID).Execute() 81 if err != nil { 82 return cios.Bucket{}, httpResponse, err 83 } 84 return response.Bucket, httpResponse, err 85 } 86 func (self *CiosFileStorage) GetBucketByResourceOwnerIDAndName(ctx ciosctx.RequestCtx, resourceOwnerID string, name string) (cios.Bucket, *_nethttp.Response, error) { 87 buckets, httpResponse, err := self.GetBucketsUnlimited(ctx, MakeGetBucketsOpts().ResourceOwnerId(resourceOwnerID).Name(name)) 88 if len(buckets) == 0 { 89 return cios.Bucket{}, nil, errors.New("No Bucket") 90 } 91 if err != nil { 92 return cios.Bucket{}, httpResponse, err 93 } 94 return buckets[0], httpResponse, err 95 } 96 func (self *CiosFileStorage) GetOrCreateBucket(ctx ciosctx.RequestCtx, resourceOwnerID string, name string) (cios.Bucket, *_nethttp.Response, error) { 97 res, httpResponse, err := self.GetBucketByResourceOwnerIDAndName(ctx, resourceOwnerID, name) 98 if err != nil || res.Id == "" { 99 return self.CreateBucket(ctx, resourceOwnerID, name) 100 } 101 return res, httpResponse, err 102 } 103 func (self *CiosFileStorage) CreateBucket(ctx ciosctx.RequestCtx, resourceOwnerID string, name string) (cios.Bucket, *_nethttp.Response, error) { 104 if err := self.refresh(); err != nil { 105 return cios.Bucket{}, nil, err 106 } 107 request := self.ApiClient.FileStorageApi.CreateBucket(self.withHost(ctx)).BucketRequest(cios.BucketRequest{ResourceOwnerId: resourceOwnerID, Name: name}) 108 response, httpResponse, err := request.Execute() 109 if err != nil { 110 return cios.Bucket{}, httpResponse, err 111 } 112 return response.Bucket, httpResponse, err 113 } 114 func (self *CiosFileStorage) DeleteBucket(ctx ciosctx.RequestCtx, bucketID string) (*_nethttp.Response, error) { 115 if err := self.refresh(); err != nil { 116 return nil, err 117 } 118 return self.ApiClient.FileStorageApi.DeleteBucket(self.withHost(ctx), bucketID).Execute() 119 } 120 func (self *CiosFileStorage) UpdateBucket(ctx ciosctx.RequestCtx, bucketID string, name string) (*_nethttp.Response, error) { 121 if err := self.refresh(); err != nil { 122 return nil, err 123 } 124 return self.ApiClient.FileStorageApi.UpdateBucket(self.withHost(ctx), bucketID).BucketName(cios.BucketName{Name: name}).Execute() 125 }