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.
Files changed (435) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -1
  3. data/.rubocop.yml +21 -0
  4. data/.rubocop_todo.yml +187 -0
  5. data/.travis.yml +10 -10
  6. data/AUTHORS.md +21 -0
  7. data/CHANGES.md +351 -0
  8. data/Gemfile +8 -1
  9. data/{LICENSE → LICENSE.md} +13 -11
  10. data/Makefile +15 -3
  11. data/README.md +90 -95
  12. data/Rakefile +59 -7
  13. data/VERSIONS.md +64 -0
  14. data/examples/examples.rb +62 -49
  15. data/examples/{print-call-log.rb → print_call_log.rb} +7 -7
  16. data/lib/rack/twilio_webhook_authentication.rb +46 -0
  17. data/lib/twilio-ruby/framework/domain.rb +34 -0
  18. data/lib/twilio-ruby/framework/error.rb +30 -0
  19. data/lib/twilio-ruby/framework/helper.rb +9 -0
  20. data/lib/twilio-ruby/framework/page.rb +101 -0
  21. data/lib/twilio-ruby/framework/resource.rb +21 -0
  22. data/lib/twilio-ruby/framework/serialize.rb +70 -0
  23. data/lib/twilio-ruby/framework/twilio_response.rb +15 -0
  24. data/lib/twilio-ruby/framework/values.rb +7 -0
  25. data/lib/twilio-ruby/framework/version.rb +164 -0
  26. data/lib/twilio-ruby/http/http_client.rb +46 -0
  27. data/lib/twilio-ruby/jwt/access_token.rb +232 -0
  28. data/lib/twilio-ruby/jwt/client_capability.rb +102 -0
  29. data/lib/twilio-ruby/jwt/jwt.rb +50 -0
  30. data/lib/twilio-ruby/jwt/task_router.rb +174 -0
  31. data/lib/twilio-ruby/rest/accounts/v1/credential/public_key.rb +370 -0
  32. data/lib/twilio-ruby/rest/accounts/v1/credential.rb +105 -0
  33. data/lib/twilio-ruby/rest/accounts/v1.rb +39 -0
  34. data/lib/twilio-ruby/rest/accounts.rb +36 -9
  35. data/lib/twilio-ruby/rest/api/v2010/account/address/dependent_phone_number.rb +265 -0
  36. data/lib/twilio-ruby/rest/api/v2010/account/address.rb +509 -0
  37. data/lib/twilio-ruby/rest/api/v2010/account/application.rb +620 -0
  38. data/lib/twilio-ruby/rest/api/v2010/account/authorized_connect_app.rb +331 -0
  39. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +389 -0
  40. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +389 -0
  41. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +389 -0
  42. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +370 -0
  43. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +296 -0
  44. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +317 -0
  45. data/lib/twilio-ruby/rest/api/v2010/account/call/notification.rb +427 -0
  46. data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +379 -0
  47. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +799 -0
  48. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +515 -0
  49. data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +455 -0
  50. data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +413 -0
  51. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +445 -0
  52. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +445 -0
  53. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +445 -0
  54. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +786 -0
  55. data/lib/twilio-ruby/rest/api/v2010/account/key.rb +336 -0
  56. data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +165 -0
  57. data/lib/twilio-ruby/rest/api/v2010/account/message/media.rb +355 -0
  58. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +583 -0
  59. data/lib/twilio-ruby/rest/api/v2010/account/new_key.rb +153 -0
  60. data/lib/twilio-ruby/rest/api/v2010/account/new_signing_key.rb +153 -0
  61. data/lib/twilio-ruby/rest/api/v2010/account/notification.rb +418 -0
  62. data/lib/twilio-ruby/rest/api/v2010/account/outgoing_caller_id.rb +377 -0
  63. data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +345 -0
  64. data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +438 -0
  65. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload.rb +378 -0
  66. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +397 -0
  67. data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +375 -0
  68. data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +479 -0
  69. data/lib/twilio-ruby/rest/api/v2010/account/short_code.rb +430 -0
  70. data/lib/twilio-ruby/rest/api/v2010/account/signing_key.rb +336 -0
  71. data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list/credential.rb +395 -0
  72. data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list.rb +419 -0
  73. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +361 -0
  74. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +361 -0
  75. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +570 -0
  76. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +406 -0
  77. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +424 -0
  78. data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +174 -0
  79. data/lib/twilio-ruby/rest/api/v2010/account/token.rb +168 -0
  80. data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +366 -0
  81. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +304 -0
  82. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +304 -0
  83. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +304 -0
  84. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +304 -0
  85. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +304 -0
  86. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +304 -0
  87. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +304 -0
  88. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +304 -0
  89. data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +418 -0
  90. data/lib/twilio-ruby/rest/api/v2010/account/usage/trigger.rb +507 -0
  91. data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +127 -0
  92. data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +161 -0
  93. data/lib/twilio-ruby/rest/api/v2010/account.rb +1098 -0
  94. data/lib/twilio-ruby/rest/api/v2010.rb +147 -0
  95. data/lib/twilio-ruby/rest/api.rb +234 -0
  96. data/lib/twilio-ruby/rest/chat/v1/credential.rb +403 -0
  97. data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +386 -0
  98. data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +431 -0
  99. data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +447 -0
  100. data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +554 -0
  101. data/lib/twilio-ruby/rest/chat/v1/service/role.rb +396 -0
  102. data/lib/twilio-ruby/rest/chat/v1/service/user/user_channel.rb +244 -0
  103. data/lib/twilio-ruby/rest/chat/v1/service/user.rb +467 -0
  104. data/lib/twilio-ruby/rest/chat/v1/service.rb +935 -0
  105. data/lib/twilio-ruby/rest/chat/v1.rb +56 -0
  106. data/lib/twilio-ruby/rest/chat/v2/credential.rb +403 -0
  107. data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +386 -0
  108. data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +431 -0
  109. data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +447 -0
  110. data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +554 -0
  111. data/lib/twilio-ruby/rest/chat/v2/service/role.rb +396 -0
  112. data/lib/twilio-ruby/rest/chat/v2/service/user/user_channel.rb +244 -0
  113. data/lib/twilio-ruby/rest/chat/v2/service/user.rb +467 -0
  114. data/lib/twilio-ruby/rest/chat/v2/service.rb +688 -0
  115. data/lib/twilio-ruby/rest/chat/v2.rb +56 -0
  116. data/lib/twilio-ruby/rest/chat.rb +59 -0
  117. data/lib/twilio-ruby/rest/client.rb +307 -215
  118. data/lib/twilio-ruby/rest/ip_messaging/v1/credential.rb +403 -0
  119. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +386 -0
  120. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +431 -0
  121. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +447 -0
  122. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +554 -0
  123. data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +396 -0
  124. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user/user_channel.rb +244 -0
  125. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +467 -0
  126. data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +935 -0
  127. data/lib/twilio-ruby/rest/ip_messaging/v1.rb +56 -0
  128. data/lib/twilio-ruby/rest/ip_messaging/v2/credential.rb +403 -0
  129. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +386 -0
  130. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +431 -0
  131. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +447 -0
  132. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +554 -0
  133. data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +396 -0
  134. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_channel.rb +244 -0
  135. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +467 -0
  136. data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +688 -0
  137. data/lib/twilio-ruby/rest/ip_messaging/v2.rb +56 -0
  138. data/lib/twilio-ruby/rest/ip_messaging.rb +59 -0
  139. data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +224 -0
  140. data/lib/twilio-ruby/rest/lookups/v1.rb +41 -0
  141. data/lib/twilio-ruby/rest/lookups.rb +44 -0
  142. data/lib/twilio-ruby/rest/monitor/v1/alert.rb +398 -0
  143. data/lib/twilio-ruby/rest/monitor/v1/event.rb +381 -0
  144. data/lib/twilio-ruby/rest/monitor/v1.rb +56 -0
  145. data/lib/twilio-ruby/rest/monitor.rb +52 -0
  146. data/lib/twilio-ruby/rest/pricing/v1/messaging/country.rb +291 -0
  147. data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +129 -0
  148. data/lib/twilio-ruby/rest/pricing/v1/phone_number/country.rb +284 -0
  149. data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +129 -0
  150. data/lib/twilio-ruby/rest/pricing/v1/voice/country.rb +291 -0
  151. data/lib/twilio-ruby/rest/pricing/v1/voice/number.rb +208 -0
  152. data/lib/twilio-ruby/rest/pricing/v1/voice.rb +150 -0
  153. data/lib/twilio-ruby/rest/pricing/v1.rb +65 -0
  154. data/lib/twilio-ruby/rest/pricing.rb +54 -0
  155. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +399 -0
  156. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +418 -0
  157. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +461 -0
  158. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +584 -0
  159. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_channel.rb +315 -0
  160. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +230 -0
  161. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +243 -0
  162. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +527 -0
  163. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +461 -0
  164. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_channel.rb +406 -0
  165. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +223 -0
  166. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +226 -0
  167. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +585 -0
  168. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +230 -0
  169. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +475 -0
  170. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +212 -0
  171. data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +712 -0
  172. data/lib/twilio-ruby/rest/taskrouter/v1.rb +41 -0
  173. data/lib/twilio-ruby/rest/taskrouter.rb +44 -0
  174. data/lib/twilio-ruby/rest/trunking/v1/trunk/credential_list.rb +345 -0
  175. data/lib/twilio-ruby/rest/trunking/v1/trunk/ip_access_control_list.rb +345 -0
  176. data/lib/twilio-ruby/rest/trunking/v1/trunk/origination_url.rb +430 -0
  177. data/lib/twilio-ruby/rest/trunking/v1/trunk/phone_number.rb +478 -0
  178. data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +577 -0
  179. data/lib/twilio-ruby/rest/trunking/v1.rb +41 -0
  180. data/lib/twilio-ruby/rest/trunking.rb +44 -0
  181. data/lib/twilio-ruby/rest/video/v1/recording.rb +382 -0
  182. data/lib/twilio-ruby/rest/video/v1/room/recording.rb +381 -0
  183. data/lib/twilio-ruby/rest/video/v1/room.rb +485 -0
  184. data/lib/twilio-ruby/rest/video/v1.rb +56 -0
  185. data/lib/twilio-ruby/rest/video.rb +52 -0
  186. data/lib/twilio-ruby/security/request_validator.rb +54 -0
  187. data/lib/twilio-ruby/twiml/messaging_response.rb +141 -0
  188. data/lib/twilio-ruby/twiml/twiml.rb +69 -0
  189. data/lib/twilio-ruby/twiml/voice_response.rb +916 -0
  190. data/lib/twilio-ruby/util/configuration.rb +7 -0
  191. data/lib/twilio-ruby/util.rb +1 -1
  192. data/lib/twilio-ruby/version.rb +1 -1
  193. data/lib/twilio-ruby.rb +52 -49
  194. data/spec/framework/serialize_spec.rb +59 -0
  195. data/spec/holodeck/holodeck.rb +61 -0
  196. data/spec/holodeck/hologram.rb +4 -0
  197. data/spec/integration/accounts/v1/credential/public_key_spec.rb +226 -0
  198. data/spec/integration/accounts/v1/credential_spec.rb +10 -0
  199. data/spec/integration/api/v2010/account/address/dependent_phone_number_spec.rb +90 -0
  200. data/spec/integration/api/v2010/account/address_spec.rb +267 -0
  201. data/spec/integration/api/v2010/account/application_spec.rb +286 -0
  202. data/spec/integration/api/v2010/account/authorized_connect_app_spec.rb +137 -0
  203. data/spec/integration/api/v2010/account/available_phone_number/local_spec.rb +101 -0
  204. data/spec/integration/api/v2010/account/available_phone_number/mobile_spec.rb +100 -0
  205. data/spec/integration/api/v2010/account/available_phone_number/toll_free_spec.rb +100 -0
  206. data/spec/integration/api/v2010/account/available_phone_number_spec.rb +128 -0
  207. data/spec/integration/api/v2010/account/call/feedback_spec.rb +141 -0
  208. data/spec/integration/api/v2010/account/call/feedback_summary_spec.rb +149 -0
  209. data/spec/integration/api/v2010/account/call/notification_spec.rb +179 -0
  210. data/spec/integration/api/v2010/account/call/recording_spec.rb +178 -0
  211. data/spec/integration/api/v2010/account/call_spec.rb +319 -0
  212. data/spec/integration/api/v2010/account/conference/participant_spec.rb +283 -0
  213. data/spec/integration/api/v2010/account/conference_spec.rb +174 -0
  214. data/spec/integration/api/v2010/account/connect_app_spec.rb +177 -0
  215. data/spec/integration/api/v2010/account/incoming_phone_number/local_spec.rb +181 -0
  216. data/spec/integration/api/v2010/account/incoming_phone_number/mobile_spec.rb +181 -0
  217. data/spec/integration/api/v2010/account/incoming_phone_number/toll_free_spec.rb +181 -0
  218. data/spec/integration/api/v2010/account/incoming_phone_number_spec.rb +331 -0
  219. data/spec/integration/api/v2010/account/key_spec.rb +178 -0
  220. data/spec/integration/api/v2010/account/message/feedback_spec.rb +48 -0
  221. data/spec/integration/api/v2010/account/message/media_spec.rb +162 -0
  222. data/spec/integration/api/v2010/account/message_spec.rb +297 -0
  223. data/spec/integration/api/v2010/account/new_key_spec.rb +45 -0
  224. data/spec/integration/api/v2010/account/new_signing_key_spec.rb +45 -0
  225. data/spec/integration/api/v2010/account/notification_spec.rb +172 -0
  226. data/spec/integration/api/v2010/account/outgoing_caller_id_spec.rb +193 -0
  227. data/spec/integration/api/v2010/account/queue/member_spec.rb +170 -0
  228. data/spec/integration/api/v2010/account/queue_spec.rb +242 -0
  229. data/spec/integration/api/v2010/account/recording/add_on_result/payload_spec.rb +175 -0
  230. data/spec/integration/api/v2010/account/recording/add_on_result_spec.rb +166 -0
  231. data/spec/integration/api/v2010/account/recording/transcription_spec.rb +174 -0
  232. data/spec/integration/api/v2010/account/recording_spec.rb +179 -0
  233. data/spec/integration/api/v2010/account/short_code_spec.rb +180 -0
  234. data/spec/integration/api/v2010/account/signing_key_spec.rb +178 -0
  235. data/spec/integration/api/v2010/account/sip/credential_list/credential_spec.rb +257 -0
  236. data/spec/integration/api/v2010/account/sip/credential_list_spec.rb +246 -0
  237. data/spec/integration/api/v2010/account/sip/domain/credential_list_mapping_spec.rb +210 -0
  238. data/spec/integration/api/v2010/account/sip/domain/ip_access_control_list_mapping_spec.rb +220 -0
  239. data/spec/integration/api/v2010/account/sip/domain_spec.rb +283 -0
  240. data/spec/integration/api/v2010/account/sip/ip_access_control_list/ip_address_spec.rb +261 -0
  241. data/spec/integration/api/v2010/account/sip/ip_access_control_list_spec.rb +256 -0
  242. data/spec/integration/api/v2010/account/sip_spec.rb +10 -0
  243. data/spec/integration/api/v2010/account/token_spec.rb +56 -0
  244. data/spec/integration/api/v2010/account/transcription_spec.rb +167 -0
  245. data/spec/integration/api/v2010/account/usage/record/all_time_spec.rb +111 -0
  246. data/spec/integration/api/v2010/account/usage/record/daily_spec.rb +111 -0
  247. data/spec/integration/api/v2010/account/usage/record/last_month_spec.rb +111 -0
  248. data/spec/integration/api/v2010/account/usage/record/monthly_spec.rb +111 -0
  249. data/spec/integration/api/v2010/account/usage/record/this_month_spec.rb +111 -0
  250. data/spec/integration/api/v2010/account/usage/record/today_spec.rb +111 -0
  251. data/spec/integration/api/v2010/account/usage/record/yearly_spec.rb +111 -0
  252. data/spec/integration/api/v2010/account/usage/record/yesterday_spec.rb +111 -0
  253. data/spec/integration/api/v2010/account/usage/record_spec.rb +108 -0
  254. data/spec/integration/api/v2010/account/usage/trigger_spec.rb +283 -0
  255. data/spec/integration/api/v2010/account/usage_spec.rb +10 -0
  256. data/spec/integration/api/v2010/account/validation_request_spec.rb +48 -0
  257. data/spec/integration/api/v2010/account_spec.rb +254 -0
  258. data/spec/integration/chat/v1/credential_spec.rb +223 -0
  259. data/spec/integration/chat/v1/service/channel/invite_spec.rb +210 -0
  260. data/spec/integration/chat/v1/service/channel/member_spec.rb +284 -0
  261. data/spec/integration/chat/v1/service/channel/message_spec.rb +294 -0
  262. data/spec/integration/chat/v1/service/channel_spec.rb +275 -0
  263. data/spec/integration/chat/v1/service/role_spec.rb +263 -0
  264. data/spec/integration/chat/v1/service/user/user_channel_spec.rb +92 -0
  265. data/spec/integration/chat/v1/service/user_spec.rb +266 -0
  266. data/spec/integration/chat/v1/service_spec.rb +299 -0
  267. data/spec/integration/chat/v2/credential_spec.rb +223 -0
  268. data/spec/integration/chat/v2/service/channel/invite_spec.rb +210 -0
  269. data/spec/integration/chat/v2/service/channel/member_spec.rb +284 -0
  270. data/spec/integration/chat/v2/service/channel/message_spec.rb +294 -0
  271. data/spec/integration/chat/v2/service/channel_spec.rb +275 -0
  272. data/spec/integration/chat/v2/service/role_spec.rb +263 -0
  273. data/spec/integration/chat/v2/service/user/user_channel_spec.rb +92 -0
  274. data/spec/integration/chat/v2/service/user_spec.rb +266 -0
  275. data/spec/integration/chat/v2/service_spec.rb +325 -0
  276. data/spec/integration/ip_messaging/v1/credential_spec.rb +223 -0
  277. data/spec/integration/ip_messaging/v1/service/channel/invite_spec.rb +210 -0
  278. data/spec/integration/ip_messaging/v1/service/channel/member_spec.rb +284 -0
  279. data/spec/integration/ip_messaging/v1/service/channel/message_spec.rb +294 -0
  280. data/spec/integration/ip_messaging/v1/service/channel_spec.rb +275 -0
  281. data/spec/integration/ip_messaging/v1/service/role_spec.rb +263 -0
  282. data/spec/integration/ip_messaging/v1/service/user/user_channel_spec.rb +92 -0
  283. data/spec/integration/ip_messaging/v1/service/user_spec.rb +266 -0
  284. data/spec/integration/ip_messaging/v1/service_spec.rb +299 -0
  285. data/spec/integration/ip_messaging/v2/credential_spec.rb +223 -0
  286. data/spec/integration/ip_messaging/v2/service/channel/invite_spec.rb +210 -0
  287. data/spec/integration/ip_messaging/v2/service/channel/member_spec.rb +284 -0
  288. data/spec/integration/ip_messaging/v2/service/channel/message_spec.rb +294 -0
  289. data/spec/integration/ip_messaging/v2/service/channel_spec.rb +275 -0
  290. data/spec/integration/ip_messaging/v2/service/role_spec.rb +263 -0
  291. data/spec/integration/ip_messaging/v2/service/user/user_channel_spec.rb +92 -0
  292. data/spec/integration/ip_messaging/v2/service/user_spec.rb +266 -0
  293. data/spec/integration/ip_messaging/v2/service_spec.rb +325 -0
  294. data/spec/integration/lookups/v1/phone_number_spec.rb +60 -0
  295. data/spec/integration/monitor/v1/alert_spec.rb +161 -0
  296. data/spec/integration/monitor/v1/event_spec.rb +148 -0
  297. data/spec/integration/pricing/v1/messaging/country_spec.rb +137 -0
  298. data/spec/integration/pricing/v1/messaging_spec.rb +10 -0
  299. data/spec/integration/pricing/v1/phone_number/country_spec.rb +128 -0
  300. data/spec/integration/pricing/v1/phone_number_spec.rb +10 -0
  301. data/spec/integration/pricing/v1/voice/country_spec.rb +266 -0
  302. data/spec/integration/pricing/v1/voice/number_spec.rb +54 -0
  303. data/spec/integration/pricing/v1/voice_spec.rb +10 -0
  304. data/spec/integration/taskrouter/v1/workspace/activity_spec.rb +236 -0
  305. data/spec/integration/taskrouter/v1/workspace/event_spec.rb +157 -0
  306. data/spec/integration/taskrouter/v1/workspace/task/reservation_spec.rb +192 -0
  307. data/spec/integration/taskrouter/v1/workspace/task_channel_spec.rb +127 -0
  308. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_statistics_spec.rb +106 -0
  309. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queues_statistics_spec.rb +144 -0
  310. data/spec/integration/taskrouter/v1/workspace/task_queue_spec.rb +292 -0
  311. data/spec/integration/taskrouter/v1/workspace/task_spec.rb +324 -0
  312. data/spec/integration/taskrouter/v1/workspace/worker/reservation_spec.rb +192 -0
  313. data/spec/integration/taskrouter/v1/workspace/worker/worker_channel_spec.rb +201 -0
  314. data/spec/integration/taskrouter/v1/workspace/worker/worker_statistics_spec.rb +107 -0
  315. data/spec/integration/taskrouter/v1/workspace/worker/workers_statistics_spec.rb +141 -0
  316. data/spec/integration/taskrouter/v1/workspace/worker_spec.rb +282 -0
  317. data/spec/integration/taskrouter/v1/workspace/workflow/workflow_statistics_spec.rb +69 -0
  318. data/spec/integration/taskrouter/v1/workspace/workflow_spec.rb +265 -0
  319. data/spec/integration/taskrouter/v1/workspace/workspace_statistics_spec.rb +103 -0
  320. data/spec/integration/taskrouter/v1/workspace_spec.rb +287 -0
  321. data/spec/integration/trunking/v1/trunk/credential_list_spec.rb +192 -0
  322. data/spec/integration/trunking/v1/trunk/ip_access_control_list_spec.rb +192 -0
  323. data/spec/integration/trunking/v1/trunk/origination_url_spec.rb +250 -0
  324. data/spec/integration/trunking/v1/trunk/phone_number_spec.rb +267 -0
  325. data/spec/integration/trunking/v1/trunk_spec.rb +276 -0
  326. data/spec/integration/video/v1/recording_spec.rb +165 -0
  327. data/spec/integration/video/v1/room/recording_spec.rb +146 -0
  328. data/spec/integration/video/v1/room_spec.rb +237 -0
  329. data/spec/jwt/access_token_spec.rb +130 -0
  330. data/spec/jwt/client_capability_spec.rb +104 -0
  331. data/spec/jwt/task_router_spec.rb +172 -0
  332. data/spec/rack/twilio_webhook_authentication_spec.rb +106 -0
  333. data/spec/security/request_validator_spec.rb +113 -0
  334. data/spec/spec_helper.rb +29 -3
  335. data/spec/support/fakeweb.rb +2 -0
  336. data/spec/twilio_spec.rb +15 -0
  337. data/spec/twiml/messaging_response_spec.rb +90 -0
  338. data/spec/twiml/voice_response_spec.rb +474 -0
  339. data/spec/util/configuration_spec.rb +15 -0
  340. data/spec/util/url_encode_spec.rb +2 -2
  341. data/twilio-ruby.gemspec +32 -26
  342. metadata +502 -152
  343. data/CHANGES +0 -47
  344. data/docs/Makefile +0 -130
  345. data/docs/_themes/LICENSE +0 -45
  346. data/docs/_themes/README.rst +0 -25
  347. data/docs/_themes/flask_theme_support.py +0 -86
  348. data/docs/_themes/kr/layout.html +0 -32
  349. data/docs/_themes/kr/relations.html +0 -19
  350. data/docs/_themes/kr/static/flasky.css_t +0 -469
  351. data/docs/_themes/kr/static/small_flask.css +0 -70
  352. data/docs/_themes/kr/theme.conf +0 -7
  353. data/docs/_themes/kr_small/layout.html +0 -22
  354. data/docs/_themes/kr_small/static/flasky.css_t +0 -287
  355. data/docs/_themes/kr_small/theme.conf +0 -10
  356. data/docs/changelog.rst +0 -1
  357. data/docs/conf.py +0 -266
  358. data/docs/faq.rst +0 -42
  359. data/docs/getting-started.rst +0 -91
  360. data/docs/index.rst +0 -109
  361. data/docs/make.bat +0 -170
  362. data/docs/src/pip-delete-this-directory.txt +0 -5
  363. data/docs/usage/accounts.rst +0 -89
  364. data/docs/usage/applications.rst +0 -108
  365. data/docs/usage/basics.rst +0 -102
  366. data/docs/usage/caller-ids.rst +0 -45
  367. data/docs/usage/conferences.rst +0 -108
  368. data/docs/usage/errors.rst +0 -29
  369. data/docs/usage/messages.rst +0 -109
  370. data/docs/usage/notifications.rst +0 -70
  371. data/docs/usage/phone-calls.rst +0 -166
  372. data/docs/usage/phone-numbers.rst +0 -174
  373. data/docs/usage/queues.rst +0 -112
  374. data/docs/usage/recordings.rst +0 -96
  375. data/docs/usage/sip.rst +0 -103
  376. data/docs/usage/token-generation.rst +0 -81
  377. data/docs/usage/transcriptions.rst +0 -31
  378. data/docs/usage/twiml.rst +0 -69
  379. data/docs/usage/validation.rst +0 -71
  380. data/lib/twilio-ruby/rest/applications.rb +0 -6
  381. data/lib/twilio-ruby/rest/authorized_connect_apps.rb +0 -6
  382. data/lib/twilio-ruby/rest/available_phone_numbers/country.rb +0 -10
  383. data/lib/twilio-ruby/rest/available_phone_numbers/local.rb +0 -11
  384. data/lib/twilio-ruby/rest/available_phone_numbers/mobile.rb +0 -11
  385. data/lib/twilio-ruby/rest/available_phone_numbers/toll_free.rb +0 -11
  386. data/lib/twilio-ruby/rest/available_phone_numbers.rb +0 -13
  387. data/lib/twilio-ruby/rest/calls.rb +0 -28
  388. data/lib/twilio-ruby/rest/conferences/participants.rb +0 -23
  389. data/lib/twilio-ruby/rest/conferences.rb +0 -12
  390. data/lib/twilio-ruby/rest/connect_apps.rb +0 -6
  391. data/lib/twilio-ruby/rest/errors.rb +0 -14
  392. data/lib/twilio-ruby/rest/incoming_phone_numbers/local.rb +0 -13
  393. data/lib/twilio-ruby/rest/incoming_phone_numbers/mobile.rb +0 -13
  394. data/lib/twilio-ruby/rest/incoming_phone_numbers/toll_free.rb +0 -13
  395. data/lib/twilio-ruby/rest/incoming_phone_numbers.rb +0 -17
  396. data/lib/twilio-ruby/rest/instance_resource.rb +0 -101
  397. data/lib/twilio-ruby/rest/list_resource.rb +0 -110
  398. data/lib/twilio-ruby/rest/media.rb +0 -14
  399. data/lib/twilio-ruby/rest/messages.rb +0 -17
  400. data/lib/twilio-ruby/rest/notifications.rb +0 -6
  401. data/lib/twilio-ruby/rest/outgoing_caller_ids.rb +0 -25
  402. data/lib/twilio-ruby/rest/queues/members.rb +0 -29
  403. data/lib/twilio-ruby/rest/queues.rb +0 -12
  404. data/lib/twilio-ruby/rest/recordings.rb +0 -35
  405. data/lib/twilio-ruby/rest/sandbox.rb +0 -5
  406. data/lib/twilio-ruby/rest/sip/credential_lists/credentials.rb +0 -6
  407. data/lib/twilio-ruby/rest/sip/credential_lists.rb +0 -11
  408. data/lib/twilio-ruby/rest/sip/domains/credential_list_mappings.rb +0 -6
  409. data/lib/twilio-ruby/rest/sip/domains/ip_access_control_list_mappings.rb +0 -6
  410. data/lib/twilio-ruby/rest/sip/domains.rb +0 -12
  411. data/lib/twilio-ruby/rest/sip/ip_access_control_lists/ip_addresses.rb +0 -6
  412. data/lib/twilio-ruby/rest/sip/ip_access_control_lists.rb +0 -11
  413. data/lib/twilio-ruby/rest/sip.rb +0 -12
  414. data/lib/twilio-ruby/rest/sms/messages.rb +0 -15
  415. data/lib/twilio-ruby/rest/sms/short_codes.rb +0 -8
  416. data/lib/twilio-ruby/rest/sms.rb +0 -11
  417. data/lib/twilio-ruby/rest/transcriptions.rb +0 -6
  418. data/lib/twilio-ruby/rest/usage/records.rb +0 -21
  419. data/lib/twilio-ruby/rest/usage/triggers.rb +0 -12
  420. data/lib/twilio-ruby/rest/usage.rb +0 -10
  421. data/lib/twilio-ruby/rest/utils.rb +0 -25
  422. data/lib/twilio-ruby/twiml/response.rb +0 -15
  423. data/lib/twilio-ruby/util/capability.rb +0 -61
  424. data/lib/twilio-ruby/util/request_validator.rb +0 -22
  425. data/spec/rest/account_spec.rb +0 -58
  426. data/spec/rest/call_spec.rb +0 -18
  427. data/spec/rest/client_spec.rb +0 -100
  428. data/spec/rest/conference_spec.rb +0 -9
  429. data/spec/rest/instance_resource_spec.rb +0 -15
  430. data/spec/rest/message_spec.rb +0 -12
  431. data/spec/rest/numbers_spec.rb +0 -46
  432. data/spec/rest/queue_spec.rb +0 -9
  433. data/spec/rest/recording_spec.rb +0 -9
  434. data/spec/util/capability_spec.rb +0 -137
  435. data/spec/util/request_validator_spec.rb +0 -65
