class Aws::Connect::Plugins::Endpoints::Handler

@api private

def apply_endpoint_headers(context, headers)

def apply_endpoint_headers(context, headers)
  headers.each do |key, values|
    value = values
      .compact
      .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) }
      .join(',')
    context.http_request.headers[key] = value
  end
end

def call(context)

def call(context)
  # If endpoint was discovered, do not resolve or apply the endpoint.
  unless context[:discovered_endpoint]
    params = parameters_for_operation(context)
    endpoint = context.config.endpoint_provider.resolve_endpoint(params)
    context.http_request.endpoint = endpoint.url
    apply_endpoint_headers(context, endpoint.headers)
  end
  context[:endpoint_params] = params
  context[:auth_scheme] =
    Aws::Endpoints.resolve_auth_scheme(context, endpoint)
  @handler.call(context)
end

def parameters_for_operation(context)

def parameters_for_operation(context)
  case context.operation_name
  when :associate_approved_origin
    Aws::Connect::Endpoints::AssociateApprovedOrigin.build(context)
  when :associate_bot
    Aws::Connect::Endpoints::AssociateBot.build(context)
  when :associate_default_vocabulary
    Aws::Connect::Endpoints::AssociateDefaultVocabulary.build(context)
  when :associate_instance_storage_config
    Aws::Connect::Endpoints::AssociateInstanceStorageConfig.build(context)
  when :associate_lambda_function
    Aws::Connect::Endpoints::AssociateLambdaFunction.build(context)
  when :associate_lex_bot
    Aws::Connect::Endpoints::AssociateLexBot.build(context)
  when :associate_phone_number_contact_flow
    Aws::Connect::Endpoints::AssociatePhoneNumberContactFlow.build(context)
  when :associate_queue_quick_connects
    Aws::Connect::Endpoints::AssociateQueueQuickConnects.build(context)
  when :associate_routing_profile_queues
    Aws::Connect::Endpoints::AssociateRoutingProfileQueues.build(context)
  when :associate_security_key
    Aws::Connect::Endpoints::AssociateSecurityKey.build(context)
  when :claim_phone_number
    Aws::Connect::Endpoints::ClaimPhoneNumber.build(context)
  when :create_agent_status
    Aws::Connect::Endpoints::CreateAgentStatus.build(context)
  when :create_contact_flow
    Aws::Connect::Endpoints::CreateContactFlow.build(context)
  when :create_contact_flow_module
    Aws::Connect::Endpoints::CreateContactFlowModule.build(context)
  when :create_hours_of_operation
    Aws::Connect::Endpoints::CreateHoursOfOperation.build(context)
  when :create_instance
    Aws::Connect::Endpoints::CreateInstance.build(context)
  when :create_integration_association
    Aws::Connect::Endpoints::CreateIntegrationAssociation.build(context)
  when :create_queue
    Aws::Connect::Endpoints::CreateQueue.build(context)
  when :create_quick_connect
    Aws::Connect::Endpoints::CreateQuickConnect.build(context)
  when :create_routing_profile
    Aws::Connect::Endpoints::CreateRoutingProfile.build(context)
  when :create_security_profile
    Aws::Connect::Endpoints::CreateSecurityProfile.build(context)
  when :create_task_template
    Aws::Connect::Endpoints::CreateTaskTemplate.build(context)
  when :create_traffic_distribution_group
    Aws::Connect::Endpoints::CreateTrafficDistributionGroup.build(context)
  when :create_use_case
    Aws::Connect::Endpoints::CreateUseCase.build(context)
  when :create_user
    Aws::Connect::Endpoints::CreateUser.build(context)
  when :create_user_hierarchy_group
    Aws::Connect::Endpoints::CreateUserHierarchyGroup.build(context)
  when :create_vocabulary
    Aws::Connect::Endpoints::CreateVocabulary.build(context)
  when :delete_contact_flow
    Aws::Connect::Endpoints::DeleteContactFlow.build(context)
  when :delete_contact_flow_module
    Aws::Connect::Endpoints::DeleteContactFlowModule.build(context)
  when :delete_hours_of_operation
    Aws::Connect::Endpoints::DeleteHoursOfOperation.build(context)
  when :delete_instance
    Aws::Connect::Endpoints::DeleteInstance.build(context)
  when :delete_integration_association
    Aws::Connect::Endpoints::DeleteIntegrationAssociation.build(context)
  when :delete_quick_connect
    Aws::Connect::Endpoints::DeleteQuickConnect.build(context)
  when :delete_security_profile
    Aws::Connect::Endpoints::DeleteSecurityProfile.build(context)
  when :delete_task_template
    Aws::Connect::Endpoints::DeleteTaskTemplate.build(context)
  when :delete_traffic_distribution_group
    Aws::Connect::Endpoints::DeleteTrafficDistributionGroup.build(context)
  when :delete_use_case
    Aws::Connect::Endpoints::DeleteUseCase.build(context)
  when :delete_user
    Aws::Connect::Endpoints::DeleteUser.build(context)
  when :delete_user_hierarchy_group
    Aws::Connect::Endpoints::DeleteUserHierarchyGroup.build(context)
  when :delete_vocabulary
    Aws::Connect::Endpoints::DeleteVocabulary.build(context)
  when :describe_agent_status
    Aws::Connect::Endpoints::DescribeAgentStatus.build(context)
  when :describe_contact
    Aws::Connect::Endpoints::DescribeContact.build(context)
  when :describe_contact_flow
    Aws::Connect::Endpoints::DescribeContactFlow.build(context)
  when :describe_contact_flow_module
    Aws::Connect::Endpoints::DescribeContactFlowModule.build(context)
  when :describe_hours_of_operation
    Aws::Connect::Endpoints::DescribeHoursOfOperation.build(context)
  when :describe_instance
    Aws::Connect::Endpoints::DescribeInstance.build(context)
  when :describe_instance_attribute
    Aws::Connect::Endpoints::DescribeInstanceAttribute.build(context)
  when :describe_instance_storage_config
    Aws::Connect::Endpoints::DescribeInstanceStorageConfig.build(context)
  when :describe_phone_number
    Aws::Connect::Endpoints::DescribePhoneNumber.build(context)
  when :describe_queue
    Aws::Connect::Endpoints::DescribeQueue.build(context)
  when :describe_quick_connect
    Aws::Connect::Endpoints::DescribeQuickConnect.build(context)
  when :describe_routing_profile
    Aws::Connect::Endpoints::DescribeRoutingProfile.build(context)
  when :describe_security_profile
    Aws::Connect::Endpoints::DescribeSecurityProfile.build(context)
  when :describe_traffic_distribution_group
    Aws::Connect::Endpoints::DescribeTrafficDistributionGroup.build(context)
  when :describe_user
    Aws::Connect::Endpoints::DescribeUser.build(context)
  when :describe_user_hierarchy_group
    Aws::Connect::Endpoints::DescribeUserHierarchyGroup.build(context)
  when :describe_user_hierarchy_structure
    Aws::Connect::Endpoints::DescribeUserHierarchyStructure.build(context)
  when :describe_vocabulary
    Aws::Connect::Endpoints::DescribeVocabulary.build(context)
  when :disassociate_approved_origin
    Aws::Connect::Endpoints::DisassociateApprovedOrigin.build(context)
  when :disassociate_bot
    Aws::Connect::Endpoints::DisassociateBot.build(context)
  when :disassociate_instance_storage_config
    Aws::Connect::Endpoints::DisassociateInstanceStorageConfig.build(context)
  when :disassociate_lambda_function
    Aws::Connect::Endpoints::DisassociateLambdaFunction.build(context)
  when :disassociate_lex_bot
    Aws::Connect::Endpoints::DisassociateLexBot.build(context)
  when :disassociate_phone_number_contact_flow
    Aws::Connect::Endpoints::DisassociatePhoneNumberContactFlow.build(context)
  when :disassociate_queue_quick_connects
    Aws::Connect::Endpoints::DisassociateQueueQuickConnects.build(context)
  when :disassociate_routing_profile_queues
    Aws::Connect::Endpoints::DisassociateRoutingProfileQueues.build(context)
  when :disassociate_security_key
    Aws::Connect::Endpoints::DisassociateSecurityKey.build(context)
  when :dismiss_user_contact
    Aws::Connect::Endpoints::DismissUserContact.build(context)
  when :get_contact_attributes
    Aws::Connect::Endpoints::GetContactAttributes.build(context)
  when :get_current_metric_data
    Aws::Connect::Endpoints::GetCurrentMetricData.build(context)
  when :get_current_user_data
    Aws::Connect::Endpoints::GetCurrentUserData.build(context)
  when :get_federation_token
    Aws::Connect::Endpoints::GetFederationToken.build(context)
  when :get_metric_data
    Aws::Connect::Endpoints::GetMetricData.build(context)
  when :get_task_template
    Aws::Connect::Endpoints::GetTaskTemplate.build(context)
  when :get_traffic_distribution
    Aws::Connect::Endpoints::GetTrafficDistribution.build(context)
  when :list_agent_statuses
    Aws::Connect::Endpoints::ListAgentStatuses.build(context)
  when :list_approved_origins
    Aws::Connect::Endpoints::ListApprovedOrigins.build(context)
  when :list_bots
    Aws::Connect::Endpoints::ListBots.build(context)
  when :list_contact_flow_modules
    Aws::Connect::Endpoints::ListContactFlowModules.build(context)
  when :list_contact_flows
    Aws::Connect::Endpoints::ListContactFlows.build(context)
  when :list_contact_references
    Aws::Connect::Endpoints::ListContactReferences.build(context)
  when :list_default_vocabularies
    Aws::Connect::Endpoints::ListDefaultVocabularies.build(context)
  when :list_hours_of_operations
    Aws::Connect::Endpoints::ListHoursOfOperations.build(context)
  when :list_instance_attributes
    Aws::Connect::Endpoints::ListInstanceAttributes.build(context)
  when :list_instance_storage_configs
    Aws::Connect::Endpoints::ListInstanceStorageConfigs.build(context)
  when :list_instances
    Aws::Connect::Endpoints::ListInstances.build(context)
  when :list_integration_associations
    Aws::Connect::Endpoints::ListIntegrationAssociations.build(context)
  when :list_lambda_functions
    Aws::Connect::Endpoints::ListLambdaFunctions.build(context)
  when :list_lex_bots
    Aws::Connect::Endpoints::ListLexBots.build(context)
  when :list_phone_numbers
    Aws::Connect::Endpoints::ListPhoneNumbers.build(context)
  when :list_phone_numbers_v2
    Aws::Connect::Endpoints::ListPhoneNumbersV2.build(context)
  when :list_prompts
    Aws::Connect::Endpoints::ListPrompts.build(context)
  when :list_queue_quick_connects
    Aws::Connect::Endpoints::ListQueueQuickConnects.build(context)
  when :list_queues
    Aws::Connect::Endpoints::ListQueues.build(context)
  when :list_quick_connects
    Aws::Connect::Endpoints::ListQuickConnects.build(context)
  when :list_routing_profile_queues
    Aws::Connect::Endpoints::ListRoutingProfileQueues.build(context)
  when :list_routing_profiles
    Aws::Connect::Endpoints::ListRoutingProfiles.build(context)
  when :list_security_keys
    Aws::Connect::Endpoints::ListSecurityKeys.build(context)
  when :list_security_profile_permissions
    Aws::Connect::Endpoints::ListSecurityProfilePermissions.build(context)
  when :list_security_profiles
    Aws::Connect::Endpoints::ListSecurityProfiles.build(context)
  when :list_tags_for_resource
    Aws::Connect::Endpoints::ListTagsForResource.build(context)
  when :list_task_templates
    Aws::Connect::Endpoints::ListTaskTemplates.build(context)
  when :list_traffic_distribution_groups
    Aws::Connect::Endpoints::ListTrafficDistributionGroups.build(context)
  when :list_use_cases
    Aws::Connect::Endpoints::ListUseCases.build(context)
  when :list_user_hierarchy_groups
    Aws::Connect::Endpoints::ListUserHierarchyGroups.build(context)
  when :list_users
    Aws::Connect::Endpoints::ListUsers.build(context)
  when :monitor_contact
    Aws::Connect::Endpoints::MonitorContact.build(context)
  when :put_user_status
    Aws::Connect::Endpoints::PutUserStatus.build(context)
  when :release_phone_number
    Aws::Connect::Endpoints::ReleasePhoneNumber.build(context)
  when :replicate_instance
    Aws::Connect::Endpoints::ReplicateInstance.build(context)
  when :resume_contact_recording
    Aws::Connect::Endpoints::ResumeContactRecording.build(context)
  when :search_available_phone_numbers
    Aws::Connect::Endpoints::SearchAvailablePhoneNumbers.build(context)
  when :search_queues
    Aws::Connect::Endpoints::SearchQueues.build(context)
  when :search_routing_profiles
    Aws::Connect::Endpoints::SearchRoutingProfiles.build(context)
  when :search_security_profiles
    Aws::Connect::Endpoints::SearchSecurityProfiles.build(context)
  when :search_users
    Aws::Connect::Endpoints::SearchUsers.build(context)
  when :search_vocabularies
    Aws::Connect::Endpoints::SearchVocabularies.build(context)
  when :start_chat_contact
    Aws::Connect::Endpoints::StartChatContact.build(context)
  when :start_contact_recording
    Aws::Connect::Endpoints::StartContactRecording.build(context)
  when :start_contact_streaming
    Aws::Connect::Endpoints::StartContactStreaming.build(context)
  when :start_outbound_voice_contact
    Aws::Connect::Endpoints::StartOutboundVoiceContact.build(context)
  when :start_task_contact
    Aws::Connect::Endpoints::StartTaskContact.build(context)
  when :stop_contact
    Aws::Connect::Endpoints::StopContact.build(context)
  when :stop_contact_recording
    Aws::Connect::Endpoints::StopContactRecording.build(context)
  when :stop_contact_streaming
    Aws::Connect::Endpoints::StopContactStreaming.build(context)
  when :suspend_contact_recording
    Aws::Connect::Endpoints::SuspendContactRecording.build(context)
  when :tag_resource
    Aws::Connect::Endpoints::TagResource.build(context)
  when :transfer_contact
    Aws::Connect::Endpoints::TransferContact.build(context)
  when :untag_resource
    Aws::Connect::Endpoints::UntagResource.build(context)
  when :update_agent_status
    Aws::Connect::Endpoints::UpdateAgentStatus.build(context)
  when :update_contact
    Aws::Connect::Endpoints::UpdateContact.build(context)
  when :update_contact_attributes
    Aws::Connect::Endpoints::UpdateContactAttributes.build(context)
  when :update_contact_flow_content
    Aws::Connect::Endpoints::UpdateContactFlowContent.build(context)
  when :update_contact_flow_metadata
    Aws::Connect::Endpoints::UpdateContactFlowMetadata.build(context)
  when :update_contact_flow_module_content
    Aws::Connect::Endpoints::UpdateContactFlowModuleContent.build(context)
  when :update_contact_flow_module_metadata
    Aws::Connect::Endpoints::UpdateContactFlowModuleMetadata.build(context)
  when :update_contact_flow_name
    Aws::Connect::Endpoints::UpdateContactFlowName.build(context)
  when :update_contact_schedule
    Aws::Connect::Endpoints::UpdateContactSchedule.build(context)
  when :update_hours_of_operation
    Aws::Connect::Endpoints::UpdateHoursOfOperation.build(context)
  when :update_instance_attribute
    Aws::Connect::Endpoints::UpdateInstanceAttribute.build(context)
  when :update_instance_storage_config
    Aws::Connect::Endpoints::UpdateInstanceStorageConfig.build(context)
  when :update_phone_number
    Aws::Connect::Endpoints::UpdatePhoneNumber.build(context)
  when :update_queue_hours_of_operation
    Aws::Connect::Endpoints::UpdateQueueHoursOfOperation.build(context)
  when :update_queue_max_contacts
    Aws::Connect::Endpoints::UpdateQueueMaxContacts.build(context)
  when :update_queue_name
    Aws::Connect::Endpoints::UpdateQueueName.build(context)
  when :update_queue_outbound_caller_config
    Aws::Connect::Endpoints::UpdateQueueOutboundCallerConfig.build(context)
  when :update_queue_status
    Aws::Connect::Endpoints::UpdateQueueStatus.build(context)
  when :update_quick_connect_config
    Aws::Connect::Endpoints::UpdateQuickConnectConfig.build(context)
  when :update_quick_connect_name
    Aws::Connect::Endpoints::UpdateQuickConnectName.build(context)
  when :update_routing_profile_concurrency
    Aws::Connect::Endpoints::UpdateRoutingProfileConcurrency.build(context)
  when :update_routing_profile_default_outbound_queue
    Aws::Connect::Endpoints::UpdateRoutingProfileDefaultOutboundQueue.build(context)
  when :update_routing_profile_name
    Aws::Connect::Endpoints::UpdateRoutingProfileName.build(context)
  when :update_routing_profile_queues
    Aws::Connect::Endpoints::UpdateRoutingProfileQueues.build(context)
  when :update_security_profile
    Aws::Connect::Endpoints::UpdateSecurityProfile.build(context)
  when :update_task_template
    Aws::Connect::Endpoints::UpdateTaskTemplate.build(context)
  when :update_traffic_distribution
    Aws::Connect::Endpoints::UpdateTrafficDistribution.build(context)
  when :update_user_hierarchy
    Aws::Connect::Endpoints::UpdateUserHierarchy.build(context)
  when :update_user_hierarchy_group_name
    Aws::Connect::Endpoints::UpdateUserHierarchyGroupName.build(context)
  when :update_user_hierarchy_structure
    Aws::Connect::Endpoints::UpdateUserHierarchyStructure.build(context)
  when :update_user_identity_info
    Aws::Connect::Endpoints::UpdateUserIdentityInfo.build(context)
  when :update_user_phone_config
    Aws::Connect::Endpoints::UpdateUserPhoneConfig.build(context)
  when :update_user_routing_profile
    Aws::Connect::Endpoints::UpdateUserRoutingProfile.build(context)
  when :update_user_security_profiles
    Aws::Connect::Endpoints::UpdateUserSecurityProfiles.build(context)
  end
end