restcomm-ruby 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. data/AUTHORS.md +38 -0
  2. data/CHANGES.md +171 -0
  3. data/Gemfile +11 -0
  4. data/LICENSE +662 -0
  5. data/LICENSE.md +19 -0
  6. data/Makefile +12 -0
  7. data/README.md +155 -0
  8. data/Rakefile +10 -0
  9. data/conf/cacert.pem +3376 -0
  10. data/docs/Makefile +130 -0
  11. data/docs/_themes/LICENSE +45 -0
  12. data/docs/_themes/README.rst +25 -0
  13. data/docs/_themes/flask_theme_support.py +86 -0
  14. data/docs/_themes/kr/layout.html +32 -0
  15. data/docs/_themes/kr/relations.html +19 -0
  16. data/docs/_themes/kr/static/flasky.css_t +469 -0
  17. data/docs/_themes/kr/static/small_flask.css +70 -0
  18. data/docs/_themes/kr/theme.conf +7 -0
  19. data/docs/_themes/kr_small/layout.html +22 -0
  20. data/docs/_themes/kr_small/static/flasky.css_t +287 -0
  21. data/docs/_themes/kr_small/theme.conf +10 -0
  22. data/docs/changelog.rst +1 -0
  23. data/docs/conf.py +266 -0
  24. data/docs/faq.rst +42 -0
  25. data/docs/getting-started.rst +100 -0
  26. data/docs/index.rst +109 -0
  27. data/docs/make.bat +170 -0
  28. data/docs/src/pip-delete-this-directory.txt +5 -0
  29. data/docs/usage/accounts.rst +96 -0
  30. data/docs/usage/addresses.rst +102 -0
  31. data/docs/usage/applications.rst +111 -0
  32. data/docs/usage/basics.rst +120 -0
  33. data/docs/usage/caller-ids.rst +47 -0
  34. data/docs/usage/conferences.rst +112 -0
  35. data/docs/usage/errors.rst +31 -0
  36. data/docs/usage/messages.rst +142 -0
  37. data/docs/usage/notifications.rst +72 -0
  38. data/docs/usage/phone-calls.rst +193 -0
  39. data/docs/usage/phone-numbers.rst +192 -0
  40. data/docs/usage/queues.rst +117 -0
  41. data/docs/usage/recordings.rst +102 -0
  42. data/docs/usage/sip.rst +108 -0
  43. data/docs/usage/token-generation.rst +96 -0
  44. data/docs/usage/transcriptions.rst +34 -0
  45. data/docs/usage/twiml.rst +69 -0
  46. data/docs/usage/validation.rst +107 -0
  47. data/examples/examples.rb +200 -0
  48. data/examples/print-call-log.rb +25 -0
  49. data/lib/rack/restcomm_webhook_authentication.rb +47 -0
  50. data/lib/restcomm-ruby.rb +103 -0
  51. data/lib/restcomm-ruby/rest/accounts.rb +17 -0
  52. data/lib/restcomm-ruby/rest/addresses.rb +12 -0
  53. data/lib/restcomm-ruby/rest/addresses/dependent_phone_numbers.rb +6 -0
  54. data/lib/restcomm-ruby/rest/applications.rb +6 -0
  55. data/lib/restcomm-ruby/rest/authorized_connect_apps.rb +6 -0
  56. data/lib/restcomm-ruby/rest/available_phone_numbers.rb +13 -0
  57. data/lib/restcomm-ruby/rest/available_phone_numbers/country.rb +10 -0
  58. data/lib/restcomm-ruby/rest/available_phone_numbers/local.rb +11 -0
  59. data/lib/restcomm-ruby/rest/available_phone_numbers/mobile.rb +11 -0
  60. data/lib/restcomm-ruby/rest/available_phone_numbers/toll_free.rb +11 -0
  61. data/lib/restcomm-ruby/rest/call_feedback.rb +28 -0
  62. data/lib/restcomm-ruby/rest/call_feedback_summary.rb +13 -0
  63. data/lib/restcomm-ruby/rest/calls.rb +37 -0
  64. data/lib/restcomm-ruby/rest/client.rb +555 -0
  65. data/lib/restcomm-ruby/rest/conferences.rb +12 -0
  66. data/lib/restcomm-ruby/rest/conferences/participants.rb +23 -0
  67. data/lib/restcomm-ruby/rest/connect_apps.rb +6 -0
  68. data/lib/restcomm-ruby/rest/errors.rb +14 -0
  69. data/lib/restcomm-ruby/rest/incoming_phone_numbers.rb +17 -0
  70. data/lib/restcomm-ruby/rest/incoming_phone_numbers/local.rb +13 -0
  71. data/lib/restcomm-ruby/rest/incoming_phone_numbers/mobile.rb +13 -0
  72. data/lib/restcomm-ruby/rest/incoming_phone_numbers/toll_free.rb +13 -0
  73. data/lib/restcomm-ruby/rest/instance_resource.rb +88 -0
  74. data/lib/restcomm-ruby/rest/list_resource.rb +132 -0
  75. data/lib/restcomm-ruby/rest/media.rb +14 -0
  76. data/lib/restcomm-ruby/rest/messages.rb +23 -0
  77. data/lib/restcomm-ruby/rest/next_gen_list_resource.rb +29 -0
  78. data/lib/restcomm-ruby/rest/notifications.rb +6 -0
  79. data/lib/restcomm-ruby/rest/outgoing_caller_ids.rb +25 -0
  80. data/lib/restcomm-ruby/rest/queues.rb +12 -0
  81. data/lib/restcomm-ruby/rest/queues/members.rb +29 -0
  82. data/lib/restcomm-ruby/rest/recordings.rb +35 -0
  83. data/lib/restcomm-ruby/rest/sandbox.rb +5 -0
  84. data/lib/restcomm-ruby/rest/sip.rb +10 -0
  85. data/lib/restcomm-ruby/rest/sip/credential_lists.rb +11 -0
  86. data/lib/restcomm-ruby/rest/sip/credential_lists/credentials.rb +6 -0
  87. data/lib/restcomm-ruby/rest/sip/domains.rb +12 -0
  88. data/lib/restcomm-ruby/rest/sip/domains/credential_list_mappings.rb +6 -0
  89. data/lib/restcomm-ruby/rest/sip/domains/ip_access_control_list_mappings.rb +6 -0
  90. data/lib/restcomm-ruby/rest/sip/ip_access_control_lists.rb +11 -0
  91. data/lib/restcomm-ruby/rest/sip/ip_access_control_lists/ip_addresses.rb +6 -0
  92. data/lib/restcomm-ruby/rest/sms.rb +11 -0
  93. data/lib/restcomm-ruby/rest/sms/messages.rb +39 -0
  94. data/lib/restcomm-ruby/rest/sms/short_codes.rb +8 -0
  95. data/lib/restcomm-ruby/rest/task_router/activities.rb +8 -0
  96. data/lib/restcomm-ruby/rest/task_router/events.rb +8 -0
  97. data/lib/restcomm-ruby/rest/task_router/reservations.rb +8 -0
  98. data/lib/restcomm-ruby/rest/task_router/task_queues.rb +8 -0
  99. data/lib/restcomm-ruby/rest/task_router/task_queues_statistics.rb +15 -0
  100. data/lib/restcomm-ruby/rest/task_router/tasks.rb +15 -0
  101. data/lib/restcomm-ruby/rest/task_router/workers.rb +8 -0
  102. data/lib/restcomm-ruby/rest/task_router/workers_statistics.rb +8 -0
  103. data/lib/restcomm-ruby/rest/task_router/workflow_statistics.rb +7 -0
  104. data/lib/restcomm-ruby/rest/task_router/workflows.rb +8 -0
  105. data/lib/restcomm-ruby/rest/task_router/workspace_statistics.rb +7 -0
  106. data/lib/restcomm-ruby/rest/task_router/workspaces.rb +15 -0
  107. data/lib/restcomm-ruby/rest/tokens.rb +7 -0
  108. data/lib/restcomm-ruby/rest/transcriptions.rb +6 -0
  109. data/lib/restcomm-ruby/rest/usage.rb +10 -0
  110. data/lib/restcomm-ruby/rest/usage/records.rb +21 -0
  111. data/lib/restcomm-ruby/rest/usage/triggers.rb +12 -0
  112. data/lib/restcomm-ruby/rest/utils.rb +49 -0
  113. data/lib/restcomm-ruby/task_router.rb +0 -0
  114. data/lib/restcomm-ruby/task_router/capability.rb +87 -0
  115. data/lib/restcomm-ruby/twiml/response.rb +16 -0
  116. data/lib/restcomm-ruby/util.rb +15 -0
  117. data/lib/restcomm-ruby/util/capability.rb +64 -0
  118. data/lib/restcomm-ruby/util/configuration.rb +7 -0
  119. data/lib/restcomm-ruby/util/request_validator.rb +37 -0
  120. data/lib/restcomm-ruby/version.rb +3 -0
  121. data/restcomm-ruby.gemspec +34 -0
  122. data/spec/rack/twilio_webhook_authentication_spec.rb +110 -0
  123. data/spec/rest/account_spec.rb +89 -0
  124. data/spec/rest/address_spec.rb +11 -0
  125. data/spec/rest/call_feedback_spec.rb +12 -0
  126. data/spec/rest/call_feedback_summary_spec.rb +9 -0
  127. data/spec/rest/call_spec.rb +22 -0
  128. data/spec/rest/client_spec.rb +258 -0
  129. data/spec/rest/conference_spec.rb +11 -0
  130. data/spec/rest/instance_resource_spec.rb +15 -0
  131. data/spec/rest/message_spec.rb +12 -0
  132. data/spec/rest/numbers_spec.rb +58 -0
  133. data/spec/rest/queue_spec.rb +11 -0
  134. data/spec/rest/recording_spec.rb +11 -0
  135. data/spec/rest/sms/message_spec.rb +37 -0
  136. data/spec/rest/sms/messages_spec.rb +36 -0
  137. data/spec/rest/task_router/reservation_spec.rb +9 -0
  138. data/spec/rest/task_router/task_queue_spec.rb +9 -0
  139. data/spec/rest/token_spec.rb +7 -0
  140. data/spec/rest/utils_spec.rb +45 -0
  141. data/spec/spec_helper.rb +15 -0
  142. data/spec/support/fakeweb.rb +2 -0
  143. data/spec/task_router_spec.rb +114 -0
  144. data/spec/twilio_spec.rb +15 -0
  145. data/spec/util/capability_spec.rb +186 -0
  146. data/spec/util/configuration_spec.rb +13 -0
  147. data/spec/util/request_validator_spec.rb +93 -0
  148. data/spec/util/url_encode_spec.rb +12 -0
  149. metadata +298 -0
