bandwidth-sdk 0.1.0 → 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +27 -27
  3. data/README.md +115 -1
  4. data/lib/bandwidth.rb +39 -37
  5. data/lib/bandwidth/api_helper.rb +280 -280
  6. data/lib/bandwidth/client.rb +41 -32
  7. data/lib/bandwidth/configuration.rb +130 -111
  8. data/lib/bandwidth/exceptions/api_exception.rb +20 -20
  9. data/lib/bandwidth/http/api_response.rb +36 -36
  10. data/lib/bandwidth/http/auth/messaging_basic_auth.rb +22 -0
  11. data/lib/bandwidth/http/auth/voice_basic_auth.rb +22 -22
  12. data/lib/bandwidth/http/faraday_client.rb +64 -64
  13. data/lib/bandwidth/http/http_call_back.rb +24 -24
  14. data/lib/bandwidth/http/http_client.rb +104 -104
  15. data/lib/bandwidth/http/http_method_enum.rb +13 -13
  16. data/lib/bandwidth/http/http_request.rb +50 -50
  17. data/lib/bandwidth/http/http_response.rb +29 -29
  18. data/lib/bandwidth/messaging_lib/messaging.rb +23 -0
  19. data/lib/bandwidth/messaging_lib/messaging/client.rb +40 -0
  20. data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +406 -0
  21. data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +49 -0
  22. data/lib/bandwidth/messaging_lib/messaging/exceptions/generic_client_exception.rb +46 -0
  23. data/lib/bandwidth/messaging_lib/messaging/exceptions/path_client_exception.rb +49 -0
  24. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_callback_message.rb +80 -0
  25. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message.rb +125 -0
  26. data/lib/bandwidth/messaging_lib/messaging/models/deferred_result.rb +44 -0
  27. data/lib/bandwidth/messaging_lib/messaging/models/field_error.rb +44 -0
  28. data/lib/bandwidth/messaging_lib/messaging/models/media.rb +123 -0
  29. data/lib/bandwidth/messaging_lib/messaging/models/message_request.rb +80 -0
  30. data/lib/bandwidth/messaging_lib/messaging/models/tag.rb +44 -0
  31. data/lib/bandwidth/models/base_model.rb +36 -36
  32. data/lib/bandwidth/voice_lib/bxml/bxml.rb +40 -0
  33. data/lib/bandwidth/voice_lib/bxml/verbs/forward.rb +19 -0
  34. data/lib/bandwidth/voice_lib/bxml/verbs/gather.rb +38 -0
  35. data/lib/bandwidth/voice_lib/bxml/verbs/hangup.rb +15 -0
  36. data/lib/bandwidth/voice_lib/bxml/verbs/pause.rb +16 -0
  37. data/lib/bandwidth/voice_lib/bxml/verbs/phone_number.rb +19 -0
  38. data/lib/bandwidth/voice_lib/bxml/verbs/play_audio.rb +18 -0
  39. data/lib/bandwidth/voice_lib/bxml/verbs/redirect.rb +21 -0
  40. data/lib/bandwidth/voice_lib/bxml/verbs/send_dtmf.rb +14 -0
  41. data/lib/bandwidth/voice_lib/bxml/verbs/speak_sentence.rb +19 -0
  42. data/lib/bandwidth/voice_lib/bxml/verbs/transfer.rb +38 -0
  43. data/lib/bandwidth/voice_lib/bxml/verbs/xml_verb.rb +27 -0
  44. data/lib/bandwidth/voice_lib/voice.rb +27 -23
  45. data/lib/bandwidth/voice_lib/voice/client.rb +40 -36
  46. data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +184 -0
  47. data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +49 -49
  48. data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_exception.rb +51 -0
  49. data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_not_found_exception.rb +49 -0
  50. data/lib/bandwidth/voice_lib/voice/exceptions/bandwidth_rate_limit_error_exception.rb +56 -0
  51. data/lib/bandwidth/voice_lib/voice/models/answer_method_enum.rb +35 -35
  52. data/lib/bandwidth/voice_lib/voice/models/api_call_response.rb +116 -116
  53. data/lib/bandwidth/voice_lib/voice/models/api_create_call_request.rb +125 -125
  54. data/lib/bandwidth/voice_lib/voice/models/api_modify_call_request.rb +80 -80
  55. data/lib/bandwidth/voice_lib/voice/models/bandwidth_callback_message_voice.rb +98 -98
  56. data/lib/bandwidth/voice_lib/voice/models/disconnect_method_enum.rb +35 -35
  57. data/lib/bandwidth/voice_lib/voice/models/field_error.rb +44 -0
  58. data/lib/bandwidth/voice_lib/voice/models/redirect_method_enum.rb +35 -35
  59. data/lib/bandwidth/voice_lib/voice/models/state_enum.rb +17 -17
  60. metadata +36 -47
  61. data/lib/bandwidth/voice_lib/voice/bxml/bxml.rb +0 -36
  62. data/lib/bandwidth/voice_lib/voice/bxml/verbs/forward.rb +0 -19
  63. data/lib/bandwidth/voice_lib/voice/bxml/verbs/gather.rb +0 -37
  64. data/lib/bandwidth/voice_lib/voice/bxml/verbs/hangup.rb +0 -14
  65. data/lib/bandwidth/voice_lib/voice/bxml/verbs/pause.rb +0 -15
  66. data/lib/bandwidth/voice_lib/voice/bxml/verbs/phone_number.rb +0 -18
  67. data/lib/bandwidth/voice_lib/voice/bxml/verbs/play_audio.rb +0 -17
  68. data/lib/bandwidth/voice_lib/voice/bxml/verbs/redirect.rb +0 -20
  69. data/lib/bandwidth/voice_lib/voice/bxml/verbs/send_dtmf.rb +0 -12
  70. data/lib/bandwidth/voice_lib/voice/bxml/verbs/speak_sentence.rb +0 -18
  71. data/lib/bandwidth/voice_lib/voice/bxml/verbs/transfer.rb +0 -37
  72. data/lib/bandwidth/voice_lib/voice/bxml/verbs/xml_verb.rb +0 -26
  73. data/lib/bandwidth/voice_lib/voice/controllers/calls_controller.rb +0 -88
