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  }