@@ -0,0 +1,56 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
7
+ module Twilio
8
+ module REST
9
+ class Chat
10
+ class V2 < Version
11
+ ##
12
+ # Initialize the V2 version of Chat
13
+ def initialize(domain)
14
+ super
15
+ @version = 'v2'
16
+ @credentials = nil
17
+ @services = nil
18
+ end
19
+
20
+ ##
21
+ # @param [String] sid The sid
22
+ # @return [Twilio::REST::Chat::V2::CredentialInstance] if sid was passed.
23
+ # @return [Twilio::REST::Chat::V2::CredentialList]
24
+ def credentials(sid=:unset)
25
+ if sid.nil?
26
+ raise ArgumentError, 'sid cannot be nil'
27
+ elsif sid == :unset
28
+ @credentials ||= CredentialList.new self
29
+ else
30
+ CredentialContext.new(self, sid)
31
+ end
32
+ end
33
+
34
+ ##
35
+ # @param [String] sid The sid
36
+ # @return [Twilio::REST::Chat::V2::ServiceInstance] if sid was passed.
37
+ # @return [Twilio::REST::Chat::V2::ServiceList]
38
+ def services(sid=:unset)
39
+ if sid.nil?
40
+ raise ArgumentError, 'sid cannot be nil'
41
+ elsif sid == :unset
42
+ @services ||= ServiceList.new self
43
+ else
44
+ ServiceContext.new(self, sid)
45
+ end
46
+ end
47
+
48
+ ##
49
+ # Provide a user friendly representation
50
+ def to_s
51
+ '<Twilio::REST::Chat::V2>'
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,59 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
7
+ module Twilio
8
+ module REST
9
+ class Chat < Domain
10
+ ##
11
+ # Initialize the Chat Domain
12
+ def initialize(twilio)
13
+ super
14
+
15
+ @base_url = 'https://chat.twilio.com'
16
+ @host = 'chat.twilio.com'
17
+ @port = 443
18
+
19
+ # Versions
20
+ @v1 = nil
21
+ @v2 = nil
22
+ end
23
+
24
+ ##
25
+ # Version v1 of chat
26
+ def v1
27
+ @v1 ||= V1.new self
28
+ end
29
+
30
+ ##
31
+ # Version v2 of chat
32
+ def v2
33
+ @v2 ||= V2.new self
34
+ end
35
+
36
+ ##
37
+ # @param [String] sid The sid
38
+ # @return [Twilio::REST::Chat::V2::CredentialInstance] if sid was passed.
39
+ # @return [Twilio::REST::Chat::V2::CredentialList]
40
+ def credentials(sid=:unset)
41
+ self.v2.credentials(sid)
42
+ end
43
+
44
+ ##
45
+ # @param [String] sid The sid
46
+ # @return [Twilio::REST::Chat::V2::ServiceInstance] if sid was passed.
47
+ # @return [Twilio::REST::Chat::V2::ServiceList]
48
+ def services(sid=:unset)
49
+ self.v2.services(sid)
50
+ end
51
+
52
+ ##
53
+ # Provide a user friendly representation
54
+ def to_s
55
+ '#<Twilio::REST::Chat>'
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,235 +1,327 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
1
7
  module Twilio
