/* STACKIT IaaS API This API allows you to create and modify IaaS resources. API version: 2beta1 */ // Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. package iaasbeta import ( "encoding/json" "fmt" ) // CreateProtocol - The schema for a protocol when creating a security group rule. type CreateProtocol struct { Int64 *int64 String *string } // int64AsCreateProtocol is a convenience function that returns int64 wrapped in CreateProtocol func Int64AsCreateProtocol(v *int64) CreateProtocol { return CreateProtocol{ Int64: v, } } // stringAsCreateProtocol is a convenience function that returns string wrapped in CreateProtocol func StringAsCreateProtocol(v *string) CreateProtocol { return CreateProtocol{ String: v, } } // Unmarshal JSON data into one of the pointers in the struct func (dst *CreateProtocol) UnmarshalJSON(data []byte) error { var err error match := 0 // Workaround until upstream issue is fixed: // https://github.com/OpenAPITools/openapi-generator/issues/21751 // Tracking issue on our side: https://jira.schwarz/browse/STACKITSDK-226 // try to unmarshal data into Int64 dstCreateProtocol1 := &CreateProtocol{} err = json.Unmarshal(data, &dstCreateProtocol1.Int64) if err == nil { jsonInt64, _ := json.Marshal(&dstCreateProtocol1.Int64) if string(jsonInt64) != "{}" { // empty struct dst.Int64 = dstCreateProtocol1.Int64 match++ } } // try to unmarshal data into String dstCreateProtocol2 := &CreateProtocol{} err = json.Unmarshal(data, &dstCreateProtocol2.String) if err == nil { jsonString, _ := json.Marshal(&dstCreateProtocol2.String) if string(jsonString) != "{}" { // empty struct dst.String = dstCreateProtocol2.String match++ } } if match > 1 { // more than 1 match // reset to nil dst.Int64 = nil dst.String = nil return fmt.Errorf("data matches more than one schema in oneOf(CreateProtocol)") } else if match == 1 { return nil // exactly one match } else { // no match return fmt.Errorf("data failed to match schemas in oneOf(CreateProtocol)") } } // Marshal data from the first non-nil pointers in the struct to JSON func (src CreateProtocol) MarshalJSON() ([]byte, error) { if src.Int64 != nil { return json.Marshal(&src.Int64) } if src.String != nil { return json.Marshal(&src.String) } return []byte("{}"), nil // no data in oneOf schemas => empty JSON object } // Get the actual instance func (obj *CreateProtocol) GetActualInstance() interface{} { if obj == nil { return nil } if obj.Int64 != nil { return obj.Int64 } if obj.String != nil { return obj.String } // all schemas are nil return nil } type NullableCreateProtocol struct { value *CreateProtocol isSet bool } func (v NullableCreateProtocol) Get() *CreateProtocol { return v.value } func (v *NullableCreateProtocol) Set(val *CreateProtocol) { v.value = val v.isSet = true } func (v NullableCreateProtocol) IsSet() bool { return v.isSet } func (v *NullableCreateProtocol) Unset() { v.value = nil v.isSet = false } func NewNullableCreateProtocol(val *CreateProtocol) *NullableCreateProtocol { return &NullableCreateProtocol{value: val, isSet: true} } func (v NullableCreateProtocol) MarshalJSON() ([]byte, error) { return json.Marshal(v.value) } func (v *NullableCreateProtocol) UnmarshalJSON(src []byte) error { v.isSet = true return json.Unmarshal(src, &v.value) }