github.com/0chain/gosdk@v1.17.11/winsdk/zboxapi.go (about)

     1  package main
     2  
     3  /*
     4  #include <stdlib.h>
     5  */
     6  
     7  import (
     8  	"C"
     9  )
    10  
    11  import (
    12  	"context"
    13  	"encoding/json"
    14  	"errors"
    15  
    16  	"github.com/0chain/gosdk/core/logger"
    17  	"github.com/0chain/gosdk/zboxapi"
    18  	"github.com/0chain/gosdk/zboxcore/client"
    19  )
    20  
    21  var (
    22  	zboxApiClient            *zboxapi.Client
    23  	ErrZboxApiNotInitialized = errors.New("zboxapi: zboxapi client is not initialized")
    24  	ErrZboxApiInvalidWallet  = errors.New("zboxapi: invalid wallet")
    25  	logging                  logger.Logger
    26  )
    27  
    28  // InitZbox init zbox api client with zbox host and zbox app type
    29  //
    30  //export InitZBox
    31  func InitZBox(zboxHost, zboxAppType *C.char) {
    32  	defer func() {
    33  		if r := recover(); r != nil {
    34  			log.Error("win: crash ", r)
    35  		}
    36  	}()
    37  	if zboxApiClient == nil {
    38  		zboxApiClient = zboxapi.NewClient()
    39  	}
    40  
    41  	zboxApiClient.SetRequest(C.GoString(zboxHost), C.GoString(zboxAppType))
    42  
    43  	c := client.GetClient()
    44  	if c != nil {
    45  		zboxApiClient.SetWallet(client.GetClientID(), client.GetClientPrivateKey(), client.GetClientPublicKey())
    46  	} else {
    47  		logging.Info("SetWallet: skipped")
    48  	}
    49  }
    50  
    51  // SetZBoxWallet set wallet on zbox api
    52  //
    53  //	return
    54  //		{
    55  //			"error":"",
    56  //			"result":"true",
    57  //		}
    58  //
    59  //export SetZBoxWallet
    60  func SetZBoxWallet(clientID, clientPrivateKey, clientPublicKey *C.char) *C.char {
    61  	defer func() {
    62  		if r := recover(); r != nil {
    63  			log.Error("win: crash ", r)
    64  		}
    65  	}()
    66  	if zboxApiClient == nil {
    67  		return WithJSON(false, ErrZboxApiNotInitialized)
    68  	}
    69  	id := C.GoString(clientID)
    70  	prikey := C.GoString(clientPrivateKey)
    71  	pubkey := C.GoString(clientPublicKey)
    72  
    73  	if id != "" && prikey != "" && pubkey != "" {
    74  		zboxApiClient.SetWallet(id, prikey, pubkey)
    75  		return WithJSON(true, nil)
    76  	}
    77  
    78  	return WithJSON(false, ErrZboxApiInvalidWallet)
    79  }
    80  
    81  // GetCsrfToken get a fresh CSRF token
    82  //
    83  //	return
    84  //		{
    85  //			"error":"",
    86  //			"result":"xxx",
    87  //		}
    88  //
    89  //export GetCsrfToken
    90  func GetCsrfToken() *C.char {
    91  	defer func() {
    92  		if r := recover(); r != nil {
    93  			log.Error("win: crash ", r)
    94  		}
    95  	}()
    96  	if zboxApiClient == nil {
    97  		return WithJSON(0, ErrZboxApiNotInitialized)
    98  	}
    99  
   100  	return WithJSON(zboxApiClient.GetCsrfToken(context.TODO()))
   101  }
   102  
   103  // CreateJwtToken create a fresh jwt token
   104  //
   105  //	return
   106  //		{
   107  //			"error":"",
   108  //			"result":"xxx",
   109  //		}
   110  //
   111  //export CreateJwtToken
   112  func CreateJwtToken(userID, accessToken *C.char) *C.char {
   113  	defer func() {
   114  		if r := recover(); r != nil {
   115  			log.Error("win: crash ", r)
   116  		}
   117  	}()
   118  	if zboxApiClient == nil {
   119  		return WithJSON("", ErrZboxApiNotInitialized)
   120  	}
   121  	return WithJSON(zboxApiClient.CreateJwtToken(context.TODO(), C.GoString(userID), C.GoString(accessToken)))
   122  }
   123  
   124  // RefreshJwtToken refresh jwt token
   125  //
   126  //	return
   127  //		{
   128  //			"error":"",
   129  //			"result":"xxx",
   130  //		}
   131  //
   132  //export RefreshJwtToken
   133  func RefreshJwtToken(userID, token *C.char) *C.char {
   134  	defer func() {
   135  		if r := recover(); r != nil {
   136  			log.Error("win: crash ", r)
   137  		}
   138  	}()
   139  	if zboxApiClient == nil {
   140  		return WithJSON("", ErrZboxApiNotInitialized)
   141  	}
   142  	return WithJSON(zboxApiClient.RefreshJwtToken(context.TODO(), C.GoString(userID), C.GoString(token)))
   143  }
   144  
   145  // GetFreeMarker create a free storage marker
   146  // ## Inputs
   147  //   - phoneNumber
   148  //   - token
   149  //     return
   150  //     {
   151  //     "error":"",
   152  //     "result":"{}",
   153  //     }
   154  //
   155  //export GetFreeMarker
   156  func GetFreeMarker(phoneNumber, token *C.char) *C.char {
   157  	defer func() {
   158  		if r := recover(); r != nil {
   159  			log.Error("win: crash ", r)
   160  		}
   161  	}()
   162  	marker, err := zboxApiClient.GetFreeStorage(context.TODO(), C.GoString(phoneNumber), C.GoString(token))
   163  	if err != nil {
   164  		log.Error("win: ", err)
   165  		return WithJSON("", err)
   166  	}
   167  
   168  	return WithJSON(marker, nil)
   169  }
   170  
   171  // CreateSharedInfo create a shareInfo on 0box db
   172  // ## Inputs
   173  //   - phoneNumber
   174  //   - token
   175  //   - sharedInfo
   176  //
   177  // ## Output
   178  //
   179  //	{
   180  //	"error":"",
   181  //	"result":true,
   182  //	}
   183  //
   184  //export CreateSharedInfo
   185  func CreateSharedInfo(phoneNumber, token, sharedInfo *C.char) *C.char {
   186  	defer func() {
   187  		if r := recover(); r != nil {
   188  			log.Error("win: crash ", r)
   189  		}
   190  	}()
   191  	js := C.GoString(sharedInfo)
   192  
   193  	s := zboxapi.SharedInfo{}
   194  	err := json.Unmarshal([]byte(js), &s)
   195  	if err != nil {
   196  		log.Error("win: ", js, err)
   197  		return WithJSON(false, err)
   198  	}
   199  
   200  	err = zboxApiClient.CreateSharedInfo(context.TODO(), C.GoString(phoneNumber), C.GoString(token), s)
   201  	if err != nil {
   202  		log.Error("win: ", err)
   203  		return WithJSON(false, err)
   204  	}
   205  
   206  	return WithJSON(true, nil)
   207  }
   208  
   209  // DeleteSharedInfo create a shareInfo on 0box db
   210  // ## Inputs
   211  //   - phoneNumber
   212  //   - token
   213  //   - authTicket
   214  //   - lookupHash
   215  //
   216  // ## Output
   217  //
   218  //	{
   219  //	"error":"",
   220  //	"result":true,
   221  //	}
   222  //
   223  //export DeleteSharedInfo
   224  func DeleteSharedInfo(phoneNumber, token, authTicket, lookupHash *C.char) *C.char {
   225  	defer func() {
   226  		if r := recover(); r != nil {
   227  			log.Error("win: crash ", r)
   228  		}
   229  	}()
   230  	err := zboxApiClient.DeleteSharedInfo(context.TODO(), C.GoString(phoneNumber), C.GoString(token), C.GoString(authTicket), C.GoString(lookupHash))
   231  	if err != nil {
   232  		log.Error("win: ", err)
   233  		return WithJSON(false, err)
   234  	}
   235  
   236  	return WithJSON(true, nil)
   237  }
   238  
   239  // GetSharedByMe get file list that is shared by me privatly
   240  // ## Inputs
   241  //   - phoneNumber
   242  //   - token
   243  //
   244  // ## Output
   245  //
   246  //	{
   247  //	"error":"",
   248  //	"result":[{},{}],
   249  //	}
   250  //
   251  //export GetSharedByMe
   252  func GetSharedByMe(phoneNumber, token *C.char) *C.char {
   253  	defer func() {
   254  		if r := recover(); r != nil {
   255  			log.Error("win: crash ", r)
   256  		}
   257  	}()
   258  	list, err := zboxApiClient.GetSharedByMe(context.TODO(), C.GoString(phoneNumber), C.GoString(token))
   259  	if err != nil {
   260  		log.Error("win: ", err)
   261  		return WithJSON(nil, err)
   262  	}
   263  
   264  	return WithJSON(list, nil)
   265  }
   266  
   267  // GetSharedByPublic get file list that is clicked by me
   268  // ## Inputs
   269  //   - phoneNumber
   270  //   - token
   271  //
   272  // ## Output
   273  //
   274  //	{
   275  //	"error":"",
   276  //	"result":[{},{}],
   277  //	}
   278  //
   279  //export GetSharedByPublic
   280  func GetSharedByPublic(phoneNumber, token *C.char) *C.char {
   281  	defer func() {
   282  		if r := recover(); r != nil {
   283  			log.Error("win: crash ", r)
   284  		}
   285  	}()
   286  	list, err := zboxApiClient.GetSharedByPublic(context.TODO(), C.GoString(phoneNumber), C.GoString(token))
   287  	if err != nil {
   288  		log.Error("win: ", err)
   289  		return WithJSON(nil, err)
   290  	}
   291  
   292  	return WithJSON(list, nil)
   293  }
   294  
   295  // GetSharedToMe get file list that is shared to me
   296  // ## Inputs
   297  //   - phoneNumber
   298  //   - token
   299  //
   300  // ## Output
   301  //
   302  //	{
   303  //	"error":"",
   304  //	"result":[{},{}],
   305  //	}
   306  //
   307  //export GetSharedToMe
   308  func GetSharedToMe(phoneNumber, token *C.char) *C.char {
   309  	defer func() {
   310  		if r := recover(); r != nil {
   311  			log.Error("win: crash ", r)
   312  		}
   313  	}()
   314  	list, err := zboxApiClient.GetSharedToMe(context.TODO(), C.GoString(phoneNumber), C.GoString(token))
   315  	if err != nil {
   316  		log.Error("win: ", err)
   317  		return WithJSON(nil, err)
   318  	}
   319  
   320  	return WithJSON(list, nil)
   321  }