2
8
  module REST
3
9
  ##
4
- # The Twilio::REST::Client class caches authentication parameters and
5
- # exposes methods to make HTTP requests to Twilio's REST API. However, you
6
- # should never really need to call these methods yourself since you can
7
- # work with the more pleasant wrapper objects like Twilio::REST::Call.
8
- #
9
- # Instantiate a client like so:
10
- #
11
- # @client = Twilio::REST::Client.new account_sid, auth_token
12
- #
13
- # There are a few options you can use to configure the way your client will
14
- # communicate with Twilio. See #new for a list and descriptions.
15
- #
16
- # Once you have a client object you can use it to do fun things. Every
17
- # client object exposes two wrapper objects which you can use as entry
18
- # points into Twilio: +account+ and +accounts+.
19
- #
20
- # ==== @client.account
21
- #
22
- # Most of the time you'll want to start with the +account+ attribute. This
23
- # object is an instance of Twilio::REST::Account that wraps the account
24
- # referenced by the +account_sid+ you used when instantiating the client.
25
- #
26
- # An instance of Twilio::REST::Account exposes objects wrapping all of the
27
- # account-level Twilio resources as properties. So
28
- #
29
- # @client.account.calls
30
- #
31
- # represents an account's call list.
32
- #
33
- # ==== @client.accounts
34
- #
35
- # If you are doing anything related to subaccounts you'll want to start
36
- # here. This object is an instance of Twilio::REST::Accounts that wraps
37
- # the list of accounts belonging to the master account referenced by
38
- # the +account_sid+ used to instantiate the client.
39
- #
40
- # This class inherits from Twilio::REST::ListResource, so you can use
41
- # methods like ListResource#list to return a (possibly filtered) list of
42
- # accounts and ListResource#create to create a new account. Use
43
- # ListResource#get to grab a particular account once you know its sid.
10
+ # A client for accessing the Twilio API.
44
11
  class Client
