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  }