Module: Auth0::Internal::Types::Union
- Includes:
- Type
- Included in:
- EventStreams::Types::EventStreamsCreateRequest, Boolean, Jobs::Errors::Types::ErrorsGetResponse, Types::AculClientFilter, Types::AculContextConfigurationItem, Types::AculDomainFilter, Types::AculOrganizationFilter, Types::BrandingPageBackground, Types::ClientAddonSharePointExternalURL, Types::ConnectionDecryptionKeySAML, Types::ConnectionFieldsMapSAMLValue, Types::ConnectionScopeOAuth2, Types::ConnectionUpstreamAdditionalProperties, Types::CreateEventStreamResponseContent, Types::CreateFlowsVaultConnectionActivecampaign, Types::CreateFlowsVaultConnectionAirtable, Types::CreateFlowsVaultConnectionAuth0, Types::CreateFlowsVaultConnectionBigquery, Types::CreateFlowsVaultConnectionClearbit, Types::CreateFlowsVaultConnectionDocusign, Types::CreateFlowsVaultConnectionGoogleSheets, Types::CreateFlowsVaultConnectionHTTP, Types::CreateFlowsVaultConnectionHubspot, Types::CreateFlowsVaultConnectionJwt, Types::CreateFlowsVaultConnectionMailchimp, Types::CreateFlowsVaultConnectionMailjet, Types::CreateFlowsVaultConnectionPipedrive, Types::CreateFlowsVaultConnectionRequestContent, Types::CreateFlowsVaultConnectionSalesforce, Types::CreateFlowsVaultConnectionSendgrid, Types::CreateFlowsVaultConnectionSlack, Types::CreateFlowsVaultConnectionStripe, Types::CreateFlowsVaultConnectionTelegram, Types::CreateFlowsVaultConnectionTwilio, Types::CreateFlowsVaultConnectionWhatsapp, Types::CreateFlowsVaultConnectionZapier, Types::CreateLogStreamRequestContent, Types::CreateLogStreamResponseContent, Types::EmailProviderCredentialsSchema, Types::EventStreamDestinationPatch, Types::EventStreamResponseContent, Types::EventStreamWebhookAuthorizationResponse, Types::FlowAction, Types::FlowActionActivecampaign, Types::FlowActionAirtable, Types::FlowActionAuth0, Types::FlowActionAuth0SendRequestParamsPayload, Types::FlowActionAuth0SendRequestParamsQueryParamsValue, Types::FlowActionClearbit, Types::FlowActionFlow, Types::FlowActionFlowDelayFlowParamsNumber, Types::FlowActionFlowMapValueParamsFallback, Types::FlowActionFlowMapValueParamsInput, Types::FlowActionFlowReturnJSONParamsPayload, Types::FlowActionGoogleSheetsAddRowParamsSheetID, Types::FlowActionHTTPSendRequestParamsPayload, Types::FlowActionHTTPSendRequestParamsQueryParamsValue, Types::FlowActionHubspot, Types::FlowActionHubspotEnrollContactParamsWorkflowID, Types::FlowActionJSON, Types::FlowActionJSONSerializeJSONParamsObject, Types::FlowActionJwt, Types::FlowActionMailjetSendEmailParams, Types::FlowActionOtp, Types::FlowActionOtpVerifyCodeParamsCode, Types::FlowActionPipedrive, Types::FlowActionPipedriveAddDealParamsOrganizationID, Types::FlowActionPipedriveAddDealParamsPersonID, Types::FlowActionPipedriveAddDealParamsStageID, Types::FlowActionPipedriveAddDealParamsUserID, Types::FlowActionPipedriveAddOrganizationParamsOwnerID, Types::FlowActionPipedriveAddPersonParamsOrganizationID, Types::FlowActionPipedriveAddPersonParamsOwnerID, Types::FlowActionSalesforce, Types::FlowActionStripe, Types::FlowActionTwilio, Types::FlowActionWhatsappSendMessageParamsPayload, Types::FlowActionXML, Types::FlowActionXMLSerializeXMLParamsObject, Types::FormBlock, Types::FormComponent, Types::FormField, Types::FormFieldPaymentConfigCharge, Types::FormFieldPaymentConfigChargeOneOffOneOffAmount, Types::FormNode, Types::FormNodePointer, Types::FormWidget, Types::GetDefaultDomainResponseContent, Types::GetEventStreamResponseContent, Types::GetLogStreamResponseContent, Types::GetUniversalLoginTemplateResponseContent, Types::LogDate, Types::LogStreamResponseSchema, Types::LogStreamSinkPatch, Types::PhoneProviderConfiguration, Types::PhoneProviderCredentials, Types::RefreshTokenDate, Types::SessionDate, Types::SigningKeysDate, Types::UpdateBrandingPageBackground, Types::UpdateDefaultDomainResponseContent, Types::UpdateEventStreamResponseContent, Types::UpdateFlowsVaultConnectionSetup, Types::UpdateLogStreamResponseContent, Types::UpdateUniversalLoginTemplateRequestContent, Types::UserDateSchema, Types::UserID
- Defined in:
- lib/auth0/internal/types/union.rb
Overview
Define a union between two types
Instance Method Summary collapse
- #coerce(value, strict: strict?) ) ⇒ Object
-
#discriminant(key) ⇒ void
Set the discriminant for this union.
-
#load(str) ⇒ Object
Parse JSON string and coerce to the correct union member type.
-
#member(type, key: nil) ⇒ void
Add a member to this union.
- #members ⇒ Object
- #type_member?(type) ⇒ Boolean
Methods included from Type
Methods included from JSON::Serializable
Instance Method Details
#coerce(value, strict: strict?) ) ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/auth0/internal/types/union.rb', line 122 def coerce(value, strict: strict?) type = resolve_member(value) unless type return value unless strict if discriminated? raise Errors::TypeError, "value of type `#{value.class}` not member of union #{self}" end raise Errors::TypeError, "could not resolve to member of union #{self}" end coerced = Utils.coerce(type, value, strict: strict) # For discriminated unions, store the discriminant info on the coerced instance # so it can be injected back during serialization (to_h) if discriminated? && value.is_a?(::Hash) && coerced.is_a?(Model) discriminant_value = value.fetch(@discriminant, nil) || value.fetch(@discriminant.to_s, nil) if discriminant_value coerced.instance_variable_set(:@_fern_union_discriminant_key, @discriminant.to_s) coerced.instance_variable_set(:@_fern_union_discriminant_value, discriminant_value) end end coerced end |
#discriminant(key) ⇒ void
This method returns an undefined value.
Set the discriminant for this union
32 33 34 |
# File 'lib/auth0/internal/types/union.rb', line 32 def discriminant(key) @discriminant = key end |
#load(str) ⇒ Object
Parse JSON string and coerce to the correct union member type
155 156 157 |
# File 'lib/auth0/internal/types/union.rb', line 155 def load(str) coerce(::JSON.parse(str, symbolize_names: true)) end |
#member(type, key: nil) ⇒ void
This method returns an undefined value.
Add a member to this union
19 20 21 22 |
# File 'lib/auth0/internal/types/union.rb', line 19 def member(type, key: nil) members.push([key, Utils.wrap_type(type)]) self end |
#members ⇒ Object
10 11 12 |
# File 'lib/auth0/internal/types/union.rb', line 10 def members @members ||= [] end |
#type_member?(type) ⇒ Boolean
24 25 26 |
# File 'lib/auth0/internal/types/union.rb', line 24 def type_member?(type) members.any? { |_key, type_fn| type == type_fn.call } end |