49 lines
1.1 KiB
Go
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() {
|
|
}
|