45
- include Twilio::Util
46
- include Twilio::REST::Utils
47
-
48
- API_VERSION = '2010-04-01'
49
-
50
- # 1.8.7 doesn't have the RUBY_ENGINE constant.
51
- engine = !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby'
52
-
53
- HTTP_HEADERS = {
54
- 'Accept' => 'application/json',
55
- 'Accept-Charset' => 'utf-8',
56
- 'User-Agent' => "twilio-ruby/#{Twilio::VERSION} (#{engine}/#{RUBY_PLATFORM} #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL})",
57
- }
58
-
59
- DEFAULTS = {
60
- :host => 'api.twilio.com',
61
- :port => 443,
62
- :use_ssl => true,
63
- :ssl_verify_peer => true,
64
- :ssl_ca_file => File.dirname(__FILE__) + '/../../../conf/cacert.pem',
65
- :timeout => 30,
66
- :proxy_addr => nil,
67
- :proxy_port => nil,
68
- :proxy_user => nil,
69
- :proxy_pass => nil,
70
- :retry_limit => 1,
71
- }
72
-
73
- attr_reader :account_sid, :account, :accounts, :last_request,
74
- :last_response
75
-
76
- ##
77
- # Instantiate a new HTTP client to talk to Twilio. The parameters
78
- # +account_sid+ and +auth_token+ are required and used to generate the
79
- # HTTP basic auth header in each request. The +options+ parameter is a
80
- # hash of connection configuration options. the following keys are
81
- # supported:
82
- #
83
- # === <tt>:host => 'api.twilio.com'</tt>
84
- #
85
- # The domain to which you'd like the client to make HTTP requests. Useful
86
- # for testing. Defaults to 'api.twilio.com'.
87
- #
88
- # === <tt>:port => 443</tt>
89
- #
90
- # The port on which to connect to the above domain. Defaults to 443 and
91
- # should be left that way except in testing environments.
92
- #
93
- # === <tt>:use_ssl => true</tt>
94
- #
95
- # Declare whether ssl should be used for connections to the above domain.
96
- # Defaults to true and should be left alone except when testing.
97
- #
98
- # === <tt>:ssl_verify_peer => true</tt>
99
- #
100
- # Declare whether to verify the host's ssl cert when setting up the
101
- # connection to the above domain. Defaults to true, but can be turned off
102
- # to avoid ssl certificate verification failures in environments without
103
- # the necessary ca certificates.
104
- #
105
- # === <tt>:ssl_ca_file => '/path/to/ca/file'</tt>
106
- #
107
- # Specify the path to the certificate authority bundle you'd like to use
108
- # to verify Twilio's SSL certificate on each request. If not specified, a
109
- # certificate bundle extraced from Firefox is packaged with the gem and
110
- # used by default.
111
- #
112
- # === <tt>:timeout => 30</tt>
113
- #
114
- # Set the time in seconds to wait before timing out the HTTP request.
115
- # Defaults to 30 seconds. If you aren't fetching giant pages of call or
116
- # SMS logs you can safely decrease this to something like 3 seconds or
117
- # lower. In paricular if you are sending SMS you can set this to 1 second
118
- # or less and swallow the exception if you don't care about the response.
119
- #
120
- # === <tt>:proxy_addr => 'proxy.host.domain'</tt>
121
- #
122
- # The domain of a proxy through which you'd like the client to make HTTP
123
- # requests. Defaults to nil.
124
- #
125
- # === <tt>:proxy_port => 3128</tt>
126
- #
127
- # The port on which to connect to the above proxy. Defaults to nil.
128
- #
129
- # === <tt>:proxy_user => 'username'</tt>
130
- #
131
- # The user name to use for authentication with the proxy. Defaults to nil.
132
- #
133
- # === <tt>:proxy_pass => 'password'</tt>
134
- #
135
- # The password to use for authentication with the proxy. Defaults to nil.
136
- #
137
- # === <tt>:retry_limit => 1</tt>
138
- #
139
- # The number of times to retry a request that has failed before throwing
140
- # an exception. Defaults to one.
141
- def initialize(account_sid, auth_token, options={})
142
- @account_sid, @auth_token = account_sid.strip, auth_token.strip
143
- @config = DEFAULTS.merge! options
144
- set_up_connection
145
- set_up_subresources
146
- end
147
-
148
- def inspect # :nodoc:
149
- "<Twilio::REST::Client @account_sid=#{@account_sid}>"
150
- end
151
-
152
- ##
153
- # Define #get, #put, #post and #delete helper methods for sending HTTP
154
- # requests to Twilio. You shouldn't need to use these methods directly,
155
- # but they can be useful for debugging. Each method returns a hash
156
- # obtained from parsing the JSON object in the response body.
157
- [:get, :put, :post, :delete].each do |method|
158
- method_class = Net::HTTP.const_get method.to_s.capitalize
159
- define_method method do |path, *args|
160
- params = twilify args[0]; params = {} if params.empty?
161
- unless args[1] # build the full path unless already given
162
- path = "#{path}.json"
163
- path << "?#{url_encode(params)}" if method == :get && !params.empty?
164
- end
165
- request = method_class.new path, HTTP_HEADERS
166
- request.basic_auth @account_sid, @auth_token
167
- request.form_data = params if [:post, :put].include? method
168
- connect_and_send request
12
+ attr_accessor :http_client, :username, :password, :account_sid, :auth_token, :region
13
+
14
+ ##
15
+ # Initializes the Twilio Client
16
+ def initialize(username=nil, password=nil, account_sid=nil, region=nil, http_client=Twilio::HTTP::Client.new)
17
+ @username = username || Twilio.account_sid
18
+ @password = password || Twilio.auth_token
19
+ @region = region
20
+ @account_sid = account_sid || @username
21
+ @auth_token = @password
22
+ @auth = [@username, @password]
23
+ @http_client = http_client
24
+
25
+ # Domains
26
+ @accounts = nil
27
+ @api = nil
28
+ @chat = nil
29
+ @ip_messaging = nil
30
+ @lookups = nil
31
+ @monitor = nil
32
+ @pricing = nil
33
+ @taskrouter = nil
34
+ @trunking = nil
35
+ @video = nil
36
+ end
37
+
38
+ ##
39
+ # Makes a request to the Twilio API using the configured http client
40
+ # Authentication information is automatically added if none is provided
41
+ def request(host, port, method, uri, params={}, data={}, headers={}, auth=nil, timeout=nil)
42
+ auth ||= @auth
43
+
44
+ headers['User-Agent'] = "twilio-ruby/#{Twilio::VERSION}" +
45
+ " (#{RUBY_ENGINE}/#{RUBY_PLATFORM}" +
46
+ " #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL})"
47
+ headers['Accept-Charset'] = 'utf-8'
48
+
49
+ if method == 'POST' && !headers['Content-Type']
50
+ headers['Content-Type'] = 'application/x-www-form-urlencoded'
51
+ end
52
+
53
+ unless headers['Accept']
54
+ headers['Accept'] = 'application/json'
169
55
  end
