go-itg/generate-structs/main.go

61 lines
1.2 KiB
Go

package main
import (
"bytes"
"fmt"
"log"
"os"
"strconv"
"deadbeef.codes/steven/go-itg/itglue"
"github.com/ChimeraCoder/gojson"
)
var itg *itglue.ITGAPI
func init() {
apiKey := os.Getenv("itgapikey")
if apiKey == "" {
log.Fatalf("API key is not set")
}
itg = itglue.NewITGAPI(apiKey)
}
func main() {
fats, err := itg.GetFlexibleAssetTypes()
if err != nil {
log.Fatalf("could get get FATs: %s", err)
}
for _, fat := range fats.Data {
fmt.Printf("%s - %s\n", fat.FlexibleAssetTypeData.ID, fat.FlexibleAssetTypeData.Attributes.Name)
id, err := strconv.Atoi(fat.ID)
if err != nil {
log.Fatalf("could not convert %s to integer: %s", fat.ID, err)
}
fa, err := itg.GetFlexibleAssetsJSON(id)
if err != nil {
log.Fatalf("could get flexible asset with type ID %d: %s", id, err)
}
name := &fat.FlexibleAssetTypeData.Attributes.Name
pkg := "itglue"
subStruct := false // try changing to true?
tagList := make([]string, 0)
tagList = append(tagList, "json")
var convertFloats bool
var parser gojson.Parser
parser = gojson.ParseJson
convertFloats = true
input := bytes.NewReader(fa)
output, err := gojson.Generate(input, parser, *name, pkg, tagList, subStruct, convertFloats)
fmt.Print(string(output))
}
}