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  }