56
+
57
+ if !region.nil?
58
+ head, tail = uri.split('.', 2)
59
+ if !tail.start_with?(region)
60
+ uri = [head, region, tail].join('.')
61
+ end
62
+ end
63
+
64
+ @http_client.request(
65
+ host,
66
+ port,
67
+ method,
68
+ uri,
69
+ params,
70
+ data,
71
+ headers,
72
+ auth,
73
+ timeout
74
+ )
170
75
  end
171
76
 
172
- private
77
+ ##
78
+ # Access the Accounts Twilio Domain
79
+ def accounts
80
+ @accounts ||= Accounts.new self
81
+ end
173
82
 
174
83
  ##
175
- # Set up and cache a Net::HTTP object to use when making requests. This is
176
- # a private method documented for completeness.
177
- def set_up_connection # :doc:
178
- connection_class = Net::HTTP::Proxy @config[:proxy_addr],
179
- @config[:proxy_port], @config[:proxy_user], @config[:proxy_pass]
180
- @connection = connection_class.new @config[:host], @config[:port]
181
- set_up_ssl
182
- @connection.open_timeout = @config[:timeout]
183
- @connection.read_timeout = @config[:timeout]
84
+ # Access the Api Twilio Domain
85
+ def api
86
+ @api ||= Api.new self
184
87
  end
