Files
admin-cli/go/cmd/main.go
T

49 lines
1.1 KiB
Go

package main
import (
"C"
"fmt"
"github.com/Khan/genqlient/graphql"
)
import (
"context"
"net/http"
"unsafe"
"github.com/flowy-live/admin-cli/go/internal/graph"
"github.com/sirupsen/logrus"
)
//export QueryGraphQL
func QueryGraphQL(query *C.char) *C.char {
goQuery := C.GoString(query)
result := fmt.Sprintf("GraphQL Response for: %s", goQuery)
return C.CString(result)
}
//export GetWaitlist
func GetWaitlist() (**C.char, C.long) {
heliosAddr := "https://helios.dev.flowy.live"
heliosFullAddr := fmt.Sprintf("%s/%s", heliosAddr, "query")
gqlClient := graphql.NewClient(heliosFullAddr, http.DefaultClient)
response, err := graph.GetWaitlist(context.Background(), gqlClient)
if err != nil {
logrus.Error(err)
}
cArray := C.malloc(C.size_t(len(response.GetWaitlist)+1) * C.size_t(unsafe.Sizeof(uintptr(0))))
arrayPtr := (*[1 << 30]*C.char)(cArray)[: len(response.GetWaitlist)+1 : len(response.GetWaitlist)+1] // Unsafe slice
for i, s := range response.GetWaitlist {
arrayPtr[i] = C.CString(s.Email)
}
arrayPtr[len(response.GetWaitlist)] = nil // Null-terminate
return (**C.char)(cArray), 0
}
func main() {
}