From 82f8e6ed92da9a44cc8c22a58e542c9c531001ce Mon Sep 17 00:00:00 2001 From: mikel Date: Thu, 23 Mar 2023 14:42:03 +0800 Subject: [PATCH 1/2] add new http request with key and token --- .gitignore | 1 + client/web/restful.go | 66 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/.gitignore b/.gitignore index 17dd289..c6dac17 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ logs/info.log logs/error.log build/swan-lib build/swan-lib_unix +.idea diff --git a/client/web/restful.go b/client/web/restful.go index d83390e..412ff0d 100644 --- a/client/web/restful.go +++ b/client/web/restful.go @@ -135,6 +135,72 @@ func HttpRequest(httpMethod, uri, tokenString string, params interface{}) ([]byt return responseBody, nil } +func HttpRequestWithKey(httpMethod, uri, key, token string, params interface{}) ([]byte, error) { + var request *http.Request + var err error + + switch params := params.(type) { + case io.Reader: + request, err = http.NewRequest(httpMethod, uri, params) + if err != nil { + logs.GetLogger().Error(err) + return nil, err + } + request.Header.Set("Content-Type", HTTP_CONTENT_TYPE_FORM) + default: + jsonReq, errJson := json.Marshal(params) + if errJson != nil { + logs.GetLogger().Error(errJson) + return nil, errJson + } + + request, err = http.NewRequest(httpMethod, uri, bytes.NewBuffer(jsonReq)) + if err != nil { + logs.GetLogger().Error(err) + return nil, err + } + request.Header.Set("Content-Type", HTTP_CONTENT_TYPE_JSON) + } + + if len(strings.Trim(key, " ")) > 0 { + request.Header.Set("api_key", key) + } + + if len(strings.Trim(token, " ")) > 0 { + request.Header.Set("api_token", token) + } + + client := &http.Client{} + response, err := client.Do(request) + + if err != nil { + logs.GetLogger().Error(err) + return nil, err + } + + defer response.Body.Close() + + if response.StatusCode != http.StatusOK { + err := fmt.Errorf("http status: %s, code:%d, url:%s", response.Status, response.StatusCode, uri) + logs.GetLogger().Error(err) + switch response.StatusCode { + case http.StatusNotFound: + logs.GetLogger().Error("please check your url:", uri) + case http.StatusUnauthorized: + logs.GetLogger().Error("Please check your key:", key, " and token:", token) + } + return nil, err + } + + responseBody, err := ioutil.ReadAll(response.Body) + if err != nil { + logs.GetLogger().Error(err) + return nil, err + } + + return responseBody, nil +} + func HttpPutFile(url string, tokenString string, paramTexts map[string]string, paramFilename, paramFilepath string) (string, error) { response, err := HttpRequestFile(http.MethodPut, url, tokenString, paramTexts, paramFilename, paramFilepath) return response, err From cbbeaca7be5b4d9fe238a98a61390bd1021f40ff Mon Sep 17 00:00:00 2001 From: mikel Date: Fri, 24 Mar 2023 15:49:28 +0800 Subject: [PATCH 2/2] upload or download by go-ipfs-api --- client/ipfs/ipfs.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/client/ipfs/ipfs.go b/client/ipfs/ipfs.go index 5c3f210..7a81f66 100644 --- a/client/ipfs/ipfs.go +++ b/client/ipfs/ipfs.go @@ -1,7 +1,9 @@ package ipfs import ( + "context" "fmt" + shell "github.com/ipfs/go-ipfs-api" "net/http" "github.com/filswan/go-swan-lib/client/web" @@ -46,3 +48,35 @@ func Export2CarFile(apiUrl, fileHash string, carFileFullPath string) error { logs.GetLogger().Info(bytesWritten, " bytes have been written to:", carFileFullPath) return nil } + +func UploadDirToIpfs(sh *shell.Shell, dirName string) (string, error) { + + dataCid, err := sh.AddDir(dirName) + if err != nil { + logs.GetLogger().Error(err) + return "", err + } + + return dataCid, nil +} + +func DataCidIsDirectory(sh *shell.Shell, dataCid string) (*bool, error) { + + path := utils.UrlJoin("/ipfs/", dataCid) + stat, err := sh.FilesStat(context.Background(), path) + if err != nil { + logs.GetLogger().Error(err) + return nil, err + } + + isFile := false + if stat.Type == "directory" { + isFile = true + } + + return &isFile, nil +} + +func DownloadFromIpfs(sh *shell.Shell, dataCid, outDir string) error { + return sh.Get(dataCid, outDir) +}