From 1419fbe00583b6b68cfc1ef2462518286fe7be91 Mon Sep 17 00:00:00 2001 From: Arne Luenser Date: Thu, 1 Feb 2024 15:29:46 +0100 Subject: [PATCH] fix: patch oneOf -> anyOf for continueWith --- .schema/openapi/patches/schema.yaml | 2 +- .../openapi/templates/go/model_anyof.mustache | 2 +- internal/client-go/model_continue_with.go | 223 ++++++++++++------ internal/httpclient/model_continue_with.go | 223 ++++++++++++------ spec/api.json | 22 +- 5 files changed, 305 insertions(+), 167 deletions(-) diff --git a/.schema/openapi/patches/schema.yaml b/.schema/openapi/patches/schema.yaml index 206aceb2708e..9707ae1e34f2 100644 --- a/.schema/openapi/patches/schema.yaml +++ b/.schema/openapi/patches/schema.yaml @@ -45,7 +45,7 @@ show_recovery_ui: "#/components/schemas/continueWithRecoveryUi" - op: add - path: /components/schemas/continueWith/oneOf + path: /components/schemas/continueWith/anyOf value: - "$ref": "#/components/schemas/continueWithVerificationUi" - "$ref": "#/components/schemas/continueWithSetOrySessionToken" diff --git a/.schema/openapi/templates/go/model_anyof.mustache b/.schema/openapi/templates/go/model_anyof.mustache index 5dfa75302f13..a43f48a2f55b 100644 --- a/.schema/openapi/templates/go/model_anyof.mustache +++ b/.schema/openapi/templates/go/model_anyof.mustache @@ -20,7 +20,7 @@ func (dst *{{classname}}) UnmarshalJSON(data []byte) error { {{#-first}} // use discriminator value to speed up the lookup var jsonDict map[string]interface{} - err := json.Unmarshal(data, &jsonDict) + err = json.Unmarshal(data, &jsonDict) if err != nil { return fmt.Errorf("Failed to unmarshal JSON into map for the discrimintor lookup.") } diff --git a/internal/client-go/model_continue_with.go b/internal/client-go/model_continue_with.go index ee84e74692fb..a81558a8d53d 100644 --- a/internal/client-go/model_continue_with.go +++ b/internal/client-go/model_continue_with.go @@ -16,7 +16,7 @@ import ( "fmt" ) -// ContinueWith - struct for ContinueWith +// ContinueWith struct for ContinueWith type ContinueWith struct { ContinueWithRecoveryUi *ContinueWithRecoveryUi ContinueWithSetOrySessionToken *ContinueWithSetOrySessionToken @@ -24,107 +24,201 @@ type ContinueWith struct { ContinueWithVerificationUi *ContinueWithVerificationUi } -// ContinueWithRecoveryUiAsContinueWith is a convenience function that returns ContinueWithRecoveryUi wrapped in ContinueWith -func ContinueWithRecoveryUiAsContinueWith(v *ContinueWithRecoveryUi) ContinueWith { - return ContinueWith{ - ContinueWithRecoveryUi: v, +// Unmarshal JSON data into any of the pointers in the struct +func (dst *ContinueWith) UnmarshalJSON(data []byte) error { + var err error + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err = json.Unmarshal(data, &jsonDict) + if err != nil { + return fmt.Errorf("Failed to unmarshal JSON into map for the discrimintor lookup.") } -} -// ContinueWithSetOrySessionTokenAsContinueWith is a convenience function that returns ContinueWithSetOrySessionToken wrapped in ContinueWith -func ContinueWithSetOrySessionTokenAsContinueWith(v *ContinueWithSetOrySessionToken) ContinueWith { - return ContinueWith{ - ContinueWithSetOrySessionToken: v, + // check if the discriminator value is 'set_ory_session_token' + if jsonDict["action"] == "set_ory_session_token" { + // try to unmarshal JSON data into ContinueWithSetOrySessionToken + err = json.Unmarshal(data, &dst.ContinueWithSetOrySessionToken) + if err == nil { + jsonContinueWithSetOrySessionToken, _ := json.Marshal(dst.ContinueWithSetOrySessionToken) + if string(jsonContinueWithSetOrySessionToken) == "{}" { // empty struct + dst.ContinueWithSetOrySessionToken = nil + } else { + return nil // data stored in dst.ContinueWithSetOrySessionToken, return on the first match + } + } else { + dst.ContinueWithSetOrySessionToken = nil + } } -} -// ContinueWithSettingsUiAsContinueWith is a convenience function that returns ContinueWithSettingsUi wrapped in ContinueWith -func ContinueWithSettingsUiAsContinueWith(v *ContinueWithSettingsUi) ContinueWith { - return ContinueWith{ - ContinueWithSettingsUi: v, + // check if the discriminator value is 'show_recovery_ui' + if jsonDict["action"] == "show_recovery_ui" { + // try to unmarshal JSON data into ContinueWithRecoveryUi + err = json.Unmarshal(data, &dst.ContinueWithRecoveryUi) + if err == nil { + jsonContinueWithRecoveryUi, _ := json.Marshal(dst.ContinueWithRecoveryUi) + if string(jsonContinueWithRecoveryUi) == "{}" { // empty struct + dst.ContinueWithRecoveryUi = nil + } else { + return nil // data stored in dst.ContinueWithRecoveryUi, return on the first match + } + } else { + dst.ContinueWithRecoveryUi = nil + } } -} -// ContinueWithVerificationUiAsContinueWith is a convenience function that returns ContinueWithVerificationUi wrapped in ContinueWith -func ContinueWithVerificationUiAsContinueWith(v *ContinueWithVerificationUi) ContinueWith { - return ContinueWith{ - ContinueWithVerificationUi: v, + // check if the discriminator value is 'show_settings_ui' + if jsonDict["action"] == "show_settings_ui" { + // try to unmarshal JSON data into ContinueWithSettingsUi + err = json.Unmarshal(data, &dst.ContinueWithSettingsUi) + if err == nil { + jsonContinueWithSettingsUi, _ := json.Marshal(dst.ContinueWithSettingsUi) + if string(jsonContinueWithSettingsUi) == "{}" { // empty struct + dst.ContinueWithSettingsUi = nil + } else { + return nil // data stored in dst.ContinueWithSettingsUi, return on the first match + } + } else { + dst.ContinueWithSettingsUi = nil + } } -} -// Unmarshal JSON data into one of the pointers in the struct -func (dst *ContinueWith) UnmarshalJSON(data []byte) error { - var err error - match := 0 - // try to unmarshal data into ContinueWithRecoveryUi - err = newStrictDecoder(data).Decode(&dst.ContinueWithRecoveryUi) + // check if the discriminator value is 'show_verification_ui' + if jsonDict["action"] == "show_verification_ui" { + // try to unmarshal JSON data into ContinueWithVerificationUi + err = json.Unmarshal(data, &dst.ContinueWithVerificationUi) + if err == nil { + jsonContinueWithVerificationUi, _ := json.Marshal(dst.ContinueWithVerificationUi) + if string(jsonContinueWithVerificationUi) == "{}" { // empty struct + dst.ContinueWithVerificationUi = nil + } else { + return nil // data stored in dst.ContinueWithVerificationUi, return on the first match + } + } else { + dst.ContinueWithVerificationUi = nil + } + } + + // check if the discriminator value is 'continueWithRecoveryUi' + if jsonDict["action"] == "continueWithRecoveryUi" { + // try to unmarshal JSON data into ContinueWithRecoveryUi + err = json.Unmarshal(data, &dst.ContinueWithRecoveryUi) + if err == nil { + jsonContinueWithRecoveryUi, _ := json.Marshal(dst.ContinueWithRecoveryUi) + if string(jsonContinueWithRecoveryUi) == "{}" { // empty struct + dst.ContinueWithRecoveryUi = nil + } else { + return nil // data stored in dst.ContinueWithRecoveryUi, return on the first match + } + } else { + dst.ContinueWithRecoveryUi = nil + } + } + + // check if the discriminator value is 'continueWithSetOrySessionToken' + if jsonDict["action"] == "continueWithSetOrySessionToken" { + // try to unmarshal JSON data into ContinueWithSetOrySessionToken + err = json.Unmarshal(data, &dst.ContinueWithSetOrySessionToken) + if err == nil { + jsonContinueWithSetOrySessionToken, _ := json.Marshal(dst.ContinueWithSetOrySessionToken) + if string(jsonContinueWithSetOrySessionToken) == "{}" { // empty struct + dst.ContinueWithSetOrySessionToken = nil + } else { + return nil // data stored in dst.ContinueWithSetOrySessionToken, return on the first match + } + } else { + dst.ContinueWithSetOrySessionToken = nil + } + } + + // check if the discriminator value is 'continueWithSettingsUi' + if jsonDict["action"] == "continueWithSettingsUi" { + // try to unmarshal JSON data into ContinueWithSettingsUi + err = json.Unmarshal(data, &dst.ContinueWithSettingsUi) + if err == nil { + jsonContinueWithSettingsUi, _ := json.Marshal(dst.ContinueWithSettingsUi) + if string(jsonContinueWithSettingsUi) == "{}" { // empty struct + dst.ContinueWithSettingsUi = nil + } else { + return nil // data stored in dst.ContinueWithSettingsUi, return on the first match + } + } else { + dst.ContinueWithSettingsUi = nil + } + } + + // check if the discriminator value is 'continueWithVerificationUi' + if jsonDict["action"] == "continueWithVerificationUi" { + // try to unmarshal JSON data into ContinueWithVerificationUi + err = json.Unmarshal(data, &dst.ContinueWithVerificationUi) + if err == nil { + jsonContinueWithVerificationUi, _ := json.Marshal(dst.ContinueWithVerificationUi) + if string(jsonContinueWithVerificationUi) == "{}" { // empty struct + dst.ContinueWithVerificationUi = nil + } else { + return nil // data stored in dst.ContinueWithVerificationUi, return on the first match + } + } else { + dst.ContinueWithVerificationUi = nil + } + } + + // try to unmarshal JSON data into ContinueWithRecoveryUi + err = json.Unmarshal(data, &dst.ContinueWithRecoveryUi) if err == nil { jsonContinueWithRecoveryUi, _ := json.Marshal(dst.ContinueWithRecoveryUi) if string(jsonContinueWithRecoveryUi) == "{}" { // empty struct dst.ContinueWithRecoveryUi = nil } else { - match++ + return nil // data stored in dst.ContinueWithRecoveryUi, return on the first match } } else { dst.ContinueWithRecoveryUi = nil } - // try to unmarshal data into ContinueWithSetOrySessionToken - err = newStrictDecoder(data).Decode(&dst.ContinueWithSetOrySessionToken) + // try to unmarshal JSON data into ContinueWithSetOrySessionToken + err = json.Unmarshal(data, &dst.ContinueWithSetOrySessionToken) if err == nil { jsonContinueWithSetOrySessionToken, _ := json.Marshal(dst.ContinueWithSetOrySessionToken) if string(jsonContinueWithSetOrySessionToken) == "{}" { // empty struct dst.ContinueWithSetOrySessionToken = nil } else { - match++ + return nil // data stored in dst.ContinueWithSetOrySessionToken, return on the first match } } else { dst.ContinueWithSetOrySessionToken = nil } - // try to unmarshal data into ContinueWithSettingsUi - err = newStrictDecoder(data).Decode(&dst.ContinueWithSettingsUi) + // try to unmarshal JSON data into ContinueWithSettingsUi + err = json.Unmarshal(data, &dst.ContinueWithSettingsUi) if err == nil { jsonContinueWithSettingsUi, _ := json.Marshal(dst.ContinueWithSettingsUi) if string(jsonContinueWithSettingsUi) == "{}" { // empty struct dst.ContinueWithSettingsUi = nil } else { - match++ + return nil // data stored in dst.ContinueWithSettingsUi, return on the first match } } else { dst.ContinueWithSettingsUi = nil } - // try to unmarshal data into ContinueWithVerificationUi - err = newStrictDecoder(data).Decode(&dst.ContinueWithVerificationUi) + // try to unmarshal JSON data into ContinueWithVerificationUi + err = json.Unmarshal(data, &dst.ContinueWithVerificationUi) if err == nil { jsonContinueWithVerificationUi, _ := json.Marshal(dst.ContinueWithVerificationUi) if string(jsonContinueWithVerificationUi) == "{}" { // empty struct dst.ContinueWithVerificationUi = nil } else { - match++ + return nil // data stored in dst.ContinueWithVerificationUi, return on the first match } } else { dst.ContinueWithVerificationUi = nil } - if match > 1 { // more than 1 match - // reset to nil - dst.ContinueWithRecoveryUi = nil - dst.ContinueWithSetOrySessionToken = nil - dst.ContinueWithSettingsUi = nil - dst.ContinueWithVerificationUi = nil - - return fmt.Errorf("Data matches more than one schema in oneOf(ContinueWith)") - } else if match == 1 { - return nil // exactly one match - } else { // no match - return fmt.Errorf("Data failed to match schemas in oneOf(ContinueWith)") - } + return fmt.Errorf("Data failed to match schemas in anyOf(ContinueWith)") } // Marshal data from the first non-nil pointers in the struct to JSON -func (src ContinueWith) MarshalJSON() ([]byte, error) { +func (src *ContinueWith) MarshalJSON() ([]byte, error) { if src.ContinueWithRecoveryUi != nil { return json.Marshal(&src.ContinueWithRecoveryUi) } @@ -141,32 +235,7 @@ func (src ContinueWith) MarshalJSON() ([]byte, error) { return json.Marshal(&src.ContinueWithVerificationUi) } - return nil, nil // no data in oneOf schemas -} - -// Get the actual instance -func (obj *ContinueWith) GetActualInstance() interface{} { - if obj == nil { - return nil - } - if obj.ContinueWithRecoveryUi != nil { - return obj.ContinueWithRecoveryUi - } - - if obj.ContinueWithSetOrySessionToken != nil { - return obj.ContinueWithSetOrySessionToken - } - - if obj.ContinueWithSettingsUi != nil { - return obj.ContinueWithSettingsUi - } - - if obj.ContinueWithVerificationUi != nil { - return obj.ContinueWithVerificationUi - } - - // all schemas are nil - return nil + return nil, nil // no data in anyOf schemas } type NullableContinueWith struct { diff --git a/internal/httpclient/model_continue_with.go b/internal/httpclient/model_continue_with.go index ee84e74692fb..a81558a8d53d 100644 --- a/internal/httpclient/model_continue_with.go +++ b/internal/httpclient/model_continue_with.go @@ -16,7 +16,7 @@ import ( "fmt" ) -// ContinueWith - struct for ContinueWith +// ContinueWith struct for ContinueWith type ContinueWith struct { ContinueWithRecoveryUi *ContinueWithRecoveryUi ContinueWithSetOrySessionToken *ContinueWithSetOrySessionToken @@ -24,107 +24,201 @@ type ContinueWith struct { ContinueWithVerificationUi *ContinueWithVerificationUi } -// ContinueWithRecoveryUiAsContinueWith is a convenience function that returns ContinueWithRecoveryUi wrapped in ContinueWith -func ContinueWithRecoveryUiAsContinueWith(v *ContinueWithRecoveryUi) ContinueWith { - return ContinueWith{ - ContinueWithRecoveryUi: v, +// Unmarshal JSON data into any of the pointers in the struct +func (dst *ContinueWith) UnmarshalJSON(data []byte) error { + var err error + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err = json.Unmarshal(data, &jsonDict) + if err != nil { + return fmt.Errorf("Failed to unmarshal JSON into map for the discrimintor lookup.") } -} -// ContinueWithSetOrySessionTokenAsContinueWith is a convenience function that returns ContinueWithSetOrySessionToken wrapped in ContinueWith -func ContinueWithSetOrySessionTokenAsContinueWith(v *ContinueWithSetOrySessionToken) ContinueWith { - return ContinueWith{ - ContinueWithSetOrySessionToken: v, + // check if the discriminator value is 'set_ory_session_token' + if jsonDict["action"] == "set_ory_session_token" { + // try to unmarshal JSON data into ContinueWithSetOrySessionToken + err = json.Unmarshal(data, &dst.ContinueWithSetOrySessionToken) + if err == nil { + jsonContinueWithSetOrySessionToken, _ := json.Marshal(dst.ContinueWithSetOrySessionToken) + if string(jsonContinueWithSetOrySessionToken) == "{}" { // empty struct + dst.ContinueWithSetOrySessionToken = nil + } else { + return nil // data stored in dst.ContinueWithSetOrySessionToken, return on the first match + } + } else { + dst.ContinueWithSetOrySessionToken = nil + } } -} -// ContinueWithSettingsUiAsContinueWith is a convenience function that returns ContinueWithSettingsUi wrapped in ContinueWith -func ContinueWithSettingsUiAsContinueWith(v *ContinueWithSettingsUi) ContinueWith { - return ContinueWith{ - ContinueWithSettingsUi: v, + // check if the discriminator value is 'show_recovery_ui' + if jsonDict["action"] == "show_recovery_ui" { + // try to unmarshal JSON data into ContinueWithRecoveryUi + err = json.Unmarshal(data, &dst.ContinueWithRecoveryUi) + if err == nil { + jsonContinueWithRecoveryUi, _ := json.Marshal(dst.ContinueWithRecoveryUi) + if string(jsonContinueWithRecoveryUi) == "{}" { // empty struct + dst.ContinueWithRecoveryUi = nil + } else { + return nil // data stored in dst.ContinueWithRecoveryUi, return on the first match + } + } else { + dst.ContinueWithRecoveryUi = nil + } } -} -// ContinueWithVerificationUiAsContinueWith is a convenience function that returns ContinueWithVerificationUi wrapped in ContinueWith -func ContinueWithVerificationUiAsContinueWith(v *ContinueWithVerificationUi) ContinueWith { - return ContinueWith{ - ContinueWithVerificationUi: v, + // check if the discriminator value is 'show_settings_ui' + if jsonDict["action"] == "show_settings_ui" { + // try to unmarshal JSON data into ContinueWithSettingsUi + err = json.Unmarshal(data, &dst.ContinueWithSettingsUi) + if err == nil { + jsonContinueWithSettingsUi, _ := json.Marshal(dst.ContinueWithSettingsUi) + if string(jsonContinueWithSettingsUi) == "{}" { // empty struct + dst.ContinueWithSettingsUi = nil + } else { + return nil // data stored in dst.ContinueWithSettingsUi, return on the first match + } + } else { + dst.ContinueWithSettingsUi = nil + } } -} -// Unmarshal JSON data into one of the pointers in the struct -func (dst *ContinueWith) UnmarshalJSON(data []byte) error { - var err error - match := 0 - // try to unmarshal data into ContinueWithRecoveryUi - err = newStrictDecoder(data).Decode(&dst.ContinueWithRecoveryUi) + // check if the discriminator value is 'show_verification_ui' + if jsonDict["action"] == "show_verification_ui" { + // try to unmarshal JSON data into ContinueWithVerificationUi + err = json.Unmarshal(data, &dst.ContinueWithVerificationUi) + if err == nil { + jsonContinueWithVerificationUi, _ := json.Marshal(dst.ContinueWithVerificationUi) + if string(jsonContinueWithVerificationUi) == "{}" { // empty struct + dst.ContinueWithVerificationUi = nil + } else { + return nil // data stored in dst.ContinueWithVerificationUi, return on the first match + } + } else { + dst.ContinueWithVerificationUi = nil + } + } + + // check if the discriminator value is 'continueWithRecoveryUi' + if jsonDict["action"] == "continueWithRecoveryUi" { + // try to unmarshal JSON data into ContinueWithRecoveryUi + err = json.Unmarshal(data, &dst.ContinueWithRecoveryUi) + if err == nil { + jsonContinueWithRecoveryUi, _ := json.Marshal(dst.ContinueWithRecoveryUi) + if string(jsonContinueWithRecoveryUi) == "{}" { // empty struct + dst.ContinueWithRecoveryUi = nil + } else { + return nil // data stored in dst.ContinueWithRecoveryUi, return on the first match + } + } else { + dst.ContinueWithRecoveryUi = nil + } + } + + // check if the discriminator value is 'continueWithSetOrySessionToken' + if jsonDict["action"] == "continueWithSetOrySessionToken" { + // try to unmarshal JSON data into ContinueWithSetOrySessionToken + err = json.Unmarshal(data, &dst.ContinueWithSetOrySessionToken) + if err == nil { + jsonContinueWithSetOrySessionToken, _ := json.Marshal(dst.ContinueWithSetOrySessionToken) + if string(jsonContinueWithSetOrySessionToken) == "{}" { // empty struct + dst.ContinueWithSetOrySessionToken = nil + } else { + return nil // data stored in dst.ContinueWithSetOrySessionToken, return on the first match + } + } else { + dst.ContinueWithSetOrySessionToken = nil + } + } + + // check if the discriminator value is 'continueWithSettingsUi' + if jsonDict["action"] == "continueWithSettingsUi" { + // try to unmarshal JSON data into ContinueWithSettingsUi + err = json.Unmarshal(data, &dst.ContinueWithSettingsUi) + if err == nil { + jsonContinueWithSettingsUi, _ := json.Marshal(dst.ContinueWithSettingsUi) + if string(jsonContinueWithSettingsUi) == "{}" { // empty struct + dst.ContinueWithSettingsUi = nil + } else { + return nil // data stored in dst.ContinueWithSettingsUi, return on the first match + } + } else { + dst.ContinueWithSettingsUi = nil + } + } + + // check if the discriminator value is 'continueWithVerificationUi' + if jsonDict["action"] == "continueWithVerificationUi" { + // try to unmarshal JSON data into ContinueWithVerificationUi + err = json.Unmarshal(data, &dst.ContinueWithVerificationUi) + if err == nil { + jsonContinueWithVerificationUi, _ := json.Marshal(dst.ContinueWithVerificationUi) + if string(jsonContinueWithVerificationUi) == "{}" { // empty struct + dst.ContinueWithVerificationUi = nil + } else { + return nil // data stored in dst.ContinueWithVerificationUi, return on the first match + } + } else { + dst.ContinueWithVerificationUi = nil + } + } + + // try to unmarshal JSON data into ContinueWithRecoveryUi + err = json.Unmarshal(data, &dst.ContinueWithRecoveryUi) if err == nil { jsonContinueWithRecoveryUi, _ := json.Marshal(dst.ContinueWithRecoveryUi) if string(jsonContinueWithRecoveryUi) == "{}" { // empty struct dst.ContinueWithRecoveryUi = nil } else { - match++ + return nil // data stored in dst.ContinueWithRecoveryUi, return on the first match } } else { dst.ContinueWithRecoveryUi = nil } - // try to unmarshal data into ContinueWithSetOrySessionToken - err = newStrictDecoder(data).Decode(&dst.ContinueWithSetOrySessionToken) + // try to unmarshal JSON data into ContinueWithSetOrySessionToken + err = json.Unmarshal(data, &dst.ContinueWithSetOrySessionToken) if err == nil { jsonContinueWithSetOrySessionToken, _ := json.Marshal(dst.ContinueWithSetOrySessionToken) if string(jsonContinueWithSetOrySessionToken) == "{}" { // empty struct dst.ContinueWithSetOrySessionToken = nil } else { - match++ + return nil // data stored in dst.ContinueWithSetOrySessionToken, return on the first match } } else { dst.ContinueWithSetOrySessionToken = nil } - // try to unmarshal data into ContinueWithSettingsUi - err = newStrictDecoder(data).Decode(&dst.ContinueWithSettingsUi) + // try to unmarshal JSON data into ContinueWithSettingsUi + err = json.Unmarshal(data, &dst.ContinueWithSettingsUi) if err == nil { jsonContinueWithSettingsUi, _ := json.Marshal(dst.ContinueWithSettingsUi) if string(jsonContinueWithSettingsUi) == "{}" { // empty struct dst.ContinueWithSettingsUi = nil } else { - match++ + return nil // data stored in dst.ContinueWithSettingsUi, return on the first match } } else { dst.ContinueWithSettingsUi = nil } - // try to unmarshal data into ContinueWithVerificationUi - err = newStrictDecoder(data).Decode(&dst.ContinueWithVerificationUi) + // try to unmarshal JSON data into ContinueWithVerificationUi + err = json.Unmarshal(data, &dst.ContinueWithVerificationUi) if err == nil { jsonContinueWithVerificationUi, _ := json.Marshal(dst.ContinueWithVerificationUi) if string(jsonContinueWithVerificationUi) == "{}" { // empty struct dst.ContinueWithVerificationUi = nil } else { - match++ + return nil // data stored in dst.ContinueWithVerificationUi, return on the first match } } else { dst.ContinueWithVerificationUi = nil } - if match > 1 { // more than 1 match - // reset to nil - dst.ContinueWithRecoveryUi = nil - dst.ContinueWithSetOrySessionToken = nil - dst.ContinueWithSettingsUi = nil - dst.ContinueWithVerificationUi = nil - - return fmt.Errorf("Data matches more than one schema in oneOf(ContinueWith)") - } else if match == 1 { - return nil // exactly one match - } else { // no match - return fmt.Errorf("Data failed to match schemas in oneOf(ContinueWith)") - } + return fmt.Errorf("Data failed to match schemas in anyOf(ContinueWith)") } // Marshal data from the first non-nil pointers in the struct to JSON -func (src ContinueWith) MarshalJSON() ([]byte, error) { +func (src *ContinueWith) MarshalJSON() ([]byte, error) { if src.ContinueWithRecoveryUi != nil { return json.Marshal(&src.ContinueWithRecoveryUi) } @@ -141,32 +235,7 @@ func (src ContinueWith) MarshalJSON() ([]byte, error) { return json.Marshal(&src.ContinueWithVerificationUi) } - return nil, nil // no data in oneOf schemas -} - -// Get the actual instance -func (obj *ContinueWith) GetActualInstance() interface{} { - if obj == nil { - return nil - } - if obj.ContinueWithRecoveryUi != nil { - return obj.ContinueWithRecoveryUi - } - - if obj.ContinueWithSetOrySessionToken != nil { - return obj.ContinueWithSetOrySessionToken - } - - if obj.ContinueWithSettingsUi != nil { - return obj.ContinueWithSettingsUi - } - - if obj.ContinueWithVerificationUi != nil { - return obj.ContinueWithVerificationUi - } - - // all schemas are nil - return nil + return nil, nil // no data in anyOf schemas } type NullableContinueWith struct { diff --git a/spec/api.json b/spec/api.json index 212287de0895..875139b47ada 100644 --- a/spec/api.json +++ b/spec/api.json @@ -471,16 +471,7 @@ "type": "object" }, "continueWith": { - "discriminator": { - "mapping": { - "set_ory_session_token": "#/components/schemas/continueWithSetOrySessionToken", - "show_recovery_ui": "#/components/schemas/continueWithRecoveryUi", - "show_settings_ui": "#/components/schemas/continueWithSettingsUi", - "show_verification_ui": "#/components/schemas/continueWithVerificationUi" - }, - "propertyName": "action" - }, - "oneOf": [ + "anyOf": [ { "$ref": "#/components/schemas/continueWithVerificationUi" }, @@ -493,7 +484,16 @@ { "$ref": "#/components/schemas/continueWithRecoveryUi" } - ] + ], + "discriminator": { + "mapping": { + "set_ory_session_token": "#/components/schemas/continueWithSetOrySessionToken", + "show_recovery_ui": "#/components/schemas/continueWithRecoveryUi", + "show_settings_ui": "#/components/schemas/continueWithSettingsUi", + "show_verification_ui": "#/components/schemas/continueWithVerificationUi" + }, + "propertyName": "action" + } }, "continueWithRecoveryUi": { "description": "Indicates, that the UI flow could be continued by showing a recovery ui",