@@ -0,0 +1,80 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ # MessageRequest Model.
8
+ class MessageRequest < BaseModel
9
+ # TODO: Write general description for this method
10
+ # @return [String]
11
+ attr_accessor :application_id
12
+
13
+ # TODO: Write general description for this method
14
+ # @return [List of String]
15
+ attr_accessor :to
16
+
17
+ # TODO: Write general description for this method
18
+ # @return [String]
19
+ attr_accessor :from
20
+
21
+ # TODO: Write general description for this method
22
+ # @return [String]
23
+ attr_accessor :text
24
+
25
+ # TODO: Write general description for this method
26
+ # @return [List of String]
27
+ attr_accessor :media
28
+
29
+ # TODO: Write general description for this method
30
+ # @return [String]
31
+ attr_accessor :tag
32
+
33
+ # A mapping from model property names to API property names.
34
+ def self.names
35
+ @_hash = {} if @_hash.nil?
36
+ @_hash['application_id'] = 'applicationId'
37
+ @_hash['to'] = 'to'
38
+ @_hash['from'] = 'from'
39
+ @_hash['text'] = 'text'
40
+ @_hash['media'] = 'media'
41
+ @_hash['tag'] = 'tag'
42
+ @_hash
43
+ end
44
+
45
+ def initialize(application_id = nil,
46
+ to = nil,
47
+ from = nil,
48
+ text = nil,
49
+ media = nil,
50
+ tag = nil)
51
+ @application_id = application_id
52
+ @to = to
53
+ @from = from
54
+ @text = text
55
+ @media = media
56
+ @tag = tag
57
+ end
58
+
59
+ # Creates an instance of the object from a hash.
60
+ def self.from_hash(hash)
61
+ return nil unless hash
62
+
63
+ # Extract variables from the hash.
64
+ application_id = hash['applicationId']
65
+ to = hash['to']
66
+ from = hash['from']
67
+ text = hash['text']
68
+ media = hash['media']
69
+ tag = hash['tag']
70
+
71
+ # Create object from extracted values.
72
+ MessageRequest.new(application_id,
73
+ to,
74
+ from,
75
+ text,
76
+ media,
77
+ tag)
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,44 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ # Tag Model.
8
+ class Tag < BaseModel
9
+ # TODO: Write general description for this method
10
+ # @return [String]
11
+ attr_accessor :key
12
+
13
+ # TODO: Write general description for this method
14
+ # @return [String]
15
+ attr_accessor :value
16
+
17
+ # A mapping from model property names to API property names.
18
+ def self.names
19
+ @_hash = {} if @_hash.nil?
20
+ @_hash['key'] = 'key'
21
+ @_hash['value'] = 'value'
22
+ @_hash
23
+ end
24
+
25
+ def initialize(key = nil,
26
+ value = nil)
27
+ @key = key
28
+ @value = value
29
+ end
30
+
31
+ # Creates an instance of the object from a hash.
32
+ def self.from_hash(hash)
33
+ return nil unless hash
34
+
35
+ # Extract variables from the hash.
36
+ key = hash['key']
37
+ value = hash['value']
38
+
39
+ # Create object from extracted values.
40
+ Tag.new(key,
41
+ value)
42
+ end
43
+ end
44
+ end
@@ -1,36 +1,36 @@
1
- # bandwidth
2
- #
3
- # This file was automatically generated by APIMATIC v2.0
4
- # ( https://apimatic.io ).
5
-
6
- module Bandwidth
7
- # Base model.
8
- class BaseModel
9
- # Returns a Hash representation of the current object.
10
- def to_hash
11
- hash = {}
12
- instance_variables.each do |name|
13
- value = instance_variable_get(name)
14
- name = name[1..-1]
15
- key = self.class.names.key?(name) ? self.class.names[name] : name
16
- if value.instance_of? Array
17
- hash[key] = value.map { |v| v.is_a?(BaseModel) ? v.to_hash : v }
18
- elsif value.instance_of? Hash
19
- hash[key] = {}
20
- value.each do |k, v|
21
- hash[key][k] = v.is_a?(BaseModel) ? v.to_hash : v
22
- end
23
- else
24
- hash[key] = value.is_a?(BaseModel) ? value.to_hash : value
25
- end
26
- end
27
- hash
28
- end
29
-
30
- # Returns a JSON representation of the curent object.
31
- def to_json(options = {})
32
- hash = to_hash.reject { |k, v| v.nil? }
33
- hash.to_json(options)
34
- end
35
- end
36
- end
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ # Base model.
8
+ class BaseModel
9
+ # Returns a Hash representation of the current object.
10
+ def to_hash
11
+ hash = {}
12
+ instance_variables.each do |name|
13
+ value = instance_variable_get(name)
14
+ name = name[1..-1]
15
+ key = self.class.names.key?(name) ? self.class.names[name] : name
16
+ if value.instance_of? Array
17
+ hash[key] = value.map { |v| v.is_a?(BaseModel) ? v.to_hash : v }
18
+ elsif value.instance_of? Hash
19
+ hash[key] = {}
20
+ value.each do |k, v|
21
+ hash[key][k] = v.is_a?(BaseModel) ? v.to_hash : v
22
+ end
23
+ else
24
+ hash[key] = value.is_a?(BaseModel) ? value.to_hash : value
25
+ end
26
+ end
27
+ hash
28
+ end
29
+
30
+ # Returns a JSON representation of the curent object.
31
+ def to_json(options = {})
32
+ hash = to_hash.reject { |k, v| v.nil? }
33
+ hash.to_json(options)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,40 @@
1
+
2
+ require 'builder'
3
+ Dir[File.dirname(__FILE__) + '/verbs/*'].each {|file|
4
+ require_relative file
5
+ }
6
+
7
+ SSML_REGEX = /&lt;([a-zA-Z\/\/].*?)&gt;/
8
+ SPEAK_SENTENCE_REGEX = /<SpeakSentence.*?>.*?<\/SpeakSentence>/
9
+
10
+ module Bandwidth
11
+ module Voice
12
+ class Response
13
+ # Initializer
14
+ # @param verbs [Array] optional list of verbs to include into response
15
+ def initialize(verbs = nil)
16
+ @verbs = verbs || []
17
+ end
18
+
19
+ # Return BXML representaion of this response
20
+ def to_bxml()
21
+ xml = Builder::XmlMarkup.new()
22
+ xml.instruct!(:xml, :version=>'1.0', :encoding=>'UTF-8')
23
+ xml.Response do
24
+ @verbs.each {|verb| verb.to_bxml(xml)}
25
+ end
26
+ xml.target!().gsub(SPEAK_SENTENCE_REGEX){|s|s.gsub(SSML_REGEX, '<\1>')}
27
+ end
28
+
29
+ # Add one or more verbs to this response
30
+ def push(*verbs)
31
+ @verbs.push(*verbs)
32
+ end
33
+
34
+ # Add a verb to this response
35
+ def <<(verb)
36
+ @verbs << verb
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,19 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ class Forward
7
+ include XmlVerb
8
+ def to_bxml(xml)
9
+ xml.Forward(compact_hash({
10
+ 'to' => to,
11
+ 'from' => from,
12
+ 'callTimeout' => call_timeout,
13
+ 'diversionTreatment' => diversion_treatment,
14
+ 'diversionReason' => diversion_reason
15
+ }))
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,38 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ # The Gather verb is used to collect digits for some period of time
7
+ class Gather
8
+ include XmlVerb
9
+
10
+ def to_bxml(xml)
11
+ xml.Gather(compact_hash({
12
+ 'gatherUrl' => gather_url,
13
+ 'gatherMethod' => gather_method,
14
+ 'terminatingDigits' => terminating_digits,
15
+ 'tag' => tag,
16
+ 'maxDigits' => max_digits,
17
+ 'interDigitTimeout' => inter_digit_timeout,
18
+ 'username' => username,
19
+ 'password' => password,
20
+ 'firstDigitTimeout' => first_digit_timeout,
21
+ 'repeatCount' => repeat_count
22
+ })) do
23
+ def embedded_xml(xml, property, type)
24
+ if property
25
+ s = if property.is_a?(type)
26
+ then property
27
+ else type.new(property)
28
+ end
29
+ s.to_bxml(xml)
30
+ end
31
+ end
32
+ embedded_xml(xml, speak_sentence, SpeakSentence)
33
+ embedded_xml(xml, play_audio, PlayAudio)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,15 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ # The Hangup verb is used to hangup current call
7
+ class Hangup
8
+ include XmlVerb
9
+
10
+ def to_bxml(xml)
11
+ xml.Hangup()
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ class Pause
7
+ include XmlVerb
8
+
9
+ def to_bxml(xml)
10
+ xml.Pause(compact_hash({
11
+ 'duration' => duration
12
+ }))
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ class PhoneNumber
7
+ include XmlVerb
8
+ def to_bxml(xml)
9
+ xml.PhoneNumber(number, compact_hash({
10
+ 'transferAnswerUrl' => transfer_answer_url,
11
+ 'transferAnswerMethod' => transfer_answer_method,
12
+ 'username' => username,
13
+ 'password' => password,
14
+ 'tag' => tag
15
+ }))
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ # The PlayAudio verb is used to play an audio file in the call
7
+ class PlayAudio
8
+ include XmlVerb
9
+
10
+ def to_bxml(xml)
11
+ xml.PlayAudio(url, compact_hash({
12
+ 'username' => username,
13
+ 'password' => password
14
+ }))
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ # The Redirect verb is used to redirect the current XML execution to another URL
7
+ class Redirect
8
+ include XmlVerb
9
+
10
+ def to_bxml(xml)
11
+ xml.Redirect(compact_hash({
12
+ 'redirectUrl' => redirect_url,
13
+ 'redirectMethod' => redirect_method,
14
+ 'tag' => tag,
15
+ 'username' => username,
16
+ 'password' => password
17
+ }))
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ class SendDtmf
7
+ include XmlVerb
8
+
9
+ def to_bxml(xml)
10
+ xml.SendDtmf(dtmf)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,19 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ # The SpeakSentence verb is used to convert any text into speak for the caller
7
+ class SpeakSentence
8
+ include XmlVerb
9
+
10
+ def to_bxml(xml)
11
+ xml.SpeakSentence(sentence, compact_hash({
12
+ 'voice' => voice,
13
+ 'locale' => locale,
14
+ 'gender' => gender
15
+ }))
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,38 @@
1
+
2
+ require_relative 'xml_verb'
3
+
4
+ module Bandwidth
5
+ module Voice
6
+ # The Transfer verb is used to transfer the call to another number
7
+ class Transfer
8
+ include XmlVerb
9
+
10
+ def to_bxml(xml)
11
+ xml.Transfer(compact_hash({
12
+ 'transferCallerId' => transfer_caller_id,
13
+ 'callTimeout' => call_timeout,
14
+ 'tag' => tag,
15
+ 'transferCompleteUrl' => transfer_complete_url,
16
+ 'transferCompleteMethod' => transfer_complete_method,
17
+ 'username' => username,
18
+ 'password' => password,
19
+ 'diversionTreatment' => diversion_treatment,
20
+ 'diversionReason' => diversion_reason
21
+ })) do
22
+ def embedded_xml(xml, property, type)
23
+ if property
24
+ s = if property.is_a?(type)
25
+ then property
26
+ else type.new(property)
27
+ end
28
+ s.to_bxml(xml)
29
+ end
30
+ end
31
+ phone_numbers.each do |number|
32
+ embedded_xml(xml, number, PhoneNumber)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end