package exampleinterface /** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.15.4 * User agent: apibuilder app.apibuilder.io/apicollective/example-interface/0.15.4/go_1_5_client */ import ( "bytes" "encoding/json" "io" ) const UserAgent = "apibuilder app.apibuilder.io/apicollective/example-interface/0.15.4/go_1_5_client" const Version = "0.15.4" const VersionMajor = 0 type Guest struct { SessionId string `json:"session_id"` Email string `json:"email,omitempty"` Name string `json:"name,omitempty"` } func GuestFromMap(data interface{}) Guest { b, err := json.Marshal(data) if err == nil { return GuestFromJson(bytes.NewReader(b)) } else { panic(err) } } func GuestFromJson(bytes io.Reader) Guest { var guest Guest json.NewDecoder(bytes).Decode(&guest) return guest } type User struct { Id string `json:"id"` Email string `json:"email,omitempty"` Name string `json:"name,omitempty"` RegistrationDate string `json:"registration_date"` } func UserFromMap(data interface{}) User { b, err := json.Marshal(data) if err == nil { return UserFromJson(bytes.NewReader(b)) } else { panic(err) } } func UserFromJson(bytes io.Reader) User { var user User json.NewDecoder(bytes).Decode(&user) return user } type Person struct { Guest Guest User User Undefined string } func PersonFromMap(data interface{}) Person { b, err := json.Marshal(data) if err == nil { return PersonFromJson(bytes.NewReader(b)) } else { panic(err) } } func PersonFromJson(bytes io.Reader) Person { var el map[string]interface{} json.NewDecoder(bytes).Decode(&el) switch el["discriminator"] { case "guest": return Person{Guest: GuestFromMap(el)} case "user": return Person{User: UserFromMap(el)} default: return Person{Undefined: el["discriminator"].(string)} } }