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  }