github.com/optim-corp/cios-golang-sdk@v0.5.1/sdk/service/filestorage/file.go (about)

     1  package srvfilestorage
     2  
     3  import (
     4  	"crypto/md5"
     5  	"encoding/base64"
     6  	_nethttp "net/http"
     7  
     8  	cnv "github.com/fcfcqloow/go-advance/convert"
     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 MakeUploadFileOpts() cios.ApiUploadFileRequest {
    15  	return cios.ApiUploadFileRequest{}
    16  }
    17  
    18  func (self *CiosFileStorage) DownloadFile(ctx ciosctx.RequestCtx, bucketID string, nodeID string) ([]byte, *_nethttp.Response, error) {
    19  	if err := self.refresh(); err != nil {
    20  		return nil, nil, err
    21  	}
    22  	request := self.ApiClient.FileStorageApi.DownloadFile(self.withHost(ctx), bucketID).NodeId(nodeID)
    23  	f, httpResponse, err := request.Execute()
    24  	return []byte(f), httpResponse, err
    25  }
    26  func (self *CiosFileStorage) DownloadFileByKey(ctx ciosctx.RequestCtx, bucketID string, key string) ([]byte, *_nethttp.Response, error) {
    27  	if err := self.refresh(); err != nil {
    28  		return nil, nil, err
    29  	}
    30  	request := self.ApiClient.FileStorageApi.DownloadFile(self.withHost(ctx), bucketID).Key(key)
    31  	f, httpResponse, err := request.Execute()
    32  	return []byte(f), httpResponse, err
    33  }
    34  func (self *CiosFileStorage) UploadFile(ctx ciosctx.RequestCtx, bucketID string, body []byte, params cios.ApiUploadFileRequest) (*_nethttp.Response, error) {
    35  	if err := self.refresh(); err != nil {
    36  		return nil, err
    37  	}
    38  	params.Ctx = self.withHost(ctx)
    39  	params.ApiService = self.ApiClient.FileStorageApi
    40  	params.P_bucketId = bucketID
    41  	params.P_name = util.ToNil(params.P_name)
    42  	params.P_key = util.ToNil(params.P_key)
    43  	params.P_nodeId = util.ToNil(params.P_nodeId)
    44  	params.P_parentNodeId = util.ToNil(params.P_parentNodeId)
    45  	params.P_body = cnv.StrPtr(string(body))
    46  	params.P_checksum = cnv.StrPtr(toCheckSum(body))
    47  	_, httpResponse, err := params.Execute()
    48  	return httpResponse, err
    49  }
    50  
    51  func toCheckSum(byts []byte) string {
    52  	h := md5.New()
    53  	h.Write(byts)
    54  	return base64.StdEncoding.EncodeToString(h.Sum(nil))
    55  }