github.com/0chain/gosdk@v1.17.11/winsdk/helper.go (about) 1 package main 2 3 /* 4 #include <stdlib.h> 5 */ 6 import ( 7 "C" 8 ) 9 import ( 10 "encoding/base64" 11 "encoding/json" 12 "os" 13 "path/filepath" 14 15 "github.com/0chain/gosdk/core/encryption" 16 "github.com/0chain/gosdk/zboxcore/marker" 17 ) 18 19 func getZcnWorkDir() (string, error) { 20 d, err := os.UserHomeDir() 21 if err != nil { 22 return "", err 23 } 24 25 z := filepath.Join(d, ".zcn") 26 27 // create ~/.zcn folder if it doesn't exists 28 os.MkdirAll(z, 0766) //nolint: errcheck 29 30 return z, nil 31 } 32 33 type JsonResult struct { 34 Error string `json:"error,omitempty"` 35 Result string `json:"result,omitempty"` 36 } 37 38 func WithJSON(obj interface{}, err error) *C.char { 39 40 r := &JsonResult{} 41 42 if err != nil { 43 r.Error = err.Error() 44 } 45 46 if obj != nil { 47 result, _ := json.Marshal(obj) 48 r.Result = string(result) 49 } 50 51 js, _ := json.Marshal(r) 52 53 return C.CString(string(js)) 54 } 55 56 func getLookupHash(allocationID, path string) string { 57 return encryption.Hash(allocationID + ":" + path) 58 } 59 60 func decodeAuthTicket(authTicket *C.char) (*marker.AuthTicket, string, error) { 61 at := C.GoString(authTicket) 62 buf, err := base64.StdEncoding.DecodeString(at) 63 if err != nil { 64 return nil, at, err 65 } 66 t := &marker.AuthTicket{} 67 err = json.Unmarshal(buf, t) 68 if err != nil { 69 return nil, at, err 70 } 71 72 return t, at, err 73 }