twilio-ruby 3.11.5 → 5.0.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/.gitignore +4 -1
- data/.rubocop.yml +21 -0
- data/.rubocop_todo.yml +187 -0
- data/.travis.yml +10 -10
- data/AUTHORS.md +21 -0
- data/CHANGES.md +351 -0
- data/Gemfile +8 -1
- data/{LICENSE → LICENSE.md} +13 -11
- data/Makefile +15 -3
- data/README.md +90 -95
- data/Rakefile +59 -7
- data/VERSIONS.md +64 -0
- data/examples/examples.rb +62 -49
- data/examples/{print-call-log.rb → print_call_log.rb} +7 -7
- data/lib/rack/twilio_webhook_authentication.rb +46 -0
- data/lib/twilio-ruby/framework/domain.rb +34 -0
- data/lib/twilio-ruby/framework/error.rb +30 -0
- data/lib/twilio-ruby/framework/helper.rb +9 -0
- data/lib/twilio-ruby/framework/page.rb +101 -0
- data/lib/twilio-ruby/framework/resource.rb +21 -0
- data/lib/twilio-ruby/framework/serialize.rb +70 -0
- data/lib/twilio-ruby/framework/twilio_response.rb +15 -0
- data/lib/twilio-ruby/framework/values.rb +7 -0
- data/lib/twilio-ruby/framework/version.rb +164 -0
- data/lib/twilio-ruby/http/http_client.rb +46 -0
- data/lib/twilio-ruby/jwt/access_token.rb +232 -0
- data/lib/twilio-ruby/jwt/client_capability.rb +102 -0
- data/lib/twilio-ruby/jwt/jwt.rb +50 -0
- data/lib/twilio-ruby/jwt/task_router.rb +174 -0
- data/lib/twilio-ruby/rest/accounts/v1/credential/public_key.rb +370 -0
- data/lib/twilio-ruby/rest/accounts/v1/credential.rb +105 -0
- data/lib/twilio-ruby/rest/accounts/v1.rb +39 -0
- data/lib/twilio-ruby/rest/accounts.rb +36 -9
- data/lib/twilio-ruby/rest/api/v2010/account/address/dependent_phone_number.rb +265 -0
- data/lib/twilio-ruby/rest/api/v2010/account/address.rb +509 -0
- data/lib/twilio-ruby/rest/api/v2010/account/application.rb +620 -0
- data/lib/twilio-ruby/rest/api/v2010/account/authorized_connect_app.rb +331 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +389 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +389 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +389 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +370 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +296 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +317 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/notification.rb +427 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +379 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call.rb +799 -0
- data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +515 -0
- data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +455 -0
- data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +413 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +445 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +445 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +445 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +786 -0
- data/lib/twilio-ruby/rest/api/v2010/account/key.rb +336 -0
- data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +165 -0
- data/lib/twilio-ruby/rest/api/v2010/account/message/media.rb +355 -0
- data/lib/twilio-ruby/rest/api/v2010/account/message.rb +583 -0
- data/lib/twilio-ruby/rest/api/v2010/account/new_key.rb +153 -0
- data/lib/twilio-ruby/rest/api/v2010/account/new_signing_key.rb +153 -0
- data/lib/twilio-ruby/rest/api/v2010/account/notification.rb +418 -0
- data/lib/twilio-ruby/rest/api/v2010/account/outgoing_caller_id.rb +377 -0
- data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +345 -0
- data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +438 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload.rb +378 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +397 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +375 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +479 -0
- data/lib/twilio-ruby/rest/api/v2010/account/short_code.rb +430 -0
- data/lib/twilio-ruby/rest/api/v2010/account/signing_key.rb +336 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list/credential.rb +395 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list.rb +419 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +361 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +361 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +570 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +406 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +424 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +174 -0
- data/lib/twilio-ruby/rest/api/v2010/account/token.rb +168 -0
- data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +366 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +304 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +418 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/trigger.rb +507 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +127 -0
- data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +161 -0
- data/lib/twilio-ruby/rest/api/v2010/account.rb +1098 -0
- data/lib/twilio-ruby/rest/api/v2010.rb +147 -0
- data/lib/twilio-ruby/rest/api.rb +234 -0
- data/lib/twilio-ruby/rest/chat/v1/credential.rb +403 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +386 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +431 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +447 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +554 -0
- data/lib/twilio-ruby/rest/chat/v1/service/role.rb +396 -0
- data/lib/twilio-ruby/rest/chat/v1/service/user/user_channel.rb +244 -0
- data/lib/twilio-ruby/rest/chat/v1/service/user.rb +467 -0
- data/lib/twilio-ruby/rest/chat/v1/service.rb +935 -0
- data/lib/twilio-ruby/rest/chat/v1.rb +56 -0
- data/lib/twilio-ruby/rest/chat/v2/credential.rb +403 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +386 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +431 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +447 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +554 -0
- data/lib/twilio-ruby/rest/chat/v2/service/role.rb +396 -0
- data/lib/twilio-ruby/rest/chat/v2/service/user/user_channel.rb +244 -0
- data/lib/twilio-ruby/rest/chat/v2/service/user.rb +467 -0
- data/lib/twilio-ruby/rest/chat/v2/service.rb +688 -0
- data/lib/twilio-ruby/rest/chat/v2.rb +56 -0
- data/lib/twilio-ruby/rest/chat.rb +59 -0
- data/lib/twilio-ruby/rest/client.rb +307 -215
- data/lib/twilio-ruby/rest/ip_messaging/v1/credential.rb +403 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +386 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +431 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +447 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +554 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +396 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/user/user_channel.rb +244 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +467 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +935 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1.rb +56 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/credential.rb +403 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +386 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +431 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +447 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +554 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +396 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_channel.rb +244 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +467 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +688 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2.rb +56 -0
- data/lib/twilio-ruby/rest/ip_messaging.rb +59 -0
- data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +224 -0
- data/lib/twilio-ruby/rest/lookups/v1.rb +41 -0
- data/lib/twilio-ruby/rest/lookups.rb +44 -0
- data/lib/twilio-ruby/rest/monitor/v1/alert.rb +398 -0
- data/lib/twilio-ruby/rest/monitor/v1/event.rb +381 -0
- data/lib/twilio-ruby/rest/monitor/v1.rb +56 -0
- data/lib/twilio-ruby/rest/monitor.rb +52 -0
- data/lib/twilio-ruby/rest/pricing/v1/messaging/country.rb +291 -0
- data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +129 -0
- data/lib/twilio-ruby/rest/pricing/v1/phone_number/country.rb +284 -0
- data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +129 -0
- data/lib/twilio-ruby/rest/pricing/v1/voice/country.rb +291 -0
- data/lib/twilio-ruby/rest/pricing/v1/voice/number.rb +208 -0
- data/lib/twilio-ruby/rest/pricing/v1/voice.rb +150 -0
- data/lib/twilio-ruby/rest/pricing/v1.rb +65 -0
- data/lib/twilio-ruby/rest/pricing.rb +54 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +399 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +418 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +461 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +584 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_channel.rb +315 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +230 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +243 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +527 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +461 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_channel.rb +406 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +223 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +226 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +585 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +230 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +475 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +212 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +712 -0
- data/lib/twilio-ruby/rest/taskrouter/v1.rb +41 -0
- data/lib/twilio-ruby/rest/taskrouter.rb +44 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/credential_list.rb +345 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/ip_access_control_list.rb +345 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/origination_url.rb +430 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/phone_number.rb +478 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +577 -0
- data/lib/twilio-ruby/rest/trunking/v1.rb +41 -0
- data/lib/twilio-ruby/rest/trunking.rb +44 -0
- data/lib/twilio-ruby/rest/video/v1/recording.rb +382 -0
- data/lib/twilio-ruby/rest/video/v1/room/recording.rb +381 -0
- data/lib/twilio-ruby/rest/video/v1/room.rb +485 -0
- data/lib/twilio-ruby/rest/video/v1.rb +56 -0
- data/lib/twilio-ruby/rest/video.rb +52 -0
- data/lib/twilio-ruby/security/request_validator.rb +54 -0
- data/lib/twilio-ruby/twiml/messaging_response.rb +141 -0
- data/lib/twilio-ruby/twiml/twiml.rb +69 -0
- data/lib/twilio-ruby/twiml/voice_response.rb +916 -0
- data/lib/twilio-ruby/util/configuration.rb +7 -0
- data/lib/twilio-ruby/util.rb +1 -1
- data/lib/twilio-ruby/version.rb +1 -1
- data/lib/twilio-ruby.rb +52 -49
- data/spec/framework/serialize_spec.rb +59 -0
- data/spec/holodeck/holodeck.rb +61 -0
- data/spec/holodeck/hologram.rb +4 -0
- data/spec/integration/accounts/v1/credential/public_key_spec.rb +226 -0
- data/spec/integration/accounts/v1/credential_spec.rb +10 -0
- data/spec/integration/api/v2010/account/address/dependent_phone_number_spec.rb +90 -0
- data/spec/integration/api/v2010/account/address_spec.rb +267 -0
- data/spec/integration/api/v2010/account/application_spec.rb +286 -0
- data/spec/integration/api/v2010/account/authorized_connect_app_spec.rb +137 -0
- data/spec/integration/api/v2010/account/available_phone_number/local_spec.rb +101 -0
- data/spec/integration/api/v2010/account/available_phone_number/mobile_spec.rb +100 -0
- data/spec/integration/api/v2010/account/available_phone_number/toll_free_spec.rb +100 -0
- data/spec/integration/api/v2010/account/available_phone_number_spec.rb +128 -0
- data/spec/integration/api/v2010/account/call/feedback_spec.rb +141 -0
- data/spec/integration/api/v2010/account/call/feedback_summary_spec.rb +149 -0
- data/spec/integration/api/v2010/account/call/notification_spec.rb +179 -0
- data/spec/integration/api/v2010/account/call/recording_spec.rb +178 -0
- data/spec/integration/api/v2010/account/call_spec.rb +319 -0
- data/spec/integration/api/v2010/account/conference/participant_spec.rb +283 -0
- data/spec/integration/api/v2010/account/conference_spec.rb +174 -0
- data/spec/integration/api/v2010/account/connect_app_spec.rb +177 -0
- data/spec/integration/api/v2010/account/incoming_phone_number/local_spec.rb +181 -0
- data/spec/integration/api/v2010/account/incoming_phone_number/mobile_spec.rb +181 -0
- data/spec/integration/api/v2010/account/incoming_phone_number/toll_free_spec.rb +181 -0
- data/spec/integration/api/v2010/account/incoming_phone_number_spec.rb +331 -0
- data/spec/integration/api/v2010/account/key_spec.rb +178 -0
- data/spec/integration/api/v2010/account/message/feedback_spec.rb +48 -0
- data/spec/integration/api/v2010/account/message/media_spec.rb +162 -0
- data/spec/integration/api/v2010/account/message_spec.rb +297 -0
- data/spec/integration/api/v2010/account/new_key_spec.rb +45 -0
- data/spec/integration/api/v2010/account/new_signing_key_spec.rb +45 -0
- data/spec/integration/api/v2010/account/notification_spec.rb +172 -0
- data/spec/integration/api/v2010/account/outgoing_caller_id_spec.rb +193 -0
- data/spec/integration/api/v2010/account/queue/member_spec.rb +170 -0
- data/spec/integration/api/v2010/account/queue_spec.rb +242 -0
- data/spec/integration/api/v2010/account/recording/add_on_result/payload_spec.rb +175 -0
- data/spec/integration/api/v2010/account/recording/add_on_result_spec.rb +166 -0
- data/spec/integration/api/v2010/account/recording/transcription_spec.rb +174 -0
- data/spec/integration/api/v2010/account/recording_spec.rb +179 -0
- data/spec/integration/api/v2010/account/short_code_spec.rb +180 -0
- data/spec/integration/api/v2010/account/signing_key_spec.rb +178 -0
- data/spec/integration/api/v2010/account/sip/credential_list/credential_spec.rb +257 -0
- data/spec/integration/api/v2010/account/sip/credential_list_spec.rb +246 -0
- data/spec/integration/api/v2010/account/sip/domain/credential_list_mapping_spec.rb +210 -0
- data/spec/integration/api/v2010/account/sip/domain/ip_access_control_list_mapping_spec.rb +220 -0
- data/spec/integration/api/v2010/account/sip/domain_spec.rb +283 -0
- data/spec/integration/api/v2010/account/sip/ip_access_control_list/ip_address_spec.rb +261 -0
- data/spec/integration/api/v2010/account/sip/ip_access_control_list_spec.rb +256 -0
- data/spec/integration/api/v2010/account/sip_spec.rb +10 -0
- data/spec/integration/api/v2010/account/token_spec.rb +56 -0
- data/spec/integration/api/v2010/account/transcription_spec.rb +167 -0
- data/spec/integration/api/v2010/account/usage/record/all_time_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record/daily_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record/last_month_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record/monthly_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record/this_month_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record/today_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record/yearly_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record/yesterday_spec.rb +111 -0
- data/spec/integration/api/v2010/account/usage/record_spec.rb +108 -0
- data/spec/integration/api/v2010/account/usage/trigger_spec.rb +283 -0
- data/spec/integration/api/v2010/account/usage_spec.rb +10 -0
- data/spec/integration/api/v2010/account/validation_request_spec.rb +48 -0
- data/spec/integration/api/v2010/account_spec.rb +254 -0
- data/spec/integration/chat/v1/credential_spec.rb +223 -0
- data/spec/integration/chat/v1/service/channel/invite_spec.rb +210 -0
- data/spec/integration/chat/v1/service/channel/member_spec.rb +284 -0
- data/spec/integration/chat/v1/service/channel/message_spec.rb +294 -0
- data/spec/integration/chat/v1/service/channel_spec.rb +275 -0
- data/spec/integration/chat/v1/service/role_spec.rb +263 -0
- data/spec/integration/chat/v1/service/user/user_channel_spec.rb +92 -0
- data/spec/integration/chat/v1/service/user_spec.rb +266 -0
- data/spec/integration/chat/v1/service_spec.rb +299 -0
- data/spec/integration/chat/v2/credential_spec.rb +223 -0
- data/spec/integration/chat/v2/service/channel/invite_spec.rb +210 -0
- data/spec/integration/chat/v2/service/channel/member_spec.rb +284 -0
- data/spec/integration/chat/v2/service/channel/message_spec.rb +294 -0
- data/spec/integration/chat/v2/service/channel_spec.rb +275 -0
- data/spec/integration/chat/v2/service/role_spec.rb +263 -0
- data/spec/integration/chat/v2/service/user/user_channel_spec.rb +92 -0
- data/spec/integration/chat/v2/service/user_spec.rb +266 -0
- data/spec/integration/chat/v2/service_spec.rb +325 -0
- data/spec/integration/ip_messaging/v1/credential_spec.rb +223 -0
- data/spec/integration/ip_messaging/v1/service/channel/invite_spec.rb +210 -0
- data/spec/integration/ip_messaging/v1/service/channel/member_spec.rb +284 -0
- data/spec/integration/ip_messaging/v1/service/channel/message_spec.rb +294 -0
- data/spec/integration/ip_messaging/v1/service/channel_spec.rb +275 -0
- data/spec/integration/ip_messaging/v1/service/role_spec.rb +263 -0
- data/spec/integration/ip_messaging/v1/service/user/user_channel_spec.rb +92 -0
- data/spec/integration/ip_messaging/v1/service/user_spec.rb +266 -0
- data/spec/integration/ip_messaging/v1/service_spec.rb +299 -0
- data/spec/integration/ip_messaging/v2/credential_spec.rb +223 -0
- data/spec/integration/ip_messaging/v2/service/channel/invite_spec.rb +210 -0
- data/spec/integration/ip_messaging/v2/service/channel/member_spec.rb +284 -0
- data/spec/integration/ip_messaging/v2/service/channel/message_spec.rb +294 -0
- data/spec/integration/ip_messaging/v2/service/channel_spec.rb +275 -0
- data/spec/integration/ip_messaging/v2/service/role_spec.rb +263 -0
- data/spec/integration/ip_messaging/v2/service/user/user_channel_spec.rb +92 -0
- data/spec/integration/ip_messaging/v2/service/user_spec.rb +266 -0
- data/spec/integration/ip_messaging/v2/service_spec.rb +325 -0
- data/spec/integration/lookups/v1/phone_number_spec.rb +60 -0
- data/spec/integration/monitor/v1/alert_spec.rb +161 -0
- data/spec/integration/monitor/v1/event_spec.rb +148 -0
- data/spec/integration/pricing/v1/messaging/country_spec.rb +137 -0
- data/spec/integration/pricing/v1/messaging_spec.rb +10 -0
- data/spec/integration/pricing/v1/phone_number/country_spec.rb +128 -0
- data/spec/integration/pricing/v1/phone_number_spec.rb +10 -0
- data/spec/integration/pricing/v1/voice/country_spec.rb +266 -0
- data/spec/integration/pricing/v1/voice/number_spec.rb +54 -0
- data/spec/integration/pricing/v1/voice_spec.rb +10 -0
- data/spec/integration/taskrouter/v1/workspace/activity_spec.rb +236 -0
- data/spec/integration/taskrouter/v1/workspace/event_spec.rb +157 -0
- data/spec/integration/taskrouter/v1/workspace/task/reservation_spec.rb +192 -0
- data/spec/integration/taskrouter/v1/workspace/task_channel_spec.rb +127 -0
- data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_statistics_spec.rb +106 -0
- data/spec/integration/taskrouter/v1/workspace/task_queue/task_queues_statistics_spec.rb +144 -0
- data/spec/integration/taskrouter/v1/workspace/task_queue_spec.rb +292 -0
- data/spec/integration/taskrouter/v1/workspace/task_spec.rb +324 -0
- data/spec/integration/taskrouter/v1/workspace/worker/reservation_spec.rb +192 -0
- data/spec/integration/taskrouter/v1/workspace/worker/worker_channel_spec.rb +201 -0
- data/spec/integration/taskrouter/v1/workspace/worker/worker_statistics_spec.rb +107 -0
- data/spec/integration/taskrouter/v1/workspace/worker/workers_statistics_spec.rb +141 -0
- data/spec/integration/taskrouter/v1/workspace/worker_spec.rb +282 -0
- data/spec/integration/taskrouter/v1/workspace/workflow/workflow_statistics_spec.rb +69 -0
- data/spec/integration/taskrouter/v1/workspace/workflow_spec.rb +265 -0
- data/spec/integration/taskrouter/v1/workspace/workspace_statistics_spec.rb +103 -0
- data/spec/integration/taskrouter/v1/workspace_spec.rb +287 -0
- data/spec/integration/trunking/v1/trunk/credential_list_spec.rb +192 -0
- data/spec/integration/trunking/v1/trunk/ip_access_control_list_spec.rb +192 -0
- data/spec/integration/trunking/v1/trunk/origination_url_spec.rb +250 -0
- data/spec/integration/trunking/v1/trunk/phone_number_spec.rb +267 -0
- data/spec/integration/trunking/v1/trunk_spec.rb +276 -0
- data/spec/integration/video/v1/recording_spec.rb +165 -0
- data/spec/integration/video/v1/room/recording_spec.rb +146 -0
- data/spec/integration/video/v1/room_spec.rb +237 -0
- data/spec/jwt/access_token_spec.rb +130 -0
- data/spec/jwt/client_capability_spec.rb +104 -0
- data/spec/jwt/task_router_spec.rb +172 -0
- data/spec/rack/twilio_webhook_authentication_spec.rb +106 -0
- data/spec/security/request_validator_spec.rb +113 -0
- data/spec/spec_helper.rb +29 -3
- data/spec/support/fakeweb.rb +2 -0
- data/spec/twilio_spec.rb +15 -0
- data/spec/twiml/messaging_response_spec.rb +90 -0
- data/spec/twiml/voice_response_spec.rb +474 -0
- data/spec/util/configuration_spec.rb +15 -0
- data/spec/util/url_encode_spec.rb +2 -2
- data/twilio-ruby.gemspec +32 -26
- metadata +502 -152
- data/CHANGES +0 -47
- data/docs/Makefile +0 -130
- data/docs/_themes/LICENSE +0 -45
- data/docs/_themes/README.rst +0 -25
- data/docs/_themes/flask_theme_support.py +0 -86
- data/docs/_themes/kr/layout.html +0 -32
- data/docs/_themes/kr/relations.html +0 -19
- data/docs/_themes/kr/static/flasky.css_t +0 -469
- data/docs/_themes/kr/static/small_flask.css +0 -70
- data/docs/_themes/kr/theme.conf +0 -7
- data/docs/_themes/kr_small/layout.html +0 -22
- data/docs/_themes/kr_small/static/flasky.css_t +0 -287
- data/docs/_themes/kr_small/theme.conf +0 -10
- data/docs/changelog.rst +0 -1
- data/docs/conf.py +0 -266
- data/docs/faq.rst +0 -42
- data/docs/getting-started.rst +0 -91
- data/docs/index.rst +0 -109
- data/docs/make.bat +0 -170
- data/docs/src/pip-delete-this-directory.txt +0 -5
- data/docs/usage/accounts.rst +0 -89
- data/docs/usage/applications.rst +0 -108
- data/docs/usage/basics.rst +0 -102
- data/docs/usage/caller-ids.rst +0 -45
- data/docs/usage/conferences.rst +0 -108
- data/docs/usage/errors.rst +0 -29
- data/docs/usage/messages.rst +0 -109
- data/docs/usage/notifications.rst +0 -70
- data/docs/usage/phone-calls.rst +0 -166
- data/docs/usage/phone-numbers.rst +0 -174
- data/docs/usage/queues.rst +0 -112
- data/docs/usage/recordings.rst +0 -96
- data/docs/usage/sip.rst +0 -103
- data/docs/usage/token-generation.rst +0 -81
- data/docs/usage/transcriptions.rst +0 -31
- data/docs/usage/twiml.rst +0 -69
- data/docs/usage/validation.rst +0 -71
- data/lib/twilio-ruby/rest/applications.rb +0 -6
- data/lib/twilio-ruby/rest/authorized_connect_apps.rb +0 -6
- data/lib/twilio-ruby/rest/available_phone_numbers/country.rb +0 -10
- data/lib/twilio-ruby/rest/available_phone_numbers/local.rb +0 -11
- data/lib/twilio-ruby/rest/available_phone_numbers/mobile.rb +0 -11
- data/lib/twilio-ruby/rest/available_phone_numbers/toll_free.rb +0 -11
- data/lib/twilio-ruby/rest/available_phone_numbers.rb +0 -13
- data/lib/twilio-ruby/rest/calls.rb +0 -28
- data/lib/twilio-ruby/rest/conferences/participants.rb +0 -23
- data/lib/twilio-ruby/rest/conferences.rb +0 -12
- data/lib/twilio-ruby/rest/connect_apps.rb +0 -6
- data/lib/twilio-ruby/rest/errors.rb +0 -14
- data/lib/twilio-ruby/rest/incoming_phone_numbers/local.rb +0 -13
- data/lib/twilio-ruby/rest/incoming_phone_numbers/mobile.rb +0 -13
- data/lib/twilio-ruby/rest/incoming_phone_numbers/toll_free.rb +0 -13
- data/lib/twilio-ruby/rest/incoming_phone_numbers.rb +0 -17
- data/lib/twilio-ruby/rest/instance_resource.rb +0 -101
- data/lib/twilio-ruby/rest/list_resource.rb +0 -110
- data/lib/twilio-ruby/rest/media.rb +0 -14
- data/lib/twilio-ruby/rest/messages.rb +0 -17
- data/lib/twilio-ruby/rest/notifications.rb +0 -6
- data/lib/twilio-ruby/rest/outgoing_caller_ids.rb +0 -25
- data/lib/twilio-ruby/rest/queues/members.rb +0 -29
- data/lib/twilio-ruby/rest/queues.rb +0 -12
- data/lib/twilio-ruby/rest/recordings.rb +0 -35
- data/lib/twilio-ruby/rest/sandbox.rb +0 -5
- data/lib/twilio-ruby/rest/sip/credential_lists/credentials.rb +0 -6
- data/lib/twilio-ruby/rest/sip/credential_lists.rb +0 -11
- data/lib/twilio-ruby/rest/sip/domains/credential_list_mappings.rb +0 -6
- data/lib/twilio-ruby/rest/sip/domains/ip_access_control_list_mappings.rb +0 -6
- data/lib/twilio-ruby/rest/sip/domains.rb +0 -12
- data/lib/twilio-ruby/rest/sip/ip_access_control_lists/ip_addresses.rb +0 -6
- data/lib/twilio-ruby/rest/sip/ip_access_control_lists.rb +0 -11
- data/lib/twilio-ruby/rest/sip.rb +0 -12
- data/lib/twilio-ruby/rest/sms/messages.rb +0 -15
- data/lib/twilio-ruby/rest/sms/short_codes.rb +0 -8
- data/lib/twilio-ruby/rest/sms.rb +0 -11
- data/lib/twilio-ruby/rest/transcriptions.rb +0 -6
- data/lib/twilio-ruby/rest/usage/records.rb +0 -21
- data/lib/twilio-ruby/rest/usage/triggers.rb +0 -12
- data/lib/twilio-ruby/rest/usage.rb +0 -10
- data/lib/twilio-ruby/rest/utils.rb +0 -25
- data/lib/twilio-ruby/twiml/response.rb +0 -15
- data/lib/twilio-ruby/util/capability.rb +0 -61
- data/lib/twilio-ruby/util/request_validator.rb +0 -22
- data/spec/rest/account_spec.rb +0 -58
- data/spec/rest/call_spec.rb +0 -18
- data/spec/rest/client_spec.rb +0 -100
- data/spec/rest/conference_spec.rb +0 -9
- data/spec/rest/instance_resource_spec.rb +0 -15
- data/spec/rest/message_spec.rb +0 -12
- data/spec/rest/numbers_spec.rb +0 -46
- data/spec/rest/queue_spec.rb +0 -9
- data/spec/rest/recording_spec.rb +0 -9
- data/spec/util/capability_spec.rb +0 -137
- data/spec/util/request_validator_spec.rb +0 -65
data/Makefile
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
|
+
.PHONY: test lint-changed lint
|
|
2
|
+
|
|
3
|
+
CHANGED_RUBY_FILES = $(shell git status --porcelain | grep ".rb" | awk -F ' ' '{print $2}' | tr '\n' ' ')
|
|
4
|
+
|
|
1
5
|
install:
|
|
2
|
-
|
|
3
|
-
gem install twilio-ruby-*.gem
|
|
6
|
+
bundle install; bundle exec rake install
|
|
4
7
|
|
|
5
8
|
test-install:
|
|
6
9
|
bundle install
|
|
7
10
|
|
|
8
|
-
test:
|
|
11
|
+
test: lint
|
|
9
12
|
bundle exec rake spec
|
|
10
13
|
|
|
14
|
+
docs:
|
|
15
|
+
yard doc
|
|
16
|
+
|
|
17
|
+
lint:
|
|
18
|
+
rubocop --cache true --parallel
|
|
19
|
+
|
|
11
20
|
authors:
|
|
12
21
|
echo "Authors\n=======\n\nA huge thanks to all of our contributors:\n\n" > AUTHORS.md
|
|
13
22
|
git log --raw | grep "^Author: " | cut -d ' ' -f2- | cut -d '<' -f1 | sed 's/^/- /' | sort | uniq >> AUTHORS.md
|
|
23
|
+
|
|
24
|
+
gem:
|
|
25
|
+
bundle exec rake build | sed -e 's/.*pkg/pkg/g' | sed -e "s/\.$$//g" | xargs gem push
|
data/README.md
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
[](https://travis-ci.org/twilio/twilio-ruby)
|
|
2
|
-
[](http://badge.fury.io/rb/twilio-ruby)
|
|
3
|
-
|
|
4
1
|
# twilio-ruby
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
[
|
|
8
|
-
[
|
|
3
|
+
[][travis]
|
|
4
|
+
[][gem]
|
|
5
|
+
[][codeclimate]
|
|
6
|
+
|
|
7
|
+
A module for using the Twilio REST API and generating valid [TwiML](http://www.twilio.com/docs/api/twiml/ "TwiML - Twilio Markup Language"). [Click here to read the full documentation.][documentation]
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
To install using [Bundler][bundler] grab the latest stable version:
|
|
9
12
|
|
|
10
|
-
|
|
13
|
+
```ruby
|
|
14
|
+
gem 'twilio-ruby', '~> 5.0.0.rc26'
|
|
15
|
+
```
|
|
11
16
|
|
|
12
|
-
|
|
17
|
+
To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
|
|
13
18
|
|
|
14
19
|
```bash
|
|
15
|
-
gem install twilio-ruby
|
|
20
|
+
gem install twilio-ruby -v 5.0.0.rc26
|
|
16
21
|
```
|
|
17
22
|
|
|
18
23
|
To build and install the development branch yourself from the latest source:
|
|
@@ -23,12 +28,20 @@ cd twilio-ruby
|
|
|
23
28
|
make install
|
|
24
29
|
```
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
### Migration from 4.x
|
|
32
|
+
[Upgrade Guide][upgrade]
|
|
33
|
+
|
|
34
|
+
## Documentation
|
|
35
|
+
[Here][documentation]
|
|
36
|
+
|
|
37
|
+
## Feedback
|
|
38
|
+
During the Release Candidate period of this library, please leave all feedback and issues in the [Github Issues][issues] for `twilio-ruby`.
|
|
39
|
+
|
|
40
|
+
## Getting Started
|
|
27
41
|
|
|
28
42
|
### Setup Work
|
|
29
43
|
|
|
30
|
-
```
|
|
31
|
-
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
|
|
44
|
+
```ruby
|
|
32
45
|
require 'twilio-ruby'
|
|
33
46
|
|
|
34
47
|
# put your own credentials here
|
|
@@ -37,71 +50,42 @@ auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
|
|
|
37
50
|
|
|
38
51
|
# set up a client to talk to the Twilio REST API
|
|
39
52
|
@client = Twilio::REST::Client.new account_sid, auth_token
|
|
40
|
-
```
|
|
41
53
|
|
|
42
|
-
|
|
54
|
+
# alternatively, you can preconfigure the client like so
|
|
55
|
+
Twilio.configure do |config|
|
|
56
|
+
config.account_sid = account_sid
|
|
57
|
+
config.auth_token = auth_token
|
|
58
|
+
end
|
|
43
59
|
|
|
44
|
-
|
|
45
|
-
@client.
|
|
46
|
-
:from => '+14159341234',
|
|
47
|
-
:to => '+16105557069',
|
|
48
|
-
:body => 'Hey there!'
|
|
49
|
-
)
|
|
60
|
+
# and then you can create a new client without parameters
|
|
61
|
+
@client = Twilio::REST::Client.new
|
|
50
62
|
```
|
|
51
63
|
|
|
52
|
-
###
|
|
64
|
+
### Make a Call
|
|
53
65
|
|
|
54
|
-
```
|
|
55
|
-
@client.account.
|
|
56
|
-
:
|
|
57
|
-
:
|
|
58
|
-
:
|
|
59
|
-
:media_url => 'http://example.com/smileyface.jpg',
|
|
66
|
+
```ruby
|
|
67
|
+
@client.api.account.calls.create(
|
|
68
|
+
from: '+14159341234',
|
|
69
|
+
to: '+16105557069',
|
|
70
|
+
url: 'http://example.com'
|
|
60
71
|
)
|
|
61
72
|
```
|
|
62
73
|
|
|
63
|
-
###
|
|
74
|
+
### Send an SMS
|
|
64
75
|
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
:
|
|
69
|
-
:
|
|
70
|
-
:url => 'http://example.com/call-handler',
|
|
76
|
+
```ruby
|
|
77
|
+
@client.api.account.messages.create(
|
|
78
|
+
from: '+14159341234',
|
|
79
|
+
to: '+16105557069',
|
|
80
|
+
body: 'Hey there!'
|
|
71
81
|
)
|
|
72
|
-
|
|
73
|
-
# hangup a ringing call, but don't touch it if it's connected
|
|
74
|
-
@call.cancel
|
|
75
|
-
|
|
76
|
-
# if you have the call sid, you can fetch a call object via:
|
|
77
|
-
@call = @client.account.calls.get('CA386025c9bf5d6052a1d1ea42b4d16662')
|
|
78
|
-
|
|
79
|
-
# redirect an in-progress call
|
|
80
|
-
@call.redirect_to('http://example.com/call-redirect')
|
|
81
|
-
|
|
82
|
-
# hangup a call, no matter whether it is ringing or connected
|
|
83
|
-
@call.hangup
|
|
84
82
|
```
|
|
85
83
|
|
|
86
|
-
###
|
|
87
|
-
|
|
88
|
-
``` ruby
|
|
89
|
-
# list calls made or received on or after May 13, 2013
|
|
90
|
-
@client.account.calls.list("start_time>" => "2013-05-13") # Notice we omit the "=" in the "start_time>=" parameter because it is automatically added
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Buy a Phone Number
|
|
94
|
-
|
|
95
|
-
``` ruby
|
|
96
|
-
# print some available numbers
|
|
97
|
-
@numbers = @client.account.available_phone_numbers.get('US').local.list(
|
|
98
|
-
:contains => 'AWESOME'
|
|
99
|
-
)
|
|
100
|
-
@numbers.each {|num| puts num.phone_number}
|
|
84
|
+
### Customizing your HTTP Client
|
|
85
|
+
twilio-ruby uses [Faraday][faraday] to make HTTP requests. You can tell Twilio::REST::Client to use any of the Faraday adapters like so:
|
|
101
86
|
|
|
102
|
-
|
|
103
|
-
@
|
|
104
|
-
@client.account.incoming_phone_numbers.create(:phone_number => @number)
|
|
87
|
+
```ruby
|
|
88
|
+
@client.http_client.adapter = :typhoeus
|
|
105
89
|
```
|
|
106
90
|
|
|
107
91
|
## Getting Started With Client Capability Tokens
|
|
@@ -109,25 +93,27 @@ auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
|
|
|
109
93
|
If you just need to generate a Capability Token for use with Twilio Client, you
|
|
110
94
|
can do this:
|
|
111
95
|
|
|
112
|
-
```
|
|
113
|
-
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
|
|
96
|
+
```ruby
|
|
114
97
|
require 'twilio-ruby'
|
|
115
98
|
|
|
116
99
|
# put your own account credentials here:
|
|
117
|
-
account_sid = '
|
|
118
|
-
auth_token = '
|
|
100
|
+
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
|
101
|
+
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
|
|
119
102
|
|
|
120
103
|
# set up
|
|
121
|
-
capability = Twilio::
|
|
104
|
+
capability = Twilio::JWT::ClientCapability.new account_sid, auth_token
|
|
105
|
+
|
|
122
106
|
|
|
123
107
|
# allow outgoing calls to an application
|
|
124
|
-
|
|
108
|
+
outgoingScope = Twilio::JWT::ClientCapability::OutgoingClientScope.new 'AP11111111111111111111111111111111'
|
|
109
|
+
capability.add_scope(outgoingScope)
|
|
125
110
|
|
|
126
111
|
# allow incoming calls to 'andrew'
|
|
127
|
-
|
|
112
|
+
incomingScope = Twilio::JWT::ClientCapability::IncomingClientScope.new 'tom'
|
|
113
|
+
capability.add_scope(incomingScope)
|
|
128
114
|
|
|
129
115
|
# generate the token string
|
|
130
|
-
@token = capability.
|
|
116
|
+
@token = capability.to_s
|
|
131
117
|
```
|
|
132
118
|
|
|
133
119
|
There is a slightly more detailed document in the [Capability][capability]
|
|
@@ -135,28 +121,26 @@ section of the wiki.
|
|
|
135
121
|
|
|
136
122
|
## Getting Started With TwiML
|
|
137
123
|
|
|
138
|
-
TwiML support is based on the [
|
|
124
|
+
TwiML support is based on the [Builder][builder] library. You can construct a
|
|
139
125
|
TwiML response like this:
|
|
140
126
|
|
|
141
|
-
```
|
|
142
|
-
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
|
|
127
|
+
```ruby
|
|
143
128
|
require 'twilio-ruby'
|
|
144
129
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
r.
|
|
148
|
-
|
|
149
|
-
d.Client 'jenny'
|
|
130
|
+
response = Twilio::TwiML::VoiceResponse.new do |r|
|
|
131
|
+
r.say('hello there', voice: 'alice')
|
|
132
|
+
r.dial(caller_id: '+14159992222') do |d|
|
|
133
|
+
d.client 'jenny'
|
|
150
134
|
end
|
|
151
135
|
end
|
|
152
136
|
|
|
153
137
|
# print the result
|
|
154
|
-
puts response.
|
|
138
|
+
puts response.to_s
|
|
155
139
|
```
|
|
156
140
|
|
|
157
141
|
This will print the following (except for the whitespace):
|
|
158
142
|
|
|
159
|
-
```
|
|
143
|
+
```xml
|
|
160
144
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
161
145
|
<Response>
|
|
162
146
|
<Say voice="alice">hello there</Say>
|
|
@@ -166,16 +150,27 @@ This will print the following (except for the whitespace):
|
|
|
166
150
|
</Response>
|
|
167
151
|
```
|
|
168
152
|
|
|
169
|
-
##
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
[
|
|
181
|
-
[
|
|
153
|
+
## Supported Ruby Versions
|
|
154
|
+
|
|
155
|
+
This library supports and is [tested against][travis] the following Ruby
|
|
156
|
+
implementations:
|
|
157
|
+
|
|
158
|
+
- Ruby 2.4.0
|
|
159
|
+
- Ruby 2.3.0
|
|
160
|
+
- Ruby 2.2.0
|
|
161
|
+
- Ruby 2.1.0
|
|
162
|
+
- Ruby 2.0.0
|
|
163
|
+
|
|
164
|
+
[capability]: https://github.com/twilio/twilio-ruby/wiki/Capability
|
|
165
|
+
[builder]: http://builder.rubyforge.org/
|
|
166
|
+
[examples]: https://github.com/twilio/twilio-ruby/blob/master/examples
|
|
167
|
+
[documentation]: http://twilio.github.io/twilio-ruby
|
|
168
|
+
[wiki]: https://github.com/twilio/twilio-ruby/wiki
|
|
169
|
+
[bundler]: http://bundler.io
|
|
170
|
+
[rubygems]: http://rubygems.org
|
|
171
|
+
[gem]: https://rubygems.org/gems/twilio
|
|
172
|
+
[travis]: http://travis-ci.org/twilio/twilio-ruby
|
|
173
|
+
[codeclimate]: https://codeclimate.com/github/twilio/twilio-ruby
|
|
174
|
+
[upgrade]: https://github.com/twilio/twilio-ruby/wiki/Ruby-Version-5.x-Upgrade-Guide
|
|
175
|
+
[issues]: https://github.com/twilio/twilio-ruby/issues
|
|
176
|
+
[faraday]: https://github.com/lostisland/faraday
|
data/Rakefile
CHANGED
|
@@ -1,12 +1,64 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
1
|
+
require 'bundler'
|
|
2
|
+
Bundler.setup
|
|
3
|
+
Bundler::GemHelper.install_tasks
|
|
4
|
+
|
|
3
5
|
require 'rspec/core/rake_task'
|
|
6
|
+
desc 'Run all specs'
|
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
task default: :spec
|
|
10
|
+
task test: :spec
|
|
6
11
|
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
task :authors do
|
|
13
|
+
`make authors`
|
|
9
14
|
end
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
task :deploy, [:version] => [:spec, :authors] do |t, args|
|
|
17
|
+
current_version = Twilio::VERSION
|
|
18
|
+
|
|
19
|
+
if args.version.nil?
|
|
20
|
+
version = Twilio::VERSION
|
|
21
|
+
version_parts = version.split('.')
|
|
22
|
+
increment = version_parts.pop
|
|
23
|
+
increment_prefix = increment.split(/\d/)[0]
|
|
24
|
+
|
|
25
|
+
increment = increment[increment_prefix.length..-1] if increment_prefix
|
|
26
|
+
|
|
27
|
+
increment = increment.to_i + 1
|
|
28
|
+
increment = "#{increment_prefix}#{increment}" if increment_prefix
|
|
29
|
+
|
|
30
|
+
version = [*version_parts, increment].join('.')
|
|
31
|
+
else
|
|
32
|
+
version = args.version
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
puts("Deploying #{version}")
|
|
36
|
+
|
|
37
|
+
# Update version.rb
|
|
38
|
+
version_file = <<SRC
|
|
39
|
+
module Twilio
|
|
40
|
+
VERSION = '#{version}'
|
|
41
|
+
end
|
|
42
|
+
SRC
|
|
43
|
+
File.write('lib/twilio-ruby/version.rb', version_file)
|
|
44
|
+
|
|
45
|
+
# Update README.md
|
|
46
|
+
current_readme = File.read('README.md')
|
|
47
|
+
new_readme = current_readme.gsub(Regexp.new(current_version.gsub('.', '\.')), version)
|
|
48
|
+
File.write('README.md', new_readme)
|
|
49
|
+
|
|
50
|
+
# Make a git commit
|
|
51
|
+
`git commit -am "Bumping to version #{version}"`
|
|
52
|
+
|
|
53
|
+
# Do the gem deployment
|
|
54
|
+
`make gem`
|
|
55
|
+
|
|
56
|
+
# Push the branch back up
|
|
57
|
+
`git push`
|
|
58
|
+
|
|
59
|
+
# Tag the branch
|
|
60
|
+
`git tag #{version}`
|
|
61
|
+
|
|
62
|
+
# Push the tags
|
|
63
|
+
`git push --tags`
|
|
64
|
+
end
|
data/VERSIONS.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Versioning Strategy
|
|
2
|
+
|
|
3
|
+
`twilio-ruby` uses a modified version of [Semantic Versioning][semver] for all
|
|
4
|
+
changes to the helper library. It is strongly encouraged that you pin at least
|
|
5
|
+
the major version and potentially the minor version to avoid pulling in breaking
|
|
6
|
+
changes.
|
|
7
|
+
|
|
8
|
+
Semantic Versions take the form of `MAJOR`.`MINOR`.`PATCH`
|
|
9
|
+
|
|
10
|
+
When bugs are fixed in the library in a backwards compatible way, the `PATCH`
|
|
11
|
+
level will be incremented by one. When new features are added to the library
|
|
12
|
+
in a backwards compatible way, the `PATCH` level will be incremented by one.
|
|
13
|
+
`PATCH` changes should _not_ break your code and are generally safe for upgrade.
|
|
14
|
+
|
|
15
|
+
When a new large feature set comes online or a small breaking change is
|
|
16
|
+
introduced, the `MINOR` version will be incremented by one and the `PATCH`
|
|
17
|
+
version reset to zero. `MINOR` changes _may_ require some amount of manual code
|
|
18
|
+
change for upgrade. These backwards-incompatible changes will generally be limited
|
|
19
|
+
to a small number of function signature changes.
|
|
20
|
+
|
|
21
|
+
The `MAJOR` version is used to indicate the family of technology represented by
|
|
22
|
+
the helper library. It increased from `4.x.x` to `5.x.x` when Twilio moved to
|
|
23
|
+
auto generation of helper libraries. Breaking changes that requires extensive
|
|
24
|
+
reworking of code (like the `4.x.x` to `5.x.x` upgrade) will case the `MAJOR`
|
|
25
|
+
version to be incremented by one, the `MINOR` and `PATCH` versions will be reset
|
|
26
|
+
to zero. Twilio understands that this can be very disruptive, we will only
|
|
27
|
+
introduce this type of breaking change when absolutely necessary. New `MAJOR`
|
|
28
|
+
versions will be communicated in advance with `Release Candidates` and a
|
|
29
|
+
schedule.
|
|
30
|
+
|
|
31
|
+
## Supported Versions
|
|
32
|
+
|
|
33
|
+
`twilio-ruby` follows an evergreen model of support. New features and
|
|
34
|
+
functionality will only be added to the current version. The current version -
|
|
35
|
+
1 will continue to be supported with bugfixes and security updates, but no new
|
|
36
|
+
features.
|
|
37
|
+
|
|
38
|
+
## Edge Features (alpha Branch)
|
|
39
|
+
|
|
40
|
+
Twilio frequently rolls out new features in public and private beta periods.
|
|
41
|
+
Twilio strives to ship early and often and bake customer feedback back into our
|
|
42
|
+
products. To support that mission, the `twilio-ruby` helper library has an
|
|
43
|
+
`Edge` version based of the `alpha` branch. This version is identified with an
|
|
44
|
+
`alpha` metadata tag on the version number.
|
|
45
|
+
|
|
46
|
+
The way the `Edge` artifact is created is by playing the `Edge` features on top
|
|
47
|
+
of our stable artifact. The `Edge` artifact will always have the same version
|
|
48
|
+
number as the stable artifact it was created from, but with an `alpha` suffix.
|
|
49
|
+
|
|
50
|
+
For example, `5.0.0-alpha-1` is the `5.0.0` branch with `Edge` features included.
|
|
51
|
+
If there is a change to one of the `Edge` features we may regenerate the `Edge`
|
|
52
|
+
artifact and release a new `5.0.0-alpha-2`, new `Edge` artifacts simply increment
|
|
53
|
+
the number after the `alpha` suffix. All `Edge` features are considered
|
|
54
|
+
unstable and a backwards incompatible change in an `Edge` feature will not cause
|
|
55
|
+
any version change so you should take care when upgrading from one `alpha`
|
|
56
|
+
version to another.
|
|
57
|
+
|
|
58
|
+
Once an `Edge` feature has matured it will be considered `Mainline` and included
|
|
59
|
+
in the stable artifact, with a `MAJOR` or `MINOR` version bump.
|
|
60
|
+
|
|
61
|
+
To use an `Edge` artifact in your Ruby project you will have to make sure that
|
|
62
|
+
you pin the artifact with `alpha` stability in your `pom.xml`.
|
|
63
|
+
|
|
64
|
+
[semver]: http://semver.org/
|
data/examples/examples.rb
CHANGED
|
@@ -1,124 +1,137 @@
|
|
|
1
|
-
# examples version
|
|
1
|
+
# examples version
|
|
2
2
|
|
|
3
|
-
@account_sid = '
|
|
4
|
-
@auth_token = '
|
|
3
|
+
@account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
|
4
|
+
@auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
|
|
5
5
|
# set up a client
|
|
6
6
|
@client = Twilio::REST::Client.new(@account_sid, @auth_token)
|
|
7
7
|
|
|
8
8
|
################ ACCOUNTS ################
|
|
9
9
|
|
|
10
10
|
# shortcut to grab your account object (account_sid is inferred from the client's auth credentials)
|
|
11
|
-
@account = @client.account
|
|
11
|
+
@account = @client.api.account
|
|
12
12
|
|
|
13
13
|
# list your (sub)accounts
|
|
14
|
-
@client.accounts.
|
|
14
|
+
@accounts = @client.api.accounts.each do |account|
|
|
15
|
+
puts(account)
|
|
16
|
+
end
|
|
15
17
|
|
|
16
18
|
# grab an account instance resource if you know the sid
|
|
17
|
-
@account = @client.accounts
|
|
18
|
-
|
|
19
|
-
puts @account.friendly_name
|
|
19
|
+
@account = @client.api.accounts(account_sid).fetch
|
|
20
|
+
puts(@account.friendly_name)
|
|
20
21
|
|
|
21
22
|
# update an account's friendly name
|
|
22
|
-
@client.accounts
|
|
23
|
+
@client.api.accounts(account_sid).update(friendly_name: 'A Fabulous Friendly Name')
|
|
23
24
|
|
|
24
25
|
################ CALLS ################
|
|
25
26
|
|
|
26
27
|
# print a list of calls (all parameters optional)
|
|
27
|
-
@
|
|
28
|
+
@client.calls.list(limit: 10, start_time: '2010-09-01').each do |call|
|
|
28
29
|
puts call.sid
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
# get a particular call and list its recording urls
|
|
32
|
-
@
|
|
33
|
+
@client.calls('CAXXXXXXX').recordings.each do |r|
|
|
33
34
|
puts r.wav
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
# make a new outgoing call. returns a call object just like calls.get
|
|
37
|
-
@call = @
|
|
38
|
+
@call = @client.calls.create(
|
|
39
|
+
from: '+14159341234',
|
|
40
|
+
to: '+18004567890',
|
|
41
|
+
url: 'http://example.com/call-handler'
|
|
42
|
+
)
|
|
38
43
|
|
|
39
44
|
# cancel the call if not already in progress
|
|
40
|
-
@
|
|
41
|
-
# or equivalently
|
|
42
|
-
@call.update({:status => 'canceled'})
|
|
43
|
-
# or simply
|
|
44
|
-
@call.cancel
|
|
45
|
+
@client.calls(@call.sid).update(status: 'canceled')
|
|
45
46
|
|
|
46
47
|
# redirect and then terminate a call
|
|
47
|
-
@
|
|
48
|
-
@
|
|
49
|
-
|
|
50
|
-
@call.redirect_to('http://example.com/call-redirect')
|
|
51
|
-
@call.hangup
|
|
48
|
+
@call = client.calls('CAXXXXXXX')
|
|
49
|
+
@call.update(url: 'http://example.com/call-redirect')
|
|
50
|
+
@call.update(status: 'completed')
|
|
52
51
|
|
|
53
52
|
################ SMS MESSAGES ################
|
|
54
53
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
puts message.body
|
|
54
|
+
@client.messages.list(date_sent: '2010-09-01').each do |message|
|
|
55
|
+
puts message.date_created
|
|
58
56
|
end
|
|
59
57
|
|
|
60
58
|
# print a particular sms message
|
|
61
|
-
puts @
|
|
59
|
+
puts @client.messages('SMXXXXXXXX').fetch.body
|
|
62
60
|
|
|
63
61
|
# send an sms
|
|
64
|
-
@
|
|
62
|
+
@client.messages.create(
|
|
63
|
+
from: '+14159341234',
|
|
64
|
+
to: '+16105557069',
|
|
65
|
+
body: 'Hey there!'
|
|
66
|
+
)
|
|
65
67
|
|
|
66
68
|
# send an mms
|
|
67
|
-
@
|
|
69
|
+
@client.messages.create(
|
|
70
|
+
from: '+14159341234',
|
|
71
|
+
to: '+16105557069',
|
|
72
|
+
media_urls: 'http://example.com/media.png'
|
|
73
|
+
)
|
|
68
74
|
|
|
69
75
|
################ PHONE NUMBERS ################
|
|
70
76
|
|
|
71
77
|
# get a list of supported country codes
|
|
72
|
-
@
|
|
78
|
+
@client.available_phone_numbers.list
|
|
73
79
|
|
|
74
80
|
# print some available numbers
|
|
75
|
-
@
|
|
76
|
-
|
|
81
|
+
@client.available_phone_numbers('US').local.list.each do |num|
|
|
82
|
+
puts num
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
@numbers = @client.available_phone_numbers('US').local.list(area_code: '908')
|
|
86
|
+
@numbers.each { |num| puts num.phone_number }
|
|
77
87
|
|
|
78
88
|
# buy the first one
|
|
79
|
-
@
|
|
89
|
+
@client.incoming_phone_numbers.create(phone_number: @numbers[0].phone_number)
|
|
80
90
|
|
|
81
91
|
# update an existing phone number's voice url
|
|
82
|
-
@
|
|
92
|
+
@client.incoming_phone_numbers('PNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').update(voice_url: 'http://example.com/voice')
|
|
83
93
|
|
|
84
94
|
# decommission an existing phone number
|
|
85
|
-
numbers = @
|
|
86
|
-
numbers[0].
|
|
95
|
+
numbers = @client.incoming_phone_numbers.list(friendly_name: 'A Fabulous Friendly Name')
|
|
96
|
+
number = numbers[0].sid
|
|
97
|
+
@client.incoming_phone_numbers(number).delete
|
|
98
|
+
|
|
87
99
|
################ CONFERENCES ################
|
|
88
100
|
|
|
89
101
|
# get a particular conference's participants object and stash it
|
|
90
|
-
|
|
102
|
+
conference = @client.conferences('CFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').fetch
|
|
103
|
+
@participants = conference.participants
|
|
91
104
|
|
|
92
105
|
# list participants
|
|
93
|
-
@participants.
|
|
106
|
+
@participants.each do |p|
|
|
94
107
|
puts p.sid
|
|
95
108
|
end
|
|
96
109
|
|
|
97
110
|
# update a conference participant
|
|
98
|
-
@
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
# and, since we're lazy loading, this would only incur one http request
|
|
103
|
-
@account.conferences.get('CFbbe46ff1274e283f7e3ac1df0072ab39').participants.get('CA386025c9bf5d6052a1d1ea42b4d16662').update({:muted => 'true'})
|
|
111
|
+
@client
|
|
112
|
+
.conferences('CFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
|
|
113
|
+
.participants('CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
|
|
114
|
+
.update(muted: 'true')
|
|
104
115
|
|
|
105
116
|
################ QUEUES ###################
|
|
106
117
|
|
|
107
118
|
# create a new queue
|
|
108
|
-
@queue = @
|
|
119
|
+
@queue = @client.queues.create(friendly_name: 'MyQueue', max_size: 50)
|
|
109
120
|
|
|
110
121
|
# get a list of queues for this account
|
|
111
|
-
@queues = @
|
|
122
|
+
@queues = @client.queues.list
|
|
112
123
|
|
|
113
124
|
# get a particular queue and its members
|
|
114
|
-
@queue = @
|
|
125
|
+
@queue = @client.queues('QQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').fetch
|
|
115
126
|
@members = @queue.members
|
|
116
127
|
|
|
117
|
-
#list members
|
|
128
|
+
# list members
|
|
118
129
|
@members.list.each do |m|
|
|
119
130
|
puts m.wait_time
|
|
120
131
|
end
|
|
121
132
|
|
|
122
133
|
# dequeue a particular user and run twiml at a specific url
|
|
123
|
-
@
|
|
124
|
-
|
|
134
|
+
@client
|
|
135
|
+
.queues('QQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
|
|
136
|
+
.members('CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
|
|
137
|
+
.update(url: 'http://myapp.com/deque', method: 'POST')
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
1
|
require 'twilio-ruby'
|
|
3
2
|
|
|
4
3
|
# print a list of all phone calls, what phone number each was to/from, and how
|
|
@@ -7,18 +6,19 @@ require 'twilio-ruby'
|
|
|
7
6
|
# put your Twilio credentials here. you can find your AccountSid and AuthToken
|
|
8
7
|
# at the top of your account dashboard page located at:
|
|
9
8
|
# https://www.twilio.com/user/account
|
|
10
|
-
account_sid = '
|
|
11
|
-
auth_token = '
|
|
9
|
+
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
|
10
|
+
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
|
|
12
11
|
|
|
13
12
|
# set up a client
|
|
14
13
|
client = Twilio::REST::Client.new(account_sid, auth_token)
|
|
15
14
|
|
|
16
|
-
calls = client.
|
|
15
|
+
calls = client.calls.page
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
loop do
|
|
19
18
|
calls.each do |call|
|
|
20
19
|
price = call.price || '0.00' # since apparently prices can be nil...
|
|
21
|
-
puts call.sid + "\t" + call.from + "\t" + call.to + "\t" + price
|
|
20
|
+
puts call.sid + "\t" + call.from + "\t" + call.to + "\t" + price.to_s
|
|
22
21
|
end
|
|
23
22
|
calls = calls.next_page
|
|
24
|
-
|
|
23
|
+
break if calls.nil?
|
|
24
|
+
end
|