185
-
88
+
186
89
  ##
187
- # Set up the ssl properties of the <tt>@connection</tt> Net::HTTP object.
188
- # This is a private method documented for completeness.
189
- def set_up_ssl # :doc:
190
- @connection.use_ssl = @config[:use_ssl]
191
- if @config[:ssl_verify_peer]
192
- @connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
193
- @connection.ca_file = @config[:ssl_ca_file]
194
- else
195
- @connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
196
- end
90
+ # Access the Chat Twilio Domain
91
+ def chat
92
+ @chat ||= Chat.new self
197
93
  end
198
94
 
199
95
  ##
200
- # Set up +account+ and +accounts+ attributes.
201
- def set_up_subresources # :doc:
202
- @accounts = Twilio::REST::Accounts.new "/#{API_VERSION}/Accounts", self
203
- @account = @accounts.get @account_sid
96
+ # Access the IpMessaging Twilio Domain
97
+ def ip_messaging
98
+ @ip_messaging ||= IpMessaging.new self
204
99
  end
205
100
 
206
101
  ##
207
- # Send an HTTP request using the cached <tt>@connection</tt> object and
208
- # return the JSON response body parsed into a hash. Also save the raw
209
- # Net::HTTP::Request and Net::HTTP::Response objects as
210
- # <tt>@last_request</tt> and <tt>@last_response</tt> to allow for
211
- # inspection later.
212
- def connect_and_send(request) # :doc:
213
- @last_request = request
214
- retries_left = @config[:retry_limit]
215
- begin
216
- response = @connection.request request
217
- @last_response = response
218
- if response.kind_of? Net::HTTPServerError
219
- raise Twilio::REST::ServerError
220
- end
221
- rescue Exception
222
- raise if request.class == Net::HTTP::Post
223
- if retries_left > 0 then retries_left -= 1; retry else raise end
224
- end
225
- if response.body and !response.body.empty?
226
- object = MultiJson.load response.body
227
- end
228
- if response.kind_of? Net::HTTPClientError
229
- raise Twilio::REST::RequestError.new object['message'], object['code']
230
- end
231
- object
102
+ # Access the Lookups Twilio Domain
103
+ def lookups
104
+ @lookups ||= Lookups.new self
105
+ end
106
+
107
+ ##
108
+ # Access the Monitor Twilio Domain
109
+ def monitor
110
+ @monitor ||= Monitor.new self
111
+ end
112
+
113
+ ##
114
+ # Access the Pricing Twilio Domain
115
+ def pricing
116
+ @pricing ||= Pricing.new self
117
+ end
118
+
119
+ ##
120
+ # Access the Taskrouter Twilio Domain
121
+ def taskrouter
122
+ @taskrouter ||= Taskrouter.new self
123
+ end
124
+
125
+ ##
126
+ # Access the Trunking Twilio Domain
127
+ def trunking
128
+ @trunking ||= Trunking.new self
129
+ end
130
+
131
+ ##
132
+ # Access the Video Twilio Domain
133
+ def video
134
+ @video ||= Video.new self
135
+ end
136
+
137
+ ##
138
+ # @param [String] sid The sid
139
+ # @return [Twilio::REST::Api::V2010::AccountContext::AddressInstance] if sid was passed.
140
+ # @return [Twilio::REST::Api::V2010::AccountContext::AddressList]
141
+ def addresses(sid=:unset)
142
+ self.api.v2010.account.addresses(sid)
143
+ end
144
+
145
+ ##
146
+ # @param [String] sid A 34 character string that uniquely identifies this
147
+ # resource.
148
+ # @return [Twilio::REST::Api::V2010::AccountContext::ApplicationInstance] if sid was passed.
149
+ # @return [Twilio::REST::Api::V2010::AccountContext::ApplicationList]
150
+ def applications(sid=:unset)
151
+ self.api.v2010.account.applications(sid)
152
+ end
153
+
154
+ ##
155
+ # @param [String] connect_app_sid The unique id of the Connect App that was
156
+ # authorized.
157
+ # @return [Twilio::REST::Api::V2010::AccountContext::AuthorizedConnectAppInstance] if connect_app_sid was passed.
158
+ # @return [Twilio::REST::Api::V2010::AccountContext::AuthorizedConnectAppList]
159
+ def authorized_connect_apps(connect_app_sid=:unset)
160
+ self.api.v2010.account.authorized_connect_apps(connect_app_sid)
161
+ end
162
+
163
+ ##
164
+ # @param [String] country_code The ISO Country code to lookup phone numbers for.
165
+ # @return [Twilio::REST::Api::V2010::AccountContext::AvailablePhoneNumberCountryInstance] if country_code was passed.
166
+ # @return [Twilio::REST::Api::V2010::AccountContext::AvailablePhoneNumberCountryList]
167
+ def available_phone_numbers(country_code=:unset)
168
+ self.api.v2010.account.available_phone_numbers(country_code)
169
+ end
170
+
171
+ ##
172
+ # @param [String] sid A 34 character string that uniquely identifies this
173
+ # resource.
174
+ # @return [Twilio::REST::Api::V2010::AccountContext::CallInstance] if sid was passed.
175
+ # @return [Twilio::REST::Api::V2010::AccountContext::CallList]
176
+ def calls(sid=:unset)
177
+ self.api.v2010.account.calls(sid)
178
+ end
179
+
180
+ ##
181
+ # @param [String] sid A 34 character string that uniquely identifies this
182
+ # conference.
183
+ # @return [Twilio::REST::Api::V2010::AccountContext::ConferenceInstance] if sid was passed.
184
+ # @return [Twilio::REST::Api::V2010::AccountContext::ConferenceList]
185
+ def conferences(sid=:unset)
186
+ self.api.v2010.account.conferences(sid)
187
+ end
188
+
189
+ ##
190
+ # @param [String] sid The unique id of this Connect App.
191
+ # @return [Twilio::REST::Api::V2010::AccountContext::ConnectAppInstance] if sid was passed.
192
+ # @return [Twilio::REST::Api::V2010::AccountContext::ConnectAppList]
193
+ def connect_apps(sid=:unset)
194
+ self.api.v2010.account.connect_apps(sid)
195
+ end
196
+
197
+ ##
198
+ # @param [String] sid A 34 character string that uniquely identifies this
199
+ # resource.
200
+ # @return [Twilio::REST::Api::V2010::AccountContext::IncomingPhoneNumberInstance] if sid was passed.
201
+ # @return [Twilio::REST::Api::V2010::AccountContext::IncomingPhoneNumberList]
202
+ def incoming_phone_numbers(sid=:unset)
203
+ self.api.v2010.account.incoming_phone_numbers(sid)
204
+ end
205
+
206
+ ##
207
+ # @param [String] sid The sid
208
+ # @return [Twilio::REST::Api::V2010::AccountContext::KeyInstance] if sid was passed.
209
+ # @return [Twilio::REST::Api::V2010::AccountContext::KeyList]
210
+ def keys(sid=:unset)
211
+ self.api.v2010.account.keys(sid)
212
+ end
213
+
214
+ ##
215
+ # @param [String] sid A 34 character string that uniquely identifies this
216
+ # resource.
217
+ # @return [Twilio::REST::Api::V2010::AccountContext::MessageInstance] if sid was passed.
218
+ # @return [Twilio::REST::Api::V2010::AccountContext::MessageList]
219
+ def messages(sid=:unset)
220
+ self.api.v2010.account.messages(sid)
221
+ end
222
+
223
+ ##
224
+ # @return [Twilio::REST::Api::V2010::AccountContext::NewKeyInstance]
225
+ def new_keys
226
+ self.api.v2010.account.new_keys
227
+ end
228
+
229
+ ##
230
+ # @return [Twilio::REST::Api::V2010::AccountContext::NewSigningKeyInstance]
231
+ def new_signing_keys
232
+ self.api.v2010.account.new_signing_keys
233
+ end
234
+
235
+ ##
236
+ # @param [String] sid A 34 character string that uniquely identifies this
237
+ # resource.
238
+ # @return [Twilio::REST::Api::V2010::AccountContext::NotificationInstance] if sid was passed.
239
+ # @return [Twilio::REST::Api::V2010::AccountContext::NotificationList]
240
+ def notifications(sid=:unset)
241
+ self.api.v2010.account.notifications(sid)
242
+ end
243
+
244
+ ##
245
+ # @param [String] sid A 34 character string that uniquely identifies this
246
+ # resource.
247
+ # @return [Twilio::REST::Api::V2010::AccountContext::OutgoingCallerIdInstance] if sid was passed.
248
+ # @return [Twilio::REST::Api::V2010::AccountContext::OutgoingCallerIdList]
249
+ def outgoing_caller_ids(sid=:unset)
250
+ self.api.v2010.account.outgoing_caller_ids(sid)
251
+ end
252
+
253
+ ##
254
+ # @param [String] sid A 34 character string that uniquely identifies this queue.
255
+ # @return [Twilio::REST::Api::V2010::AccountContext::QueueInstance] if sid was passed.
256
+ # @return [Twilio::REST::Api::V2010::AccountContext::QueueList]
257
+ def queues(sid=:unset)
258
+ self.api.v2010.account.queues(sid)
259
+ end
260
+
261
+ ##
262
+ # @param [String] sid A 34 character string that uniquely identifies this
263
+ # resource.
264
+ # @return [Twilio::REST::Api::V2010::AccountContext::RecordingInstance] if sid was passed.
265
+ # @return [Twilio::REST::Api::V2010::AccountContext::RecordingList]
266
+ def recordings(sid=:unset)
267
+ self.api.v2010.account.recordings(sid)
268
+ end
269
+
270
+ ##
271
+ # @param [String] sid The sid
272
+ # @return [Twilio::REST::Api::V2010::AccountContext::SigningKeyInstance] if sid was passed.
273
+ # @return [Twilio::REST::Api::V2010::AccountContext::SigningKeyList]
274
+ def signing_keys(sid=:unset)
275
+ self.api.v2010.account.signing_keys(sid)
276
+ end
277
+
278
+ ##
279
+ # @return [Twilio::REST::Api::V2010::AccountContext::SipInstance]
280
+ def sip
281
+ self.api.v2010.account.sip
282
+ end
283
+
284
+ ##
285
+ # @param [String] sid A 34 character string that uniquely identifies this
286
+ # resource.
287
+ # @return [Twilio::REST::Api::V2010::AccountContext::ShortCodeInstance] if sid was passed.
288
+ # @return [Twilio::REST::Api::V2010::AccountContext::ShortCodeList]
289
+ def short_codes(sid=:unset)
290
+ self.api.v2010.account.short_codes(sid)
291
+ end
292
+
293
+ ##
294
+ # @return [Twilio::REST::Api::V2010::AccountContext::TokenInstance]
295
+ def tokens
296
+ self.api.v2010.account.tokens
297
+ end
298
+
299
+ ##
300
+ # @param [String] sid A 34 character string that uniquely identifies this
301
+ # resource.
302
+ # @return [Twilio::REST::Api::V2010::AccountContext::TranscriptionInstance] if sid was passed.
303
+ # @return [Twilio::REST::Api::V2010::AccountContext::TranscriptionList]
304
+ def transcriptions(sid=:unset)
305
+ self.api.v2010.account.transcriptions(sid)
306
+ end
307
+
308
+ ##
309
+ # @return [Twilio::REST::Api::V2010::AccountContext::UsageInstance]
310
+ def usage
311
+ self.api.v2010.account.usage
312
+ end
313
+
314
+ ##
315
+ # @return [Twilio::REST::Api::V2010::AccountContext::ValidationRequestInstance]
316
+ def validation_requests
317
+ self.api.v2010.account.validation_requests
318
+ end
319
+
320
+ ##
321
+ # Provide a user friendly representation
322
+ def to_s
323
+ "#<Twilio::REST::Client #{@account_sid}>"
232
324
  end
233
325
  end
234
326
  end
235
- end
327
+ end