bandwidth-sdk 18.1.3 → 18.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +56 -10
- data/README.md +2 -0
- data/UPDATING_MODEL_TESTS.md +17 -2
- data/bandwidth-sdk.gemspec +2 -2
- data/bandwidth.yml +190 -51
- data/coverage/.last_run.json +1 -1
- data/coverage/.resultset.json +819 -144
- data/coverage/index.html +15708 -8440
- data/custom_templates/configuration.mustache +6 -2
- data/custom_templates/gemspec.mustache +1 -1
- data/docs/AnswerCallback.md +4 -2
- data/docs/BridgeCompleteCallback.md +1 -1
- data/docs/BridgeTargetCompleteCallback.md +1 -1
- data/docs/ConferenceCompletedCallback.md +1 -1
- data/docs/ConferenceCreatedCallback.md +1 -1
- data/docs/ConferenceMemberExitCallback.md +1 -1
- data/docs/ConferenceMemberJoinCallback.md +1 -1
- data/docs/ConferenceRecordingAvailableCallback.md +1 -1
- data/docs/ConferenceRedirectCallback.md +1 -1
- data/docs/DisconnectCallback.md +6 -2
- data/docs/DtmfCallback.md +1 -1
- data/docs/GatherCallback.md +1 -1
- data/docs/InitiateCallback.md +6 -2
- data/docs/MachineDetectionCompleteCallback.md +1 -1
- data/docs/MediaApi.md +8 -8
- data/docs/MessagesApi.md +4 -4
- data/docs/MultiChannelApi.md +2 -2
- data/docs/RbmActionBase.md +1 -1
- data/docs/RbmSuggestionResponse.md +1 -1
- data/docs/RecordingAvailableCallback.md +1 -1
- data/docs/RecordingCompleteCallback.md +1 -1
- data/docs/RedirectCallback.md +1 -1
- data/docs/ReferCallStatusEnum.md +15 -0
- data/docs/ReferCompleteCallback.md +46 -0
- data/docs/TranscriptionAvailableCallback.md +1 -1
- data/docs/TransferAnswerCallback.md +1 -1
- data/docs/TransferCompleteCallback.md +1 -1
- data/docs/TransferDisconnectCallback.md +1 -1
- data/lib/bandwidth-sdk/api/calls_api.rb +6 -6
- data/lib/bandwidth-sdk/api/conferences_api.rb +10 -10
- data/lib/bandwidth-sdk/api/endpoints_api.rb +6 -6
- data/lib/bandwidth-sdk/api/media_api.rb +13 -13
- data/lib/bandwidth-sdk/api/messages_api.rb +7 -7
- data/lib/bandwidth-sdk/api/mfa_api.rb +4 -4
- data/lib/bandwidth-sdk/api/multi_channel_api.rb +4 -4
- data/lib/bandwidth-sdk/api/phone_number_lookup_api.rb +4 -4
- data/lib/bandwidth-sdk/api/recordings_api.rb +11 -11
- data/lib/bandwidth-sdk/api/statistics_api.rb +2 -2
- data/lib/bandwidth-sdk/api/toll_free_verification_api.rb +9 -9
- data/lib/bandwidth-sdk/api/transcriptions_api.rb +4 -4
- data/lib/bandwidth-sdk/api_client.rb +1 -1
- data/lib/bandwidth-sdk/api_error.rb +1 -1
- data/lib/bandwidth-sdk/api_model_base.rb +1 -1
- data/lib/bandwidth-sdk/configuration.rb +7 -3
- data/lib/bandwidth-sdk/models/account_statistics.rb +1 -1
- data/lib/bandwidth-sdk/models/additional_denial_reason.rb +1 -1
- data/lib/bandwidth-sdk/models/address.rb +1 -1
- data/lib/bandwidth-sdk/models/answer_callback.rb +17 -7
- data/lib/bandwidth-sdk/models/async_lookup_request.rb +1 -1
- data/lib/bandwidth-sdk/models/blocked_webhook.rb +1 -1
- data/lib/bandwidth-sdk/models/bridge_complete_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/bridge_target_complete_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/brtc_error.rb +1 -1
- data/lib/bandwidth-sdk/models/brtc_error_response.rb +1 -1
- data/lib/bandwidth-sdk/models/brtc_error_source.rb +1 -1
- data/lib/bandwidth-sdk/models/brtc_link.rb +1 -1
- data/lib/bandwidth-sdk/models/business_entity_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/business_registration_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/bxml/root.rb +1 -1
- data/lib/bandwidth-sdk/models/bxml/verb.rb +1 -1
- data/lib/bandwidth-sdk/models/bxml/verbs/gather.rb +1 -1
- data/lib/bandwidth-sdk/models/bxml/verbs/refer.rb +24 -0
- data/lib/bandwidth-sdk/models/bxml/verbs/sip_uri.rb +3 -1
- data/lib/bandwidth-sdk/models/bxml/verbs/speak_sentence.rb +1 -1
- data/lib/bandwidth-sdk/models/call_direction_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/call_recording_metadata.rb +1 -1
- data/lib/bandwidth-sdk/models/call_state.rb +1 -1
- data/lib/bandwidth-sdk/models/call_state_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/call_transcription.rb +1 -1
- data/lib/bandwidth-sdk/models/call_transcription_detected_language_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/call_transcription_metadata.rb +1 -1
- data/lib/bandwidth-sdk/models/call_transcription_response.rb +1 -1
- data/lib/bandwidth-sdk/models/call_transcription_track_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/callback.rb +1 -1
- data/lib/bandwidth-sdk/models/callback_method_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/card_width_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/code_request.rb +1 -1
- data/lib/bandwidth-sdk/models/completed_lookup_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/conference.rb +1 -1
- data/lib/bandwidth-sdk/models/conference_completed_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/conference_created_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/conference_member.rb +1 -1
- data/lib/bandwidth-sdk/models/conference_member_exit_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/conference_member_join_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/conference_recording_available_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/conference_recording_metadata.rb +1 -1
- data/lib/bandwidth-sdk/models/conference_redirect_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/conference_state_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/contact.rb +1 -1
- data/lib/bandwidth-sdk/models/create_async_bulk_lookup_response.rb +1 -1
- data/lib/bandwidth-sdk/models/create_async_bulk_lookup_response_data.rb +1 -1
- data/lib/bandwidth-sdk/models/create_call.rb +1 -1
- data/lib/bandwidth-sdk/models/create_call_response.rb +1 -1
- data/lib/bandwidth-sdk/models/create_endpoint_request_base.rb +1 -1
- data/lib/bandwidth-sdk/models/create_endpoint_response.rb +1 -1
- data/lib/bandwidth-sdk/models/create_endpoint_response_data.rb +1 -1
- data/lib/bandwidth-sdk/models/create_message_request_error.rb +1 -1
- data/lib/bandwidth-sdk/models/create_multi_channel_message_response.rb +1 -1
- data/lib/bandwidth-sdk/models/create_sync_lookup_response.rb +1 -1
- data/lib/bandwidth-sdk/models/create_sync_lookup_response_data.rb +1 -1
- data/lib/bandwidth-sdk/models/create_web_rtc_connection_request.rb +1 -1
- data/lib/bandwidth-sdk/models/deactivation_event_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/device.rb +1 -1
- data/lib/bandwidth-sdk/models/device_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/disconnect_callback.rb +27 -7
- data/lib/bandwidth-sdk/models/diversion.rb +1 -1
- data/lib/bandwidth-sdk/models/dtmf_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/endpoint.rb +1 -1
- data/lib/bandwidth-sdk/models/endpoint_direction_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/endpoint_event.rb +1 -1
- data/lib/bandwidth-sdk/models/endpoint_event_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/endpoint_response.rb +1 -1
- data/lib/bandwidth-sdk/models/endpoint_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/endpoint_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/endpoints.rb +1 -1
- data/lib/bandwidth-sdk/models/error_object.rb +1 -1
- data/lib/bandwidth-sdk/models/error_source.rb +1 -1
- data/lib/bandwidth-sdk/models/failure_webhook.rb +1 -1
- data/lib/bandwidth-sdk/models/field_error.rb +1 -1
- data/lib/bandwidth-sdk/models/file_format_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/gather_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/get_async_bulk_lookup_response.rb +1 -1
- data/lib/bandwidth-sdk/models/get_async_bulk_lookup_response_data.rb +1 -1
- data/lib/bandwidth-sdk/models/in_progress_lookup_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/inbound_callback.rb +1 -1
- data/lib/bandwidth-sdk/models/inbound_callback_message.rb +1 -1
- data/lib/bandwidth-sdk/models/inbound_callback_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/initiate_callback.rb +28 -6
- data/lib/bandwidth-sdk/models/latest_message_delivery_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/line_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/link.rb +1 -1
- data/lib/bandwidth-sdk/models/link_schema.rb +1 -1
- data/lib/bandwidth-sdk/models/links_object.rb +1 -1
- data/lib/bandwidth-sdk/models/list_endpoints_response.rb +1 -1
- data/lib/bandwidth-sdk/models/list_message_direction_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/list_message_item.rb +1 -1
- data/lib/bandwidth-sdk/models/lookup_error_response.rb +1 -1
- data/lib/bandwidth-sdk/models/lookup_error_schema.rb +1 -1
- data/lib/bandwidth-sdk/models/lookup_error_schema_meta.rb +1 -1
- data/lib/bandwidth-sdk/models/lookup_result.rb +1 -1
- data/lib/bandwidth-sdk/models/machine_detection_complete_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/machine_detection_configuration.rb +1 -1
- data/lib/bandwidth-sdk/models/machine_detection_mode_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/machine_detection_result.rb +1 -1
- data/lib/bandwidth-sdk/models/media.rb +1 -1
- data/lib/bandwidth-sdk/models/message.rb +1 -1
- data/lib/bandwidth-sdk/models/message_direction_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/message_request.rb +1 -1
- data/lib/bandwidth-sdk/models/message_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/message_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/messages_list.rb +1 -1
- data/lib/bandwidth-sdk/models/messaging_code_response.rb +1 -1
- data/lib/bandwidth-sdk/models/messaging_request_error.rb +1 -1
- data/lib/bandwidth-sdk/models/mfa_forbidden_request_error.rb +1 -1
- data/lib/bandwidth-sdk/models/mfa_request_error.rb +1 -1
- data/lib/bandwidth-sdk/models/mfa_unauthorized_request_error.rb +1 -1
- data/lib/bandwidth-sdk/models/mms_message_content.rb +1 -1
- data/lib/bandwidth-sdk/models/mms_message_content_file.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_action.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_action_calendar_event.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_mms_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_mms_response_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_object_base.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_owner_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_rbm_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_rbm_object_all_of_content.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_rbm_response_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_request_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_response_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_sms_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_channel_list_sms_response_object.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_error.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_message_channel_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_message_content.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_message_request.rb +1 -1
- data/lib/bandwidth-sdk/models/multi_channel_message_response_data.rb +1 -1
- data/lib/bandwidth-sdk/models/opt_in_workflow.rb +1 -1
- data/lib/bandwidth-sdk/models/page.rb +1 -1
- data/lib/bandwidth-sdk/models/page_info.rb +1 -1
- data/lib/bandwidth-sdk/models/priority_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/product_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_action_base.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_action_dial.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_action_open_url.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_action_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_action_view_location.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_card_content.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_card_content_media.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_location_response.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_media_height_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_message_carousel_card.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_message_content_file.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_message_content_rich_card.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_message_content_text.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_message_media.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_open_url_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_standalone_card.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_suggestion_response.rb +1 -1
- data/lib/bandwidth-sdk/models/rbm_web_view_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/recording_available_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/recording_complete_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/recording_state_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/recording_transcription_clip.rb +1 -1
- data/lib/bandwidth-sdk/models/recording_transcription_metadata.rb +1 -1
- data/lib/bandwidth-sdk/models/recording_transcriptions.rb +1 -1
- data/lib/bandwidth-sdk/models/redirect_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/redirect_method_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/refer_call_status_enum.rb +40 -0
- data/lib/bandwidth-sdk/models/refer_complete_callback.rb +309 -0
- data/lib/bandwidth-sdk/models/sip_connection_metadata.rb +1 -1
- data/lib/bandwidth-sdk/models/sip_credentials.rb +1 -1
- data/lib/bandwidth-sdk/models/sms_message_content.rb +1 -1
- data/lib/bandwidth-sdk/models/standalone_card_orientation_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/status_callback.rb +1 -1
- data/lib/bandwidth-sdk/models/status_callback_message.rb +1 -1
- data/lib/bandwidth-sdk/models/status_callback_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/stir_shaken.rb +1 -1
- data/lib/bandwidth-sdk/models/sync_lookup_request.rb +1 -1
- data/lib/bandwidth-sdk/models/telephone_number.rb +1 -1
- data/lib/bandwidth-sdk/models/tfv_basic_authentication.rb +1 -1
- data/lib/bandwidth-sdk/models/tfv_callback_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/tfv_error.rb +1 -1
- data/lib/bandwidth-sdk/models/tfv_status.rb +1 -1
- data/lib/bandwidth-sdk/models/tfv_status_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/tfv_submission_info.rb +1 -1
- data/lib/bandwidth-sdk/models/tfv_submission_wrapper.rb +1 -1
- data/lib/bandwidth-sdk/models/thumbnail_alignment_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/transcribe_recording.rb +1 -1
- data/lib/bandwidth-sdk/models/transcription.rb +1 -1
- data/lib/bandwidth-sdk/models/transcription_available_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/transfer_answer_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/transfer_complete_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/transfer_disconnect_callback.rb +2 -2
- data/lib/bandwidth-sdk/models/update_call.rb +1 -1
- data/lib/bandwidth-sdk/models/update_call_recording.rb +1 -1
- data/lib/bandwidth-sdk/models/update_conference.rb +1 -1
- data/lib/bandwidth-sdk/models/update_conference_member.rb +1 -1
- data/lib/bandwidth-sdk/models/verification_denial_webhook.rb +1 -1
- data/lib/bandwidth-sdk/models/verification_request.rb +1 -1
- data/lib/bandwidth-sdk/models/verification_update_request.rb +1 -1
- data/lib/bandwidth-sdk/models/verification_webhook.rb +1 -1
- data/lib/bandwidth-sdk/models/verify_code_request.rb +1 -1
- data/lib/bandwidth-sdk/models/verify_code_response.rb +1 -1
- data/lib/bandwidth-sdk/models/voice_api_error.rb +1 -1
- data/lib/bandwidth-sdk/models/voice_code_response.rb +1 -1
- data/lib/bandwidth-sdk/models/webhook_subscription.rb +1 -1
- data/lib/bandwidth-sdk/models/webhook_subscription_basic_authentication.rb +1 -1
- data/lib/bandwidth-sdk/models/webhook_subscription_error.rb +1 -1
- data/lib/bandwidth-sdk/models/webhook_subscription_request_schema.rb +1 -1
- data/lib/bandwidth-sdk/models/webhook_subscription_type_enum.rb +1 -1
- data/lib/bandwidth-sdk/models/webhook_subscriptions_list_body.rb +1 -1
- data/lib/bandwidth-sdk/version.rb +2 -2
- data/lib/bandwidth-sdk.rb +4 -1
- data/openapitools.json +1 -1
- data/spec/unit/api/calls_api_spec.rb +1 -2
- data/spec/unit/api/conferences_api_spec.rb +1 -2
- data/spec/unit/api/endpoints_api_spec.rb +1 -2
- data/spec/unit/api/media_api_spec.rb +1 -2
- data/spec/unit/api/messages_api_spec.rb +1 -2
- data/spec/unit/api/mfa_api_spec.rb +1 -2
- data/spec/unit/api/multi_channel_api_spec.rb +1 -2
- data/spec/unit/api/phone_number_lookup_api_spec.rb +1 -2
- data/spec/unit/api/recordings_api_spec.rb +1 -2
- data/spec/unit/api/statistics_api_spec.rb +1 -2
- data/spec/unit/api/toll_free_verification_api_spec.rb +1 -2
- data/spec/unit/api/transcriptions_api_spec.rb +1 -2
- data/spec/unit/models/account_statistics_spec.rb +1 -1
- data/spec/unit/models/additional_denial_reason_spec.rb +1 -1
- data/spec/unit/models/address_spec.rb +1 -1
- data/spec/unit/models/answer_callback_spec.rb +8 -4
- data/spec/unit/models/async_lookup_request_spec.rb +1 -1
- data/spec/unit/models/blocked_webhook_spec.rb +1 -1
- data/spec/unit/models/bridge_complete_callback_spec.rb +1 -1
- data/spec/unit/models/bridge_target_complete_callback_spec.rb +1 -1
- data/spec/unit/models/brtc_error_response_spec.rb +1 -1
- data/spec/unit/models/brtc_error_source_spec.rb +1 -1
- data/spec/unit/models/brtc_error_spec.rb +1 -1
- data/spec/unit/models/brtc_link_spec.rb +1 -1
- data/spec/unit/models/bxml/verbs/refer_spec.rb +54 -0
- data/spec/unit/models/call_recording_metadata_spec.rb +1 -1
- data/spec/unit/models/call_state_spec.rb +1 -1
- data/spec/unit/models/call_transcription_metadata_spec.rb +1 -1
- data/spec/unit/models/call_transcription_response_spec.rb +1 -1
- data/spec/unit/models/call_transcription_spec.rb +1 -1
- data/spec/unit/models/code_request_spec.rb +1 -1
- data/spec/unit/models/conference_completed_callback_spec.rb +1 -1
- data/spec/unit/models/conference_created_callback_spec.rb +1 -1
- data/spec/unit/models/conference_member_exit_callback_spec.rb +1 -1
- data/spec/unit/models/conference_member_join_callback_spec.rb +1 -1
- data/spec/unit/models/conference_member_spec.rb +1 -1
- data/spec/unit/models/conference_recording_available_callback_spec.rb +1 -1
- data/spec/unit/models/conference_recording_metadata_spec.rb +1 -1
- data/spec/unit/models/conference_redirect_callback_spec.rb +1 -1
- data/spec/unit/models/conference_spec.rb +1 -1
- data/spec/unit/models/contact_spec.rb +1 -1
- data/spec/unit/models/create_async_bulk_lookup_response_data_spec.rb +1 -1
- data/spec/unit/models/create_async_bulk_lookup_response_spec.rb +1 -1
- data/spec/unit/models/create_call_response_spec.rb +1 -1
- data/spec/unit/models/create_call_spec.rb +1 -1
- data/spec/unit/models/create_endpoint_request_base_spec.rb +1 -1
- data/spec/unit/models/create_endpoint_response_data_spec.rb +1 -1
- data/spec/unit/models/create_endpoint_response_spec.rb +1 -1
- data/spec/unit/models/create_message_request_error_spec.rb +1 -1
- data/spec/unit/models/create_multi_channel_message_response_spec.rb +1 -1
- data/spec/unit/models/create_sync_lookup_response_data_spec.rb +1 -1
- data/spec/unit/models/create_sync_lookup_response_spec.rb +1 -1
- data/spec/unit/models/create_web_rtc_connection_request_spec.rb +1 -1
- data/spec/unit/models/device_spec.rb +1 -1
- data/spec/unit/models/disconnect_callback_spec.rb +12 -4
- data/spec/unit/models/diversion_spec.rb +1 -1
- data/spec/unit/models/dtmf_callback_spec.rb +1 -1
- data/spec/unit/models/endpoint_event_spec.rb +1 -1
- data/spec/unit/models/endpoint_response_spec.rb +1 -1
- data/spec/unit/models/endpoint_spec.rb +1 -1
- data/spec/unit/models/endpoints_spec.rb +1 -1
- data/spec/unit/models/error_object_spec.rb +1 -1
- data/spec/unit/models/error_source_spec.rb +1 -1
- data/spec/unit/models/failure_webhook_spec.rb +1 -1
- data/spec/unit/models/field_error_spec.rb +1 -1
- data/spec/unit/models/gather_callback_spec.rb +1 -1
- data/spec/unit/models/get_async_bulk_lookup_response_data_spec.rb +1 -1
- data/spec/unit/models/get_async_bulk_lookup_response_spec.rb +1 -1
- data/spec/unit/models/inbound_callback_message_spec.rb +1 -1
- data/spec/unit/models/inbound_callback_spec.rb +1 -1
- data/spec/unit/models/initiate_callback_spec.rb +13 -4
- data/spec/unit/models/link_schema_spec.rb +1 -1
- data/spec/unit/models/link_spec.rb +1 -1
- data/spec/unit/models/links_object_spec.rb +1 -1
- data/spec/unit/models/list_endpoints_response_spec.rb +1 -1
- data/spec/unit/models/list_message_item_spec.rb +1 -1
- data/spec/unit/models/lookup_error_response_spec.rb +1 -1
- data/spec/unit/models/lookup_error_schema_meta_spec.rb +1 -1
- data/spec/unit/models/lookup_error_schema_spec.rb +1 -1
- data/spec/unit/models/lookup_result_spec.rb +1 -1
- data/spec/unit/models/machine_detection_complete_callback_spec.rb +1 -1
- data/spec/unit/models/machine_detection_configuration_spec.rb +1 -1
- data/spec/unit/models/machine_detection_result_spec.rb +1 -1
- data/spec/unit/models/media_spec.rb +1 -1
- data/spec/unit/models/message_request_spec.rb +1 -1
- data/spec/unit/models/message_spec.rb +1 -1
- data/spec/unit/models/messages_list_spec.rb +1 -1
- data/spec/unit/models/messaging_code_response_spec.rb +1 -1
- data/spec/unit/models/messaging_request_error_spec.rb +1 -1
- data/spec/unit/models/mfa_forbidden_request_error_spec.rb +1 -1
- data/spec/unit/models/mfa_request_error_spec.rb +1 -1
- data/spec/unit/models/mfa_unauthorized_request_error_spec.rb +1 -1
- data/spec/unit/models/mms_message_content_file_spec.rb +1 -1
- data/spec/unit/models/mms_message_content_spec.rb +1 -1
- data/spec/unit/models/multi_channel_action_calendar_event_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_mms_object_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_mms_response_object_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_object_base_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_owner_object_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_rbm_object_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_rbm_response_object_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_sms_object_spec.rb +1 -1
- data/spec/unit/models/multi_channel_channel_list_sms_response_object_spec.rb +1 -1
- data/spec/unit/models/multi_channel_error_spec.rb +1 -1
- data/spec/unit/models/multi_channel_message_content_spec.rb +1 -1
- data/spec/unit/models/multi_channel_message_request_spec.rb +1 -1
- data/spec/unit/models/multi_channel_message_response_data_spec.rb +1 -1
- data/spec/unit/models/opt_in_workflow_spec.rb +1 -1
- data/spec/unit/models/page_info_spec.rb +1 -1
- data/spec/unit/models/page_spec.rb +1 -1
- data/spec/unit/models/rbm_action_base_spec.rb +1 -1
- data/spec/unit/models/rbm_action_dial_spec.rb +1 -1
- data/spec/unit/models/rbm_action_open_url_spec.rb +1 -1
- data/spec/unit/models/rbm_action_view_location_spec.rb +1 -1
- data/spec/unit/models/rbm_card_content_media_spec.rb +1 -1
- data/spec/unit/models/rbm_card_content_spec.rb +1 -1
- data/spec/unit/models/rbm_location_response_spec.rb +1 -1
- data/spec/unit/models/rbm_message_carousel_card_spec.rb +1 -1
- data/spec/unit/models/rbm_message_content_file_spec.rb +1 -1
- data/spec/unit/models/rbm_message_content_text_spec.rb +1 -1
- data/spec/unit/models/rbm_message_media_spec.rb +1 -1
- data/spec/unit/models/rbm_standalone_card_spec.rb +1 -1
- data/spec/unit/models/rbm_suggestion_response_spec.rb +1 -1
- data/spec/unit/models/recording_available_callback_spec.rb +1 -1
- data/spec/unit/models/recording_complete_callback_spec.rb +1 -1
- data/spec/unit/models/recording_transcription_clip_spec.rb +1 -1
- data/spec/unit/models/recording_transcription_metadata_spec.rb +1 -1
- data/spec/unit/models/recording_transcriptions_spec.rb +1 -1
- data/spec/unit/models/redirect_callback_spec.rb +1 -1
- data/spec/unit/models/refer_call_status_enum_spec.rb +31 -0
- data/spec/unit/models/refer_complete_callback_spec.rb +123 -0
- data/spec/unit/models/sip_connection_metadata_spec.rb +1 -1
- data/spec/unit/models/sip_credentials_spec.rb +1 -1
- data/spec/unit/models/sms_message_content_spec.rb +1 -1
- data/spec/unit/models/status_callback_message_spec.rb +1 -1
- data/spec/unit/models/status_callback_spec.rb +1 -1
- data/spec/unit/models/stir_shaken_spec.rb +1 -1
- data/spec/unit/models/sync_lookup_request_spec.rb +1 -1
- data/spec/unit/models/telephone_number_spec.rb +1 -1
- data/spec/unit/models/tfv_basic_authentication_spec.rb +1 -1
- data/spec/unit/models/tfv_error_spec.rb +1 -1
- data/spec/unit/models/tfv_status_spec.rb +1 -1
- data/spec/unit/models/tfv_submission_info_spec.rb +1 -1
- data/spec/unit/models/tfv_submission_wrapper_spec.rb +1 -1
- data/spec/unit/models/transcribe_recording_spec.rb +1 -1
- data/spec/unit/models/transcription_available_callback_spec.rb +1 -1
- data/spec/unit/models/transcription_spec.rb +1 -1
- data/spec/unit/models/transfer_answer_callback_spec.rb +1 -1
- data/spec/unit/models/transfer_complete_callback_spec.rb +1 -1
- data/spec/unit/models/transfer_disconnect_callback_spec.rb +1 -1
- data/spec/unit/models/update_call_recording_spec.rb +1 -1
- data/spec/unit/models/update_call_spec.rb +1 -1
- data/spec/unit/models/update_conference_member_spec.rb +1 -1
- data/spec/unit/models/update_conference_spec.rb +1 -1
- data/spec/unit/models/verification_denial_webhook_spec.rb +1 -1
- data/spec/unit/models/verification_request_spec.rb +1 -1
- data/spec/unit/models/verification_update_request_spec.rb +1 -1
- data/spec/unit/models/verification_webhook_spec.rb +1 -1
- data/spec/unit/models/verify_code_request_spec.rb +1 -1
- data/spec/unit/models/verify_code_response_spec.rb +1 -1
- data/spec/unit/models/voice_api_error_spec.rb +1 -1
- data/spec/unit/models/voice_code_response_spec.rb +1 -1
- data/spec/unit/models/webhook_subscription_basic_authentication_spec.rb +1 -1
- data/spec/unit/models/webhook_subscription_error_spec.rb +1 -1
- data/spec/unit/models/webhook_subscription_request_schema_spec.rb +1 -1
- data/spec/unit/models/webhook_subscription_spec.rb +1 -1
- data/spec/unit/models/webhook_subscriptions_list_body_spec.rb +1 -1
- metadata +241 -227
|
@@ -18,7 +18,9 @@ describe Bandwidth::DisconnectCallback do
|
|
|
18
18
|
cause: 'hangup',
|
|
19
19
|
error_message: 'call rejected',
|
|
20
20
|
error_id: '4642074b-7b58-478b-96e4-3a60955c6765',
|
|
21
|
-
tag: 'custom tag'
|
|
21
|
+
tag: 'custom tag',
|
|
22
|
+
sip_call_id: 'sip-call-id-12345',
|
|
23
|
+
sip_response_code: '486',
|
|
22
24
|
}) }
|
|
23
25
|
|
|
24
26
|
describe '#initialize' do
|
|
@@ -72,7 +74,9 @@ describe Bandwidth::DisconnectCallback do
|
|
|
72
74
|
cause: 'hangup',
|
|
73
75
|
errorMessage: 'call rejected',
|
|
74
76
|
errorId: '4642074b-7b58-478b-96e4-3a60955c6765',
|
|
75
|
-
tag: 'custom tag'
|
|
77
|
+
tag: 'custom tag',
|
|
78
|
+
sipCallId: 'sip-call-id-12345',
|
|
79
|
+
sipResponseCode: 486,
|
|
76
80
|
})
|
|
77
81
|
expect(disconnect_callback_from_hash).to be_instance_of(Bandwidth::DisconnectCallback)
|
|
78
82
|
expect(disconnect_callback_from_hash.event_type).to eq('disconnect')
|
|
@@ -92,12 +96,14 @@ describe Bandwidth::DisconnectCallback do
|
|
|
92
96
|
expect(disconnect_callback_from_hash.error_message).to eq('call rejected')
|
|
93
97
|
expect(disconnect_callback_from_hash.error_id).to eq('4642074b-7b58-478b-96e4-3a60955c6765')
|
|
94
98
|
expect(disconnect_callback_from_hash.tag).to eq('custom tag')
|
|
99
|
+
expect(disconnect_callback_from_hash.sip_call_id).to eq('sip-call-id-12345')
|
|
100
|
+
expect(disconnect_callback_from_hash.sip_response_code).to eq(486)
|
|
95
101
|
end
|
|
96
102
|
end
|
|
97
103
|
|
|
98
104
|
describe '#to_s' do
|
|
99
105
|
it 'returns a string representation of the object' do
|
|
100
|
-
expect(disconnect_callback_values.to_s).to eq(
|
|
106
|
+
expect(disconnect_callback_values.to_s).to eq({ :eventType => 'disconnect', :eventTime => '2022-06-16T13:15:07.160Z', :accountId => '9900000', :applicationId => '04e88489-df02-4e34-a0ee-27a91849555f', :from => '+19195554321', :to => '+19195551234', :callId => 'c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :direction => 'inbound', :callUrl => 'https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :enqueuedTime => '2022-06-16T13:15:07.160Z', :startTime => '2022-06-16T13:15:07.160Z', :answerTime => '2022-06-16T13:15:18.126Z', :endTime => '2022-06-16T13:16:18.126Z', :cause => 'hangup', :errorMessage => 'call rejected', :errorId => '4642074b-7b58-478b-96e4-3a60955c6765', :tag => 'custom tag', :sipCallId => 'sip-call-id-12345', :sipResponseCode => '486' }.to_s)
|
|
101
107
|
end
|
|
102
108
|
end
|
|
103
109
|
|
|
@@ -127,7 +133,9 @@ describe Bandwidth::DisconnectCallback do
|
|
|
127
133
|
cause: 'hangup',
|
|
128
134
|
errorMessage: 'call rejected',
|
|
129
135
|
errorId: '4642074b-7b58-478b-96e4-3a60955c6765',
|
|
130
|
-
tag: 'custom tag'
|
|
136
|
+
tag: 'custom tag',
|
|
137
|
+
sipCallId: 'sip-call-id-12345',
|
|
138
|
+
sipResponseCode: '486'
|
|
131
139
|
})
|
|
132
140
|
end
|
|
133
141
|
end
|
|
@@ -61,7 +61,7 @@ describe Bandwidth::Diversion do
|
|
|
61
61
|
|
|
62
62
|
describe '#to_s' do
|
|
63
63
|
it 'returns a string representation of the object' do
|
|
64
|
-
expect(diversion_values.to_s).to eq(
|
|
64
|
+
expect(diversion_values.to_s).to eq({ :reason => 'unconditional', :privacy => 'off', :screen => 'no', :counter => '2', :limit => '5', :unknown => 'some-value', :origTo => '+19195551234' }.to_s)
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
|
|
@@ -95,7 +95,7 @@ describe Bandwidth::DtmfCallback do
|
|
|
95
95
|
|
|
96
96
|
describe '#to_s' do
|
|
97
97
|
it 'returns a string representation of the object' do
|
|
98
|
-
expect(dtmf_callback_values.to_s).to eq(
|
|
98
|
+
expect(dtmf_callback_values.to_s).to eq({ :eventType => 'dtmf', :eventTime => '2022-06-16T13:15:07.160Z', :accountId => '9900000', :applicationId => '04e88489-df02-4e34-a0ee-27a91849555f', :from => '+19195554321', :to => '+19195551234', :callId => 'c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :direction => 'inbound', :digit => '1', :callUrl => 'https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :enqueuedTime => '2022-06-16T13:15:07.160Z', :startTime => '2022-06-16T13:15:07.160Z', :answerTime => '2022-06-16T13:15:18.126Z', :parentCallId => 'c-95ac29a2-1331029c-2cb0-4a07-b215-b22865662d99', :transferCallerId => '+19195554321', :transferTo => '+19195551234', :tag => 'custom tag' }.to_s)
|
|
99
99
|
end
|
|
100
100
|
end
|
|
101
101
|
|
|
@@ -75,7 +75,7 @@ describe Bandwidth::EndpointEvent do
|
|
|
75
75
|
|
|
76
76
|
describe '#to_s' do
|
|
77
77
|
it 'returns a string representation of the object' do
|
|
78
|
-
expect(endpoint_event_values.to_s).to eq(
|
|
78
|
+
expect(endpoint_event_values.to_s).to eq({ :endpointId => 'ep-abc-123', :type => 'WEBRTC', :status => 'CONNECTED', :creationTimestamp => '2022-06-16T13:15:07.160Z', :expirationTimestamp => '2022-06-17T13:15:07.160Z', :tag => 'custom tag', :eventTime => '2022-06-16T13:15:08.000Z', :eventType => 'DEVICE_CONNECTED', :device => { :deviceId => 'd-1', :status => 'CONNECTED', :creationTimestamp => '2022-06-16T13:15:08.000Z' } }.to_s)
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
|
|
@@ -60,7 +60,7 @@ describe Bandwidth::EndpointResponse do
|
|
|
60
60
|
|
|
61
61
|
describe '#to_s' do
|
|
62
62
|
it 'returns a string representation of the object' do
|
|
63
|
-
expect(endpoint_response_values.to_s).to eq(
|
|
63
|
+
expect(endpoint_response_values.to_s).to eq({ :links => [{ :href => 'https://example.com', :rel => 'self', :method => 'GET' }], :data => { :endpointId => 'abc123', :type => 'WEBRTC', :status => 'CONNECTED', :creationTimestamp => '2024-01-01T00:00:00Z', :expirationTimestamp => '2024-01-02T00:00:00Z' }, :errors => [{ :type => 'validation', :description => 'bad input' }] }.to_s)
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
|
@@ -68,7 +68,7 @@ describe Bandwidth::Endpoint do
|
|
|
68
68
|
|
|
69
69
|
describe '#to_s' do
|
|
70
70
|
it 'returns a string representation of the object' do
|
|
71
|
-
expect(endpoint_values.to_s).to eq(
|
|
71
|
+
expect(endpoint_values.to_s).to eq({ :endpointId => 'endpoint-2', :type => 'WEBRTC', :status => 'DISCONNECTED', :creationTimestamp => '2024-02-01T00:00:00Z', :expirationTimestamp => '2024-02-02T00:00:00Z', :tag => 'custom tag', :devices => [{ :device_id => 'device-1', :device_name => 'Phone', :status => 'CONNECTED', :creation_timestamp => '2024-02-01T00:00:00Z' }] }.to_s)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -64,7 +64,7 @@ describe Bandwidth::Endpoints do
|
|
|
64
64
|
|
|
65
65
|
describe '#to_s' do
|
|
66
66
|
it 'returns a string representation of the object' do
|
|
67
|
-
expect(endpoints_values.to_s).to eq(
|
|
67
|
+
expect(endpoints_values.to_s).to eq({ :endpointId => 'abc123', :type => 'WEBRTC', :status => 'CONNECTED', :creationTimestamp => '2024-01-01T00:00:00Z', :expirationTimestamp => '2024-01-02T00:00:00Z', :tag => 'custom tag' }.to_s)
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
@@ -55,7 +55,7 @@ describe Bandwidth::ErrorObject do
|
|
|
55
55
|
|
|
56
56
|
describe '#to_s' do
|
|
57
57
|
it 'returns a string representation of the object' do
|
|
58
|
-
expect(error_object_values.to_s).to eq(
|
|
58
|
+
expect(error_object_values.to_s).to eq({ :type => 'validation', :description => 'bad input', :source => { :field => 'phoneNumber' } }.to_s)
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -52,7 +52,7 @@ describe Bandwidth::ErrorSource do
|
|
|
52
52
|
|
|
53
53
|
describe '#to_s' do
|
|
54
54
|
it 'returns a string representation of the object' do
|
|
55
|
-
expect(error_source_values.to_s).to eq(
|
|
55
|
+
expect(error_source_values.to_s).to eq({ :parameter => 'phoneNumber', :field => 'to', :header => 'X-Request-Id', :reference => '/messages/123' }.to_s)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
@@ -58,7 +58,7 @@ describe Bandwidth::FailureWebhook do
|
|
|
58
58
|
|
|
59
59
|
describe '#to_s' do
|
|
60
60
|
it 'returns a string representation of the object' do
|
|
61
|
-
expect(failure_webhook_values.to_s).to eq(
|
|
61
|
+
expect(failure_webhook_values.to_s).to eq({ :accountId => '9900000', :phoneNumber => '+18005551234', :errorCode => '400', :errorMessage => 'bad request', :errors => ['missing field'], :internalTicketNumber => 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' }.to_s)
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -46,7 +46,7 @@ describe Bandwidth::FieldError do
|
|
|
46
46
|
|
|
47
47
|
describe '#to_s' do
|
|
48
48
|
it 'returns a string representation of the object' do
|
|
49
|
-
expect(field_error_values.to_s).to eq(
|
|
49
|
+
expect(field_error_values.to_s).to eq({ :fieldName => 'to', :description => 'invalid phone number' }.to_s)
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -98,7 +98,7 @@ describe Bandwidth::GatherCallback do
|
|
|
98
98
|
|
|
99
99
|
describe '#to_s' do
|
|
100
100
|
it 'returns a string representation of the object' do
|
|
101
|
-
expect(gather_callback_values.to_s).to eq(
|
|
101
|
+
expect(gather_callback_values.to_s).to eq({ :eventType => 'gather', :eventTime => '2022-06-16T13:15:07.160Z', :accountId => '9900000', :applicationId => '04e88489-df02-4e34-a0ee-27a91849555f', :from => '+19195554321', :to => '+19195551234', :direction => 'inbound', :callId => 'c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :digits => '123', :callUrl => 'https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :enqueuedTime => '2022-06-16T13:15:07.160Z', :startTime => '2022-06-16T13:15:07.160Z', :answerTime => '2022-06-16T13:15:18.126Z', :parentCallId => 'c-95ac29a2-1331029c-2cb0-4a07-b215-b22865662d99', :terminatingDigit => '#', :transferCallerId => '+19195554321', :transferTo => '+19195551234', :tag => 'custom tag' }.to_s)
|
|
102
102
|
end
|
|
103
103
|
end
|
|
104
104
|
|
|
@@ -51,7 +51,7 @@ describe Bandwidth::GetAsyncBulkLookupResponseData do
|
|
|
51
51
|
|
|
52
52
|
describe '#to_s' do
|
|
53
53
|
it 'returns a string representation of the object' do
|
|
54
|
-
expect(get_async_bulk_lookup_response_data_values.to_s).to eq(
|
|
54
|
+
expect(get_async_bulk_lookup_response_data_values.to_s).to eq({ :requestId => 'abc-123', :status => 'COMPLETE', :results => [{ :phoneNumber => '+19195551234' }] }.to_s)
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
@@ -49,7 +49,7 @@ describe Bandwidth::GetAsyncBulkLookupResponse do
|
|
|
49
49
|
|
|
50
50
|
describe '#to_s' do
|
|
51
51
|
it 'returns a string representation of the object' do
|
|
52
|
-
expect(get_async_bulk_lookup_response_values.to_s).to eq(
|
|
52
|
+
expect(get_async_bulk_lookup_response_values.to_s).to eq({ :links => [{ :href => 'https://example.com', :rel => 'self', :method => 'GET' }], :data => { :requestId => 'abc-123' }, :errors => [{ :code => '400', :description => 'bad request', :type => 'validation' }] }.to_s)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -88,7 +88,7 @@ describe Bandwidth::InboundCallbackMessage do
|
|
|
88
88
|
|
|
89
89
|
describe '#to_s' do
|
|
90
90
|
it 'returns a string representation of the object' do
|
|
91
|
-
expect(inbound_callback_message_values.to_s).to eq(
|
|
91
|
+
expect(inbound_callback_message_values.to_s).to eq({ :id => '1589228074636lm4k2je7j7jklbn2', :owner => '+19195554321', :applicationId => '93de2206-9669-4e07-948d-329f4b722ee2', :time => '2022-06-16T13:15:07.160Z', :segmentCount => 2, :direction => 'in', :to => ['+19195551234'], :from => '+19195554321', :text => 'Hello world', :tag => 'custom tag', :media => ['https://dev.bandwidth.com/images/bandwidth-logo.png'], :priority => 'default', :channel => 'SMS' }.to_s)
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -86,7 +86,7 @@ describe Bandwidth::InboundCallback do
|
|
|
86
86
|
|
|
87
87
|
describe '#to_s' do
|
|
88
88
|
it 'returns a string representation of the object' do
|
|
89
|
-
expect(inbound_callback_values.to_s).to eq(
|
|
89
|
+
expect(inbound_callback_values.to_s).to eq({ :time => '2022-06-16T13:15:07.160Z', :type => 'message-received', :to => '+19195551234', :description => 'Incoming message received', :message => { :id => '1589228074636lm4k2je7j7jklbn2', :owner => '+19195554321', :applicationId => '93de2206-9669-4e07-948d-329f4b722ee2', :time => '2022-06-16T13:15:07.160Z', :segmentCount => 1, :direction => 'in', :to => ['+19195551234'], :from => '+19195554321', :text => 'Hello world' }, :carrierName => 'Verizon' }.to_s)
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
|
|
@@ -14,7 +14,9 @@ describe Bandwidth::InitiateCallback do
|
|
|
14
14
|
start_time: '2022-06-16T13:15:07.160Z',
|
|
15
15
|
diversion: { reason: 'unconditional', privacy: 'off' },
|
|
16
16
|
stir_shaken: { verstat: 'TN-Validation-Passed', attestationIndicator: 'A', originatingId: '527c7d1f-22a4-4ec1-ad19-1a4ec9466cdb' },
|
|
17
|
-
uui: 'aGVsbG8sIHdvcmxkIQ==;encoding=base64'
|
|
17
|
+
uui: 'aGVsbG8sIHdvcmxkIQ==;encoding=base64',
|
|
18
|
+
sip_call_id: 'sip-call-id-12345',
|
|
19
|
+
sip_headers: { 'X-Custom-Header' => 'custom-value' }
|
|
18
20
|
}) }
|
|
19
21
|
|
|
20
22
|
describe '#initialize' do
|
|
@@ -58,7 +60,9 @@ describe Bandwidth::InitiateCallback do
|
|
|
58
60
|
startTime: '2022-06-16T13:15:07.160Z',
|
|
59
61
|
diversion: { reason: 'unconditional', privacy: 'off' },
|
|
60
62
|
stirShaken: { verstat: 'TN-Validation-Passed', attestationIndicator: 'A', originatingId: '527c7d1f-22a4-4ec1-ad19-1a4ec9466cdb' },
|
|
61
|
-
uui: 'aGVsbG8sIHdvcmxkIQ==;encoding=base64'
|
|
63
|
+
uui: 'aGVsbG8sIHdvcmxkIQ==;encoding=base64',
|
|
64
|
+
sipCallId: 'sip-call-id-12345',
|
|
65
|
+
sipHeaders: { 'X-Custom-Header' => 'custom-value' }
|
|
62
66
|
})
|
|
63
67
|
expect(initiate_callback_from_hash).to be_instance_of(Bandwidth::InitiateCallback)
|
|
64
68
|
expect(initiate_callback_from_hash.event_type).to eq('initiate')
|
|
@@ -76,12 +80,15 @@ describe Bandwidth::InitiateCallback do
|
|
|
76
80
|
expect(initiate_callback_from_hash.stir_shaken).to be_instance_of(Bandwidth::StirShaken)
|
|
77
81
|
expect(initiate_callback_from_hash.stir_shaken.verstat).to eq('TN-Validation-Passed')
|
|
78
82
|
expect(initiate_callback_from_hash.uui).to eq('aGVsbG8sIHdvcmxkIQ==;encoding=base64')
|
|
83
|
+
expect(initiate_callback_from_hash.sip_call_id).to eq('sip-call-id-12345')
|
|
84
|
+
expect(initiate_callback_from_hash.sip_headers).to be_instance_of(Hash)
|
|
85
|
+
expect(initiate_callback_from_hash.sip_headers['X-Custom-Header']).to eq('custom-value')
|
|
79
86
|
end
|
|
80
87
|
end
|
|
81
88
|
|
|
82
89
|
describe '#to_s' do
|
|
83
90
|
it 'returns a string representation of the object' do
|
|
84
|
-
expect(initiate_callback_values.to_s).to eq(
|
|
91
|
+
expect(initiate_callback_values.to_s).to eq({ :eventType => 'initiate', :eventTime => '2022-06-16T13:15:07.160Z', :accountId => '9900000', :applicationId => '04e88489-df02-4e34-a0ee-27a91849555f', :from => '+19195554321', :to => '+19195551234', :direction => 'inbound', :callId => 'c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :callUrl => 'https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :startTime => '2022-06-16T13:15:07.160Z', :diversion => { :reason => 'unconditional', :privacy => 'off' }, :stirShaken => { :verstat => 'TN-Validation-Passed', :attestationIndicator => 'A', :originatingId => '527c7d1f-22a4-4ec1-ad19-1a4ec9466cdb' }, :uui => 'aGVsbG8sIHdvcmxkIQ==;encoding=base64', :sipCallId => 'sip-call-id-12345', :sipHeaders => { 'X-Custom-Header' => 'custom-value' } }.to_s)
|
|
85
92
|
end
|
|
86
93
|
end
|
|
87
94
|
|
|
@@ -107,7 +114,9 @@ describe Bandwidth::InitiateCallback do
|
|
|
107
114
|
startTime: '2022-06-16T13:15:07.160Z',
|
|
108
115
|
diversion: { reason: 'unconditional', privacy: 'off' },
|
|
109
116
|
stirShaken: { verstat: 'TN-Validation-Passed', attestationIndicator: 'A', originatingId: '527c7d1f-22a4-4ec1-ad19-1a4ec9466cdb' },
|
|
110
|
-
uui: 'aGVsbG8sIHdvcmxkIQ==;encoding=base64'
|
|
117
|
+
uui: 'aGVsbG8sIHdvcmxkIQ==;encoding=base64',
|
|
118
|
+
sipCallId: 'sip-call-id-12345',
|
|
119
|
+
sipHeaders: { 'X-Custom-Header' => 'custom-value' }
|
|
111
120
|
})
|
|
112
121
|
end
|
|
113
122
|
end
|
|
@@ -49,7 +49,7 @@ describe Bandwidth::LinkSchema do
|
|
|
49
49
|
|
|
50
50
|
describe '#to_s' do
|
|
51
51
|
it 'returns a string representation of the object' do
|
|
52
|
-
expect(link_schema_values.to_s).to eq(
|
|
52
|
+
expect(link_schema_values.to_s).to eq({ :href => 'https://example.com', :rel => 'self', :method => 'GET' }.to_s)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -46,7 +46,7 @@ describe Bandwidth::Link do
|
|
|
46
46
|
|
|
47
47
|
describe '#to_s' do
|
|
48
48
|
it 'returns a string representation of the object' do
|
|
49
|
-
expect(link_values.to_s).to eq(
|
|
49
|
+
expect(link_values.to_s).to eq({ :rel => 'next', :href => 'https://example.com/page/2' }.to_s)
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -52,7 +52,7 @@ describe Bandwidth::LinksObject do
|
|
|
52
52
|
|
|
53
53
|
describe '#to_s' do
|
|
54
54
|
it 'returns a string representation of the object' do
|
|
55
|
-
expect(links_object_values.to_s).to eq(
|
|
55
|
+
expect(links_object_values.to_s).to eq({ :first => 'https://example.com/page/1', :next => 'https://example.com/page/2', :previous => 'https://example.com/page/0', :last => 'https://example.com/page/9' }.to_s)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
@@ -64,7 +64,7 @@ describe Bandwidth::ListEndpointsResponse do
|
|
|
64
64
|
|
|
65
65
|
describe '#to_s' do
|
|
66
66
|
it 'returns a string representation of the object' do
|
|
67
|
-
expect(list_endpoints_response_values.to_s).to eq(
|
|
67
|
+
expect(list_endpoints_response_values.to_s).to eq({ :links => [{ :href => 'https://example.com', :rel => 'self', :method => 'GET' }], :page => { :pageSize => 25, :totalElements => 100, :totalPages => 4, :pageNumber => 1 }, :data => [{ :endpointId => 'abc123', :type => 'WEBRTC', :status => 'CONNECTED', :creationTimestamp => '2024-01-01T00:00:00Z', :expirationTimestamp => '2024-01-02T00:00:00Z' }], :errors => [{ :type => 'validation', :description => 'bad input' }] }.to_s)
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
@@ -122,7 +122,7 @@ describe Bandwidth::ListMessageItem do
|
|
|
122
122
|
|
|
123
123
|
describe '#to_s' do
|
|
124
124
|
it 'returns a string representation of the object' do
|
|
125
|
-
expect(list_message_item_values.to_s).to eq(
|
|
125
|
+
expect(list_message_item_values.to_s).to eq({ :messageId => '1589228074636lm4k2je7j7jklbn2', :accountId => '9900000', :sourceTn => '+19195554321', :destinationTn => '+19195551234', :messageStatus => 'DELIVERED', :messageDirection => 'OUTBOUND', :messageType => 'sms', :segmentCount => 1, :errorCode => 0, :receiveTime => '2022-06-16T13:15:07.160Z', :carrierName => 'verizon', :messageSize => 27, :messageLength => 18, :attachmentCount => 0, :recipientCount => 1, :campaignClass => 'T', :campaignId => 'CABC123', :bwLatency => 1, :carrierLatency => 2, :callingNumberCountryA3 => 'USA', :calledNumberCountryA3 => 'USA', :product => 'MESSAGING-V2', :location => 'loc-1' }.to_s)
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
|
|
@@ -49,7 +49,7 @@ describe Bandwidth::LookupErrorResponse do
|
|
|
49
49
|
|
|
50
50
|
describe '#to_s' do
|
|
51
51
|
it 'returns a string representation of the object' do
|
|
52
|
-
expect(lookup_error_response_values.to_s).to eq(
|
|
52
|
+
expect(lookup_error_response_values.to_s).to eq({ :links => [{ :href => 'https://example.com', :rel => 'self', :method => 'GET' }], :data => { :foo => 'bar' }, :errors => [{ :code => '400', :description => 'bad request', :type => 'validation' }] }.to_s)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -49,7 +49,7 @@ describe Bandwidth::LookupErrorSchemaMeta do
|
|
|
49
49
|
|
|
50
50
|
describe '#to_s' do
|
|
51
51
|
it 'returns a string representation of the object' do
|
|
52
|
-
expect(lookup_error_schema_meta_values.to_s).to eq(
|
|
52
|
+
expect(lookup_error_schema_meta_values.to_s).to eq({ :phoneNumbers => ['+19195551234'], :message => 'invalid phone number', :code => 400 }.to_s)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -56,7 +56,7 @@ describe Bandwidth::LookupErrorSchema do
|
|
|
56
56
|
|
|
57
57
|
describe '#to_s' do
|
|
58
58
|
it 'returns a string representation of the object' do
|
|
59
|
-
expect(lookup_error_schema_values.to_s).to eq(
|
|
59
|
+
expect(lookup_error_schema_values.to_s).to eq({ :code => '404', :description => 'not found', :type => 'validation', :meta => { :phoneNumbers => ['+19195551234'], :message => 'invalid', :code => 404 } }.to_s)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -76,7 +76,7 @@ describe Bandwidth::LookupResult do
|
|
|
76
76
|
|
|
77
77
|
describe '#to_s' do
|
|
78
78
|
it 'returns a string representation of the object' do
|
|
79
|
-
expect(lookup_result_values.to_s).to eq(
|
|
79
|
+
expect(lookup_result_values.to_s).to eq({ :phoneNumber => '+19195551234', :lineType => 'MOBILE', :messagingProvider => 'Bandwidth', :voiceProvider => 'Bandwidth', :countryCodeA3 => 'USA', :deactivationReporter => 'verizon', :deactivationDate => '2024-01-01', :deactivationEvent => 'DEACTIVATED', :latestMessageDeliveryStatus => 'ACTIVE', :initialMessageDeliveryStatusDate => '2024-01-01', :latestMessageDeliveryStatusDate => '2024-01-02', :rcsEnabled => true }.to_s)
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
@@ -89,7 +89,7 @@ describe Bandwidth::MachineDetectionCompleteCallback do
|
|
|
89
89
|
|
|
90
90
|
describe '#to_s' do
|
|
91
91
|
it 'returns a string representation of the object' do
|
|
92
|
-
expect(machine_detection_complete_callback_values.to_s).to eq(
|
|
92
|
+
expect(machine_detection_complete_callback_values.to_s).to eq({ :eventType => 'machineDetectionComplete', :eventTime => '2022-06-16T13:15:07.160Z', :accountId => '9900000', :applicationId => '04e88489-df02-4e34-a0ee-27a91849555f', :from => '+19195554321', :to => '+19195551234', :direction => 'outbound', :callId => 'c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :callUrl => 'https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85', :enqueuedTime => '2022-06-16T13:15:07.160Z', :startTime => '2022-06-16T13:15:07.160Z', :answerTime => '2022-06-16T13:15:18.126Z', :tag => 'custom tag', :machineDetectionResult => { :value => 'human', :duration => 'PT5S' } }.to_s)
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
|
|
@@ -100,7 +100,7 @@ describe Bandwidth::MachineDetectionConfiguration do
|
|
|
100
100
|
|
|
101
101
|
describe '#to_s' do
|
|
102
102
|
it 'returns a string representation of the object' do
|
|
103
|
-
expect(machine_detection_configuration_values.to_s).to eq(
|
|
103
|
+
expect(machine_detection_configuration_values.to_s).to eq({ :mode => 'sync', :detectionTimeout => 20, :silenceTimeout => 12, :speechThreshold => 8, :speechEndThreshold => 4, :machineSpeechEndThreshold => 7, :delayResult => true, :callbackUrl => 'https://example.com/callback', :callbackMethod => 'GET', :username => 'user', :password => 'pass', :fallbackUrl => 'https://example.com/fallback', :fallbackMethod => 'GET', :fallbackUsername => 'fallback-user', :fallbackPassword => 'fallback-pass' }.to_s)
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
106
|
|
|
@@ -46,7 +46,7 @@ describe Bandwidth::MachineDetectionResult do
|
|
|
46
46
|
|
|
47
47
|
describe '#to_s' do
|
|
48
48
|
it 'returns a string representation of the object' do
|
|
49
|
-
expect(machine_detection_result_values.to_s).to eq(
|
|
49
|
+
expect(machine_detection_result_values.to_s).to eq({ :value => 'human', :duration => 'PT5S' }.to_s)
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -49,7 +49,7 @@ describe Bandwidth::Media do
|
|
|
49
49
|
|
|
50
50
|
describe '#to_s' do
|
|
51
51
|
it 'returns a string representation of the object' do
|
|
52
|
-
expect(media_values.to_s).to eq(
|
|
52
|
+
expect(media_values.to_s).to eq({ :content => 'https://example.com/media/1.jpg', :contentLength => 12345, :mediaName => 'image.jpg' }.to_s)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -68,7 +68,7 @@ describe Bandwidth::MessageRequest do
|
|
|
68
68
|
|
|
69
69
|
describe '#to_s' do
|
|
70
70
|
it 'returns a string representation of the object' do
|
|
71
|
-
expect(message_request_values.to_s).to eq(
|
|
71
|
+
expect(message_request_values.to_s).to eq({ :applicationId => '93de2206-9669-4e07-948d-329f4b722ee2', :to => ['+19195551234'], :from => '+19195554321', :text => 'Hello world', :media => ['https://dev.bandwidth.com/images/bandwidth-logo.png'], :tag => 'custom tag', :priority => 'default', :expiration => '2022-06-16T13:45:07.160Z' }.to_s)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -79,7 +79,7 @@ describe Bandwidth::Message do
|
|
|
79
79
|
|
|
80
80
|
describe '#to_s' do
|
|
81
81
|
it 'returns a string representation of the object' do
|
|
82
|
-
expect(message_values.to_s).to eq(
|
|
82
|
+
expect(message_values.to_s).to eq({ :id => '1589228074636lm4k2je7j7jklbn2', :owner => '+19195554321', :applicationId => '93de2206-9669-4e07-948d-329f4b722ee2', :time => '2022-06-16T13:15:07.160Z', :segmentCount => 2, :direction => 'in', :to => ['+19195551234'], :from => '+19195554321', :media => ['https://dev.bandwidth.com/images/bandwidth-logo.png'], :text => 'Hello world', :tag => 'custom tag', :priority => 'default', :expiration => '2022-06-16T13:45:07.160Z' }.to_s)
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
|
|
@@ -56,7 +56,7 @@ describe Bandwidth::MessagesList do
|
|
|
56
56
|
|
|
57
57
|
describe '#to_s' do
|
|
58
58
|
it 'returns a string representation of the object' do
|
|
59
|
-
expect(messages_list_values.to_s).to eq(
|
|
59
|
+
expect(messages_list_values.to_s).to eq({ :totalCount => 1, :pageInfo => { :prevPage => 'https://example.com/prev', :nextPage => 'https://example.com/next', :prevPageToken => 'prev-token', :nextPageToken => 'next-token' }, :messages => [{ :messageId => 'abc-123', :messageLength => 10 }] }.to_s)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -43,7 +43,7 @@ describe Bandwidth::MessagingCodeResponse do
|
|
|
43
43
|
|
|
44
44
|
describe '#to_s' do
|
|
45
45
|
it 'returns a string representation of the object' do
|
|
46
|
-
expect(messaging_code_response_values.to_s).to eq(
|
|
46
|
+
expect(messaging_code_response_values.to_s).to eq({ :messageId => '1589228074636lm4k2je7j7jklbn2' }.to_s)
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -49,7 +49,7 @@ describe Bandwidth::MessagingRequestError do
|
|
|
49
49
|
|
|
50
50
|
describe '#to_s' do
|
|
51
51
|
it 'returns a string representation of the object' do
|
|
52
|
-
expect(messaging_request_error_values.to_s).to eq(
|
|
52
|
+
expect(messaging_request_error_values.to_s).to eq({ :type => 'validation', :description => 'bad input' }.to_s)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -43,7 +43,7 @@ describe Bandwidth::MfaForbiddenRequestError do
|
|
|
43
43
|
|
|
44
44
|
describe '#to_s' do
|
|
45
45
|
it 'returns a string representation of the object' do
|
|
46
|
-
expect(mfa_forbidden_request_error_values.to_s).to eq(
|
|
46
|
+
expect(mfa_forbidden_request_error_values.to_s).to eq({ :message => 'Forbidden request' }.to_s)
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -46,7 +46,7 @@ describe Bandwidth::MfaRequestError do
|
|
|
46
46
|
|
|
47
47
|
describe '#to_s' do
|
|
48
48
|
it 'returns a string representation of the object' do
|
|
49
|
-
expect(mfa_request_error_values.to_s).to eq(
|
|
49
|
+
expect(mfa_request_error_values.to_s).to eq({ :error => 'Invalid request', :requestId => 'req-abc-123' }.to_s)
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -43,7 +43,7 @@ describe Bandwidth::MfaUnauthorizedRequestError do
|
|
|
43
43
|
|
|
44
44
|
describe '#to_s' do
|
|
45
45
|
it 'returns a string representation of the object' do
|
|
46
|
-
expect(mfa_unauthorized_request_error_values.to_s).to eq(
|
|
46
|
+
expect(mfa_unauthorized_request_error_values.to_s).to eq({ :message => 'Unauthorized' }.to_s)
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -45,7 +45,7 @@ describe Bandwidth::MmsMessageContentFile do
|
|
|
45
45
|
|
|
46
46
|
describe '#to_s' do
|
|
47
47
|
it 'returns a string representation of the object' do
|
|
48
|
-
expect(mms_message_content_file_values.to_s).to eq(
|
|
48
|
+
expect(mms_message_content_file_values.to_s).to eq({ :fileUrl => 'https://example.com/image.jpg' }.to_s)
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -48,7 +48,7 @@ describe Bandwidth::MmsMessageContent do
|
|
|
48
48
|
|
|
49
49
|
describe '#to_s' do
|
|
50
50
|
it 'returns a string representation of the object' do
|
|
51
|
-
expect(mms_message_content_values.to_s).to eq(
|
|
51
|
+
expect(mms_message_content_values.to_s).to eq({ :text => 'Hello world', :media => [{ :fileUrl => 'https://dev.bandwidth.com/images/bandwidth-logo.png' }] }.to_s)
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -68,7 +68,7 @@ describe Bandwidth::MultiChannelActionCalendarEvent do
|
|
|
68
68
|
|
|
69
69
|
describe '#to_s' do
|
|
70
70
|
it 'returns a string representation of the object' do
|
|
71
|
-
expect(multi_channel_action_calendar_event_values.to_s).to eq(
|
|
71
|
+
expect(multi_channel_action_calendar_event_values.to_s).to eq({ :type => 'CREATE_CALENDAR_EVENT', :text => 'Add to calendar', :postbackData => 'calendar_postback', :title => 'Bandwidth Demo', :startTime => '2024-06-16T13:15:07.160Z', :endTime => '2024-06-16T14:15:07.160Z', :description => 'A demo of the Bandwidth API' }.to_s)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -58,7 +58,7 @@ describe Bandwidth::MultiChannelChannelListMMSObject do
|
|
|
58
58
|
|
|
59
59
|
describe '#to_s' do
|
|
60
60
|
it 'returns a string representation of the object' do
|
|
61
|
-
expect(multi_channel_channel_list_mms_object_values.to_s).to eq(
|
|
61
|
+
expect(multi_channel_channel_list_mms_object_values.to_s).to eq({ :from => '+19195554321', :applicationId => '93de2206-9669-4e07-948d-329f4b722ee2', :channel => 'MMS', :content => { :text => 'Hello world' } }.to_s)
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -62,7 +62,7 @@ describe Bandwidth::MultiChannelChannelListMMSResponseObject do
|
|
|
62
62
|
|
|
63
63
|
describe '#to_s' do
|
|
64
64
|
it 'returns a string representation of the object' do
|
|
65
|
-
expect(multi_channel_channel_list_mms_response_object_values.to_s).to eq(
|
|
65
|
+
expect(multi_channel_channel_list_mms_response_object_values.to_s).to eq({ :from => '+19195554321', :applicationId => '93de2206-9669-4e07-948d-329f4b722ee2', :channel => 'MMS', :content => { :text => 'Hello world' }, :owner => '+19195554321' }.to_s)
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
|