github.com/0chain/gosdk@v1.17.11/winsdk/allocation.go (about) 1 package main 2 3 /* 4 #include <stdlib.h> 5 */ 6 import ( 7 "C" 8 ) 9 import ( 10 "encoding/json" 11 12 "github.com/0chain/gosdk/zboxapi" 13 "github.com/0chain/gosdk/zboxcore/sdk" 14 "github.com/0chain/gosdk/zcncore" 15 ) 16 17 // GetAllocation get allocation info 18 // ## Inputs 19 // - allocationID 20 // 21 // ## Output 22 // 23 // { 24 // "error":"", 25 // "result":"{}", 26 // } 27 // 28 //export GetAllocation 29 func GetAllocation(allocationID *C.char) *C.char { 30 defer func() { 31 if r := recover(); r != nil { 32 log.Error("win: crash ", r) 33 } 34 }() 35 allocID := C.GoString(allocationID) 36 return WithJSON(getAllocation(allocID)) 37 } 38 39 // ListAllocations get allocation list 40 // ## Output 41 // 42 // { 43 // "error":"", 44 // "result":"[{},{}]", 45 // } 46 // 47 //export ListAllocations 48 func ListAllocations() *C.char { 49 defer func() { 50 if r := recover(); r != nil { 51 log.Error("win: crash ", r) 52 } 53 }() 54 items, err := sdk.GetAllocations() 55 if err != nil { 56 log.Error("win: ", err) 57 return WithJSON("", err) 58 } 59 60 return WithJSON(items, nil) 61 } 62 63 // CreateFreeAllocation create a free allocation 64 // ## Inputs 65 // - freeMarker 66 // return 67 // { 68 // "error":"", 69 // "result":"id", 70 // } 71 // 72 //export CreateFreeAllocation 73 func CreateFreeAllocation(freemarker *C.char) *C.char { 74 defer func() { 75 if r := recover(); r != nil { 76 log.Error("win: crash ", r) 77 } 78 }() 79 marker := &zboxapi.FreeMarker{} 80 js := C.GoString(freemarker) 81 err := json.Unmarshal([]byte(js), marker) 82 if err != nil { 83 log.Error("win: ", err) 84 return WithJSON("", err) 85 } 86 87 lock := zcncore.ConvertToValue(marker.FreeTokens) 88 89 allocationID, _, err := sdk.CreateFreeAllocation(js, lock) 90 91 if err != nil { 92 log.Error("win: ", err, "lock: ", lock, " marker:", js) 93 return WithJSON("", err) 94 } 95 96 return WithJSON(allocationID, nil) 97 }