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 }