@@ -0,0 +1,12 @@
1
+ module Restcomm
2
+ module REST
3
+ class Queues < ListResource; end
4
+
5
+ class Queue < InstanceResource
6
+ def initialize(path, client, params={})
7
+ super path, client, params
8
+ resource :members
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,29 @@
1
+ module Restcomm
2
+ module REST
3
+ class Members < ListResource
4
+ def initialize(path, client)
5
+ super
6
+ # hard-code the json keys since members are special
7
+ @list_key, @instance_id_key = 'queue_members', 'call_sid'
8
+ end
9
+
10
+ def front
11
+ @instance_class.new "#{@path}/Front", @client
12
+ end
13
+
14
+ def front!
15
+ front.refresh
16
+ end
17
+
18
+ def dequeue(url, method='POST')
19
+ front.dequeue url, method
20
+ end
21
+ end
22
+
23
+ class Member < InstanceResource
24
+ def dequeue(url, method='POST')
25
+ update url: url, method: method
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,35 @@
1
+ module Restcomm
2
+ module REST
3
+ class Recordings < ListResource; end
4
+
5
+ class Recording < InstanceResource
6
+ def initialize(path, client, params={})
7
+ path.sub! /\/Calls\/CA[^\/]+/, ''
8
+ super path, client, params
9
+ resource :transcriptions
10
+ # grab a reference to the client's connection object for streaming
11
+ @connection = @client.instance_variable_get :@connection
12
+ end
13
+
14
+ ##
15
+ # Return the wav URL for this recording.
16
+ def wav
17
+ "https://#{@connection.address}#{@path}.wav"
18
+ end
19
+
20
+ def wav!(&block)
21
+ @connection.request_get @path, &block
22
+ end
23
+
24
+ ##
25
+ # Return the mp3 URL for this recording.
26
+ def mp3
27
+ "https://#{@connection.address}#{@path}.mp3"
28
+ end
29
+
30
+ def mp3!(&block)
31
+ @connection.request_get "#{@path}.mp3", &block
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ module Restcomm
2
+ module REST
3
+ class Sandbox < InstanceResource; end
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ module Restcomm
2
+ module REST
3
+ class Sip < InstanceResource
4
+ def initialize(path, client, params={})
5
+ super
6
+ resource :domains, :ip_access_control_lists, :credential_lists
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ module Restcomm
2
+ module REST
3
+ class CredentialLists < ListResource; end
4
+ class CredentialList < InstanceResource
5
+ def initialize(path, client, params={})
6
+ super
7
+ resource :credentials
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Restcomm
2
+ module REST
3
+ class Credentials < ListResource; end
4
+ class Credential < InstanceResource; end
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ module Restcomm
2
+ module REST
3
+ class Domains < ListResource; end
4
+ class Domain < InstanceResource
5
+ def initialize(path, client, params={})
6
+ super
7
+ resource :ip_access_control_list_mappings,
8
+ :credential_list_mappings
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ module Restcomm
2
+ module REST
3
+ class CredentialListMappings < ListResource; end
4
+ class CredentialListMapping < InstanceResource; end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Restcomm
2
+ module REST
3
+ class IpAccessControlListMappings < ListResource; end
4
+ class IpAccessControlListMapping < InstanceResource; end
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ module Restcomm
2
+ module REST
3
+ class IpAccessControlLists < ListResource; end
4
+ class IpAccessControlList < InstanceResource
5
+ def initialize(path, client, params={})
6
+ super
7
+ resource :ip_addresses
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Restcomm
2
+ module REST
3
+ class IpAddresses < ListResource; end
4
+ class IpAddress < InstanceResource; end
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ module Restcomm
2
+ module REST
3
+ class Sms < InstanceResource
4
+ def initialize(path, client, params={})
5
+ super
6
+ @submodule = :SMS
7
+ resource :messages, :short_codes
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,39 @@
1
+ module Restcomm
2
+ module REST
3
+ module SMS
4
+
5
+ module Deprecation
6
+ def deprecate(method_name)
7
+ old_method = "_deprecated_#{method_name}"
8
+ alias_method old_method, method_name
9
+ define_method method_name do |*args, &block|
10
+ warn "[DEPRECATED] SMS Resource is deprecated. Please use Messages (https://www.restcomm.com/docs/api/rest/message)"
11
+ send old_method, *args, &block
12
+ end
13
+ end
14
+ end
15
+
16
+ class Messages < ListResource
17
+ extend Deprecation
18
+
19
+ deprecate :list
20
+ deprecate :total
21
+ deprecate :get
22
+ deprecate :create
23
+
24
+ def initialize(path, client)
25
+ super
26
+ @list_key = 'sms_messages'
27
+ end
28
+ end
29
+
30
+ class Message < InstanceResource
31
+ extend Deprecation
32
+
33
+ deprecate :update
34
+ deprecate :refresh
35
+ deprecate :delete
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module SMS
4
+ class ShortCodes < ListResource; end
5
+ class ShortCode < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class Activities < Restcomm::REST::NextGenListResource; end
5
+ class Activity < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class Events < ListResource; end
5
+ class Event < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class Reservations < Restcomm::REST::NextGenListResource; end
5
+ class Reservation < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class TaskQueues < Restcomm::REST::NextGenListResource; end
5
+ class TaskQueue < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class TaskQueuesStatistics < Restcomm::REST::NextGenListResource
5
+ def initialize(path, client)
6
+ @path, @client = path, client
7
+ @instance_class = Restcomm::REST::TaskRouter::TaskQueueStatistics
8
+ @list_key, @instance_id_key = 'task_queues_statistics', 'task_queue_sid'
9
+ end
10
+ end
11
+
12
+ class TaskQueueStatistics < InstanceResource; end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class Tasks < Restcomm::REST::NextGenListResource; end
5
+
6
+ class Task < InstanceResource
7
+ def initialize(path, client, params={})
8
+ super path, client, params
9
+ @submodule = :TaskRouter
10
+ resource :reservations
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class Workers < Restcomm::REST::NextGenListResource; end
5
+ class Worker < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class WorkersStatistics < Restcomm::REST::InstanceResource; end
5
+ class WorkerStatistics < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class WorkflowStatistics < InstanceResource; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class Workflows < Restcomm::REST::NextGenListResource; end
5
+ class Workflow < InstanceResource; end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class WorkspaceStatistics < InstanceResource; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ module Restcomm
2
+ module REST
3
+ module TaskRouter
4
+ class Workspaces < Restcomm::REST::NextGenListResource; end
5
+
6
+ class Workspace < InstanceResource
7
+ def initialize(path, client, params={})
8
+ super path, client, params
9
+ @submodule = :TaskRouter
10
+ resource :activities, :events, :task_queues, :tasks, :workers, :workflows
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ module Restcomm
2
+ module REST
3
+ class Tokens < ListResource; end
4
+
5
+ class Token < InstanceResource; end
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ module Restcomm
2
+ module REST
3
+ class Transcriptions < ListResource; end
4
+ class Transcription < InstanceResource; end
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ module Restcomm
2
+ module REST
3
+ class Usage < InstanceResource
4
+ def initialize(path, client, params={})
5
+ super
6
+ resource :records, :triggers
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,21 @@
1
+ module Restcomm
2
+ module REST
3
+ class Records < ListResource
4
+
5
+ SUBRESOURCES = [:daily, :monthly, :yearly, :all_time, :today,
6
+ :yesterday, :this_month, :last_month]
7
+
8
+ def initialize(path, client)
9
+ super
10
+ @list_key = 'usage_records'
11
+ end
12
+
13
+ def method_missing(method, *args)
14
+ return super unless SUBRESOURCES.include? method
15
+ self.class.new "#{@path}/#{restify(method)}", @client
16
+ end
17
+ end
18
+
19
+ class Record < InstanceResource; end
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ module Restcomm
2
+ module REST
3
+ class Triggers < ListResource
4
+ def initialize(path, client)
5
+ super
6
+ @list_key = 'usage_triggers'
7
+ end
8
+ end
9
+
10
+ class Trigger < InstanceResource; end
11
+ end
12
+ end