bandwidth-sdk 9.3.0 → 10.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/README.md +4 -1
- data/lib/bandwidth/http/faraday_client.rb +6 -3
- data/lib/bandwidth/voice_lib/bxml/bxml.rb +3 -6
- data/lib/bandwidth/voice_lib/bxml/response.rb +39 -0
- data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +81 -0
- data/lib/bandwidth/voice_lib/voice/models/call_state.rb +19 -2
- data/lib/bandwidth/voice_lib/voice/models/create_call_response.rb +10 -10
- data/lib/bandwidth.rb +1 -0
- data/test/integration/test_integration.rb +32 -0
- metadata +65 -8
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7f647905f7c08b4614b21b7ca9278210ed8ff6f532f4b0cd09f1c705852c5567
         | 
| 4 | 
            +
              data.tar.gz: '00348580d308e3fccd81a42642daed1a3b6a39562feb953d0789cbf750a79f0f'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c001719da52d9026ea151cb5f95229b0a1ef8b864c7bede8d48c02856f742c0124be304982d350be46ca399cd074170b957cc7a4b887c964f68a41cdf6385ca5
         | 
| 7 | 
            +
              data.tar.gz: 3efb5225670bc0b6cc86088afa4ee45b8e9ecc5f023d33ff33ff6072454f0599474a4d575cfe0db2c2d85d70ca304cde445623f8f25b3f26d03d099da92c545f
         | 
    
        data/README.md
    CHANGED
    
    | @@ -156,7 +156,10 @@ create_participant_response = web_rtc_client.create_participant(account_id, :bod | |
| 156 156 | 
             
            participant_id = create_participant_response.data.participant.id
         | 
| 157 157 | 
             
            puts participant_id
         | 
| 158 158 |  | 
| 159 | 
            -
             | 
| 159 | 
            +
            body = Subscriptions.new
         | 
| 160 | 
            +
            body.session_id = "1234-abcd"
         | 
| 161 | 
            +
             | 
| 162 | 
            +
            web_rtc_client.add_participant_to_session(account_id, session_id, participant_id, body: body)
         | 
| 160 163 | 
             
            ```
         | 
| 161 164 |  | 
| 162 165 | 
             
            ## Supported Ruby Versions
         | 
| @@ -3,8 +3,11 @@ | |
| 3 3 | 
             
            # This file was automatically generated by APIMATIC v2.0
         | 
| 4 4 | 
             
            # ( https://apimatic.io ).
         | 
| 5 5 |  | 
| 6 | 
            +
            require 'faraday/follow_redirects'
         | 
| 7 | 
            +
            require 'faraday/gzip'
         | 
| 6 8 | 
             
            require 'faraday/http_cache'
         | 
| 7 | 
            -
            require ' | 
| 9 | 
            +
            require 'faraday/multipart'
         | 
| 10 | 
            +
            require 'faraday/retry'
         | 
| 8 11 |  | 
| 9 12 | 
             
            module Bandwidth
         | 
| 10 13 | 
             
              # An implementation of HttpClient.
         | 
| @@ -15,8 +18,8 @@ module Bandwidth | |
| 15 18 | 
             
                               cache: false, verify: true)
         | 
| 16 19 | 
             
                  @connection = Faraday.new do |faraday|
         | 
| 17 20 | 
             
                    faraday.use Faraday::HttpCache, serializer: Marshal if cache
         | 
| 18 | 
            -
                    faraday.use  | 
| 19 | 
            -
                    faraday. | 
| 21 | 
            +
                    faraday.use Faraday::FollowRedirects::Middleware
         | 
| 22 | 
            +
                    faraday.request :gzip
         | 
| 20 23 | 
             
                    faraday.request :multipart
         | 
| 21 24 | 
             
                    faraday.request :url_encoded
         | 
| 22 25 | 
             
                    faraday.ssl[:ca_file] = Certifi.where
         | 
| @@ -3,14 +3,11 @@ Dir[File.dirname(__FILE__) + '/verbs/*'].each {|file| | |
| 3 3 | 
             
              require_relative file
         | 
| 4 4 | 
             
            }
         | 
| 5 5 |  | 
| 6 | 
            -
            SSML_REGEX = /<([a-zA-Z\/\/].*?)>/
         | 
| 7 | 
            -
            SPEAK_SENTENCE_REGEX = /<SpeakSentence.*?>.*?<\/SpeakSentence>/
         | 
| 8 | 
            -
             | 
| 9 6 | 
             
            module Bandwidth 
         | 
| 10 7 | 
             
              module Voice 
         | 
| 11 | 
            -
                class  | 
| 8 | 
            +
                class Bxml
         | 
| 12 9 | 
             
                  # Initializer
         | 
| 13 | 
            -
                  # @param verbs [Array] optional list of verbs to include  | 
| 10 | 
            +
                  # @param verbs [Array] optional list of verbs to include in the bxml tag
         | 
| 14 11 | 
             
                  def initialize(verbs = nil)
         | 
| 15 12 | 
             
                    @verbs = verbs || []
         | 
| 16 13 | 
             
                  end
         | 
| @@ -19,7 +16,7 @@ module Bandwidth | |
| 19 16 | 
             
                  def to_bxml()
         | 
| 20 17 | 
             
                    xml = Builder::XmlMarkup.new()
         | 
| 21 18 | 
             
                    xml.instruct!(:xml, :version=>'1.0', :encoding=>'UTF-8')
         | 
| 22 | 
            -
                    xml. | 
| 19 | 
            +
                    xml.Bxml do
         | 
| 23 20 | 
             
                      @verbs.each {|verb| verb.to_bxml(xml)}
         | 
| 24 21 | 
             
                    end
         | 
| 25 22 | 
             
                    xml.target!().gsub(SPEAK_SENTENCE_REGEX){|s|s.gsub(SSML_REGEX, '<\1>')}
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            require 'builder'
         | 
| 2 | 
            +
            Dir[File.dirname(__FILE__) + '/verbs/*'].each {|file|
         | 
| 3 | 
            +
              require_relative file
         | 
| 4 | 
            +
            }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            SSML_REGEX = /<([a-zA-Z\/\/].*?)>/
         | 
| 7 | 
            +
            SPEAK_SENTENCE_REGEX = /<SpeakSentence.*?>.*?<\/SpeakSentence>/
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            module Bandwidth 
         | 
| 10 | 
            +
              module Voice 
         | 
| 11 | 
            +
                class Response
         | 
| 12 | 
            +
                  # Initializer
         | 
| 13 | 
            +
                  # @param verbs [Array] optional list of verbs to include into response
         | 
| 14 | 
            +
                  def initialize(verbs = nil)
         | 
| 15 | 
            +
                    @verbs = verbs || []
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  # Return BXML representaion of this response
         | 
| 19 | 
            +
                  def to_bxml()
         | 
| 20 | 
            +
                    xml = Builder::XmlMarkup.new()
         | 
| 21 | 
            +
                    xml.instruct!(:xml, :version=>'1.0', :encoding=>'UTF-8')
         | 
| 22 | 
            +
                    xml.Response do
         | 
| 23 | 
            +
                      @verbs.each {|verb| verb.to_bxml(xml)}
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
                    xml.target!().gsub(SPEAK_SENTENCE_REGEX){|s|s.gsub(SSML_REGEX, '<\1>')}
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  # Add one or more verbs to this response
         | 
| 29 | 
            +
                  def push(*verbs)
         | 
| 30 | 
            +
                    @verbs.push(*verbs)
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  # Add a verb to this response
         | 
| 34 | 
            +
                  def <<(verb)
         | 
| 35 | 
            +
                    @verbs << verb
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
| @@ -252,6 +252,87 @@ module Voice | |
| 252 252 | 
             
                  ApiResponse.new(_response)
         | 
| 253 253 | 
             
                end
         | 
| 254 254 |  | 
| 255 | 
            +
                # Makes a PUT request to /api/v2/accounts/{accountId}/calls/{callId}/bxml
         | 
| 256 | 
            +
                # @param [String] account_id Required parameter: Example:
         | 
| 257 | 
            +
                # @param [String] call_id Required parameter: Example:
         | 
| 258 | 
            +
                # @param [String] body Required parameter: Example:
         | 
| 259 | 
            +
                # @return [void] response from the API call
         | 
| 260 | 
            +
                def modify_call_bxml(account_id,
         | 
| 261 | 
            +
                                     call_id,
         | 
| 262 | 
            +
                                     body
         | 
| 263 | 
            +
                                    )
         | 
| 264 | 
            +
                  # Prepare query url.
         | 
| 265 | 
            +
                  _query_builder = config.get_base_uri(Server::VOICEDEFAULT)
         | 
| 266 | 
            +
                  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/bxml'
         | 
| 267 | 
            +
                  _query_builder = APIHelper.append_url_with_template_parameters(
         | 
| 268 | 
            +
                    _query_builder,
         | 
| 269 | 
            +
                    'accountId' => { 'value' => account_id, 'encode' => false },
         | 
| 270 | 
            +
                    'callId' => { 'value' => call_id, 'encode' => false }
         | 
| 271 | 
            +
                  )
         | 
| 272 | 
            +
                  _query_url = APIHelper.clean_url _query_builder
         | 
| 273 | 
            +
             | 
| 274 | 
            +
                  # Prepare headers.
         | 
| 275 | 
            +
                  _headers = {
         | 
| 276 | 
            +
                    'content-type' => 'application/xml; charset=utf-8'
         | 
| 277 | 
            +
                  }
         | 
| 278 | 
            +
             | 
| 279 | 
            +
                  # Prepare and execute HttpRequest.
         | 
| 280 | 
            +
                  _request = config.http_client.put(
         | 
| 281 | 
            +
                    _query_url,
         | 
| 282 | 
            +
                    headers: _headers,
         | 
| 283 | 
            +
                    parameters: body.to_json
         | 
| 284 | 
            +
                  )
         | 
| 285 | 
            +
                  VoiceBasicAuth.apply(config, _request)
         | 
| 286 | 
            +
                  _response = execute_request(_request)
         | 
| 287 | 
            +
             | 
| 288 | 
            +
                  # Validate response against endpoint and global error codes.
         | 
| 289 | 
            +
                  case _response.status_code
         | 
| 290 | 
            +
                  when 400
         | 
| 291 | 
            +
                    raise ApiErrorException.new(
         | 
| 292 | 
            +
                      'Something\'s not quite right... Your request is invalid. Please' \
         | 
| 293 | 
            +
                      ' fix it before trying again.',
         | 
| 294 | 
            +
                      _response
         | 
| 295 | 
            +
                    )
         | 
| 296 | 
            +
                  when 401
         | 
| 297 | 
            +
                    raise APIException.new(
         | 
| 298 | 
            +
                      'Your credentials are invalid. Please use your Bandwidth dashboard' \
         | 
| 299 | 
            +
                      ' credentials to authenticate to the API.',
         | 
| 300 | 
            +
                      _response
         | 
| 301 | 
            +
                    )
         | 
| 302 | 
            +
                  when 403
         | 
| 303 | 
            +
                    raise ApiErrorException.new(
         | 
| 304 | 
            +
                      'User unauthorized to perform this action.',
         | 
| 305 | 
            +
                      _response
         | 
| 306 | 
            +
                    )
         | 
| 307 | 
            +
                  when 404
         | 
| 308 | 
            +
                    raise ApiErrorException.new(
         | 
| 309 | 
            +
                      'The resource specified cannot be found or does not belong to you.',
         | 
| 310 | 
            +
                      _response
         | 
| 311 | 
            +
                    )
         | 
| 312 | 
            +
                  when 415
         | 
| 313 | 
            +
                    raise ApiErrorException.new(
         | 
| 314 | 
            +
                      'We don\'t support that media type. If a request body is required,' \
         | 
| 315 | 
            +
                      ' please send it to us as `application/xml`.',
         | 
| 316 | 
            +
                      _response
         | 
| 317 | 
            +
                    )
         | 
| 318 | 
            +
                  when 429
         | 
| 319 | 
            +
                    raise ApiErrorException.new(
         | 
| 320 | 
            +
                      'You\'re sending requests to this endpoint too frequently. Please' \
         | 
| 321 | 
            +
                      ' slow your request rate down and try again.',
         | 
| 322 | 
            +
                      _response
         | 
| 323 | 
            +
                    )
         | 
| 324 | 
            +
                  when 500
         | 
| 325 | 
            +
                    raise ApiErrorException.new(
         | 
| 326 | 
            +
                      'Something unexpected happened. Please try again.',
         | 
| 327 | 
            +
                      _response
         | 
| 328 | 
            +
                    )
         | 
| 329 | 
            +
                  end
         | 
| 330 | 
            +
                  validate_response(_response)
         | 
| 331 | 
            +
             | 
| 332 | 
            +
                  # Return appropriate response type.
         | 
| 333 | 
            +
                  ApiResponse.new(_response)
         | 
| 334 | 
            +
                end
         | 
| 335 | 
            +
             | 
| 255 336 | 
             
                # Pauses or resumes a recording.
         | 
| 256 337 | 
             
                # @param [String] account_id Required parameter: Example:
         | 
| 257 338 | 
             
                # @param [String] call_id Required parameter: Example:
         | 
| @@ -62,6 +62,9 @@ module Bandwidth | |
| 62 62 | 
             
                # @return [DateTime]
         | 
| 63 63 | 
             
                attr_accessor :start_time
         | 
| 64 64 |  | 
| 65 | 
            +
                # @return [DateTime]
         | 
| 66 | 
            +
                attr_accessor :enqueued_time
         | 
| 67 | 
            +
             | 
| 65 68 | 
             
                # The current state of the call. Current possible values are 'initiated',
         | 
| 66 69 | 
             
                # 'answered' and 'disconnected'. Additional states may be added in the
         | 
| 67 70 | 
             
                # future, so your application must be tolerant of unknown values.
         | 
| @@ -124,6 +127,7 @@ module Bandwidth | |
| 124 127 | 
             
                  @_hash['identity'] = 'identity'
         | 
| 125 128 | 
             
                  @_hash['stir_shaken'] = 'stirShaken'
         | 
| 126 129 | 
             
                  @_hash['start_time'] = 'startTime'
         | 
| 130 | 
            +
                  @_hash['enqueued_time'] = 'enqueuedTime'
         | 
| 127 131 | 
             
                  @_hash['answer_time'] = 'answerTime'
         | 
| 128 132 | 
             
                  @_hash['end_time'] = 'endTime'
         | 
| 129 133 | 
             
                  @_hash['disconnect_cause'] = 'disconnectCause'
         | 
| @@ -147,6 +151,7 @@ module Bandwidth | |
| 147 151 | 
             
                    identity
         | 
| 148 152 | 
             
                    stir_shaken
         | 
| 149 153 | 
             
                    start_time
         | 
| 154 | 
            +
                    enqueued_time
         | 
| 150 155 | 
             
                    answer_time
         | 
| 151 156 | 
             
                    end_time
         | 
| 152 157 | 
             
                    disconnect_cause
         | 
| @@ -180,6 +185,7 @@ module Bandwidth | |
| 180 185 | 
             
                               identity = nil,
         | 
| 181 186 | 
             
                               stir_shaken = nil,
         | 
| 182 187 | 
             
                               start_time = nil,
         | 
| 188 | 
            +
                               enqueued_time = nil,
         | 
| 183 189 | 
             
                               answer_time = nil,
         | 
| 184 190 | 
             
                               end_time = nil,
         | 
| 185 191 | 
             
                               disconnect_cause = nil,
         | 
| @@ -197,6 +203,7 @@ module Bandwidth | |
| 197 203 | 
             
                  @identity = identity unless identity == SKIP
         | 
| 198 204 | 
             
                  @stir_shaken = stir_shaken unless stir_shaken == SKIP
         | 
| 199 205 | 
             
                  @start_time = start_time unless start_time == SKIP
         | 
| 206 | 
            +
                  @enqueued_time = enqueued_time unless enqueued_time == SKIP
         | 
| 200 207 | 
             
                  @answer_time = answer_time unless answer_time == SKIP
         | 
| 201 208 | 
             
                  @end_time = end_time unless end_time == SKIP
         | 
| 202 209 | 
             
                  @disconnect_cause = disconnect_cause unless disconnect_cause == SKIP
         | 
| @@ -221,17 +228,22 @@ module Bandwidth | |
| 221 228 | 
             
                  identity = hash.key?('identity') ? hash['identity'] : SKIP
         | 
| 222 229 | 
             
                  stir_shaken = hash.key?('stirShaken') ? hash['stirShaken'] : SKIP
         | 
| 223 230 | 
             
                  start_time = if hash.key?('startTime')
         | 
| 224 | 
            -
             | 
| 231 | 
            +
                                  (DateTimeHelper.from_rfc3339(hash['startTime']) if hash['startTime'])
         | 
| 225 232 | 
             
                               else
         | 
| 226 233 | 
             
                                 SKIP
         | 
| 227 234 | 
             
                               end
         | 
| 235 | 
            +
                  enqueued_time = if hash.key?('enqueuedTime')
         | 
| 236 | 
            +
                                    (DateTimeHelper.from_rfc3339(hash['enqueuedTime']) if hash['enqueuedTime'])
         | 
| 237 | 
            +
                                  else
         | 
| 238 | 
            +
                                    SKIP
         | 
| 239 | 
            +
                                  end
         | 
| 228 240 | 
             
                  answer_time = if hash.key?('answerTime')
         | 
| 229 241 | 
             
                                  (DateTimeHelper.from_rfc3339(hash['answerTime']) if hash['answerTime'])
         | 
| 230 242 | 
             
                                else
         | 
| 231 243 | 
             
                                  SKIP
         | 
| 232 244 | 
             
                                end
         | 
| 233 245 | 
             
                  end_time = if hash.key?('endTime')
         | 
| 234 | 
            -
             | 
| 246 | 
            +
                                (DateTimeHelper.from_rfc3339(hash['endTime']) if hash['endTime'])
         | 
| 235 247 | 
             
                             else
         | 
| 236 248 | 
             
                               SKIP
         | 
| 237 249 | 
             
                             end
         | 
| @@ -257,6 +269,7 @@ module Bandwidth | |
| 257 269 | 
             
                                identity,
         | 
| 258 270 | 
             
                                stir_shaken,
         | 
| 259 271 | 
             
                                start_time,
         | 
| 272 | 
            +
                                enqueued_time,
         | 
| 260 273 | 
             
                                answer_time,
         | 
| 261 274 | 
             
                                end_time,
         | 
| 262 275 | 
             
                                disconnect_cause,
         | 
| @@ -269,6 +282,10 @@ module Bandwidth | |
| 269 282 | 
             
                  DateTimeHelper.to_rfc3339(start_time)
         | 
| 270 283 | 
             
                end
         | 
| 271 284 |  | 
| 285 | 
            +
                def to_enqueued_time
         | 
| 286 | 
            +
                  DateTimeHelper.to_rfc3339(enqueued_time)
         | 
| 287 | 
            +
                end
         | 
| 288 | 
            +
             | 
| 272 289 | 
             
                def to_answer_time
         | 
| 273 290 | 
             
                  DateTimeHelper.to_rfc3339(answer_time)
         | 
| 274 291 | 
             
                end
         | 
| @@ -32,7 +32,7 @@ module Bandwidth | |
| 32 32 |  | 
| 33 33 | 
             
                # TODO: Write general description for this method
         | 
| 34 34 | 
             
                # @return [DateTime]
         | 
| 35 | 
            -
                attr_accessor : | 
| 35 | 
            +
                attr_accessor :enqueued_time
         | 
| 36 36 |  | 
| 37 37 | 
             
                # TODO: Write general description for this method
         | 
| 38 38 | 
             
                # @return [String]
         | 
| @@ -101,7 +101,7 @@ module Bandwidth | |
| 101 101 | 
             
                  @_hash['application_id'] = 'applicationId'
         | 
| 102 102 | 
             
                  @_hash['to'] = 'to'
         | 
| 103 103 | 
             
                  @_hash['from'] = 'from'
         | 
| 104 | 
            -
                  @_hash[' | 
| 104 | 
            +
                  @_hash['enqueued_time'] = 'enqueuedTime '
         | 
| 105 105 | 
             
                  @_hash['call_url'] = 'callUrl'
         | 
| 106 106 | 
             
                  @_hash['call_timeout'] = 'callTimeout'
         | 
| 107 107 | 
             
                  @_hash['callback_timeout'] = 'callbackTimeout'
         | 
| @@ -123,7 +123,7 @@ module Bandwidth | |
| 123 123 | 
             
                # An array for optional fields
         | 
| 124 124 | 
             
                def optionals
         | 
| 125 125 | 
             
                  %w[
         | 
| 126 | 
            -
                     | 
| 126 | 
            +
                    enqueued_time
         | 
| 127 127 | 
             
                    call_timeout
         | 
| 128 128 | 
             
                    callback_timeout
         | 
| 129 129 | 
             
                    answer_fallback_url
         | 
| @@ -163,7 +163,7 @@ module Bandwidth | |
| 163 163 | 
             
                               answer_url = nil,
         | 
| 164 164 | 
             
                               answer_method = nil,
         | 
| 165 165 | 
             
                               disconnect_method = nil,
         | 
| 166 | 
            -
                                | 
| 166 | 
            +
                               enqueued_time = nil,
         | 
| 167 167 | 
             
                               call_timeout = nil,
         | 
| 168 168 | 
             
                               callback_timeout = nil,
         | 
| 169 169 | 
             
                               answer_fallback_url = nil,
         | 
| @@ -180,7 +180,7 @@ module Bandwidth | |
| 180 180 | 
             
                  @application_id = application_id unless application_id == SKIP
         | 
| 181 181 | 
             
                  @to = to unless to == SKIP
         | 
| 182 182 | 
             
                  @from = from unless from == SKIP
         | 
| 183 | 
            -
                  @ | 
| 183 | 
            +
                  @enqueued_time = enqueued_time unless enqueued_time == SKIP
         | 
| 184 184 | 
             
                  @call_url = call_url unless call_url == SKIP
         | 
| 185 185 | 
             
                  @call_timeout = call_timeout unless call_timeout == SKIP
         | 
| 186 186 | 
             
                  @callback_timeout = callback_timeout unless callback_timeout == SKIP
         | 
| @@ -213,8 +213,8 @@ module Bandwidth | |
| 213 213 | 
             
                  answer_method = hash.key?('answerMethod') ? hash['answerMethod'] : SKIP
         | 
| 214 214 | 
             
                  disconnect_method =
         | 
| 215 215 | 
             
                    hash.key?('disconnectMethod') ? hash['disconnectMethod'] : SKIP
         | 
| 216 | 
            -
             | 
| 217 | 
            -
                                 (DateTimeHelper.from_rfc3339(hash[' | 
| 216 | 
            +
                    enqueued_time = if hash.key?('enqueuedTime')
         | 
| 217 | 
            +
                                 (DateTimeHelper.from_rfc3339(hash['enqueuedTime']) if hash['enqueuedTime'])
         | 
| 218 218 | 
             
                               else
         | 
| 219 219 | 
             
                                 SKIP
         | 
| 220 220 | 
             
                               end
         | 
| @@ -245,7 +245,7 @@ module Bandwidth | |
| 245 245 | 
             
                                         answer_url,
         | 
| 246 246 | 
             
                                         answer_method,
         | 
| 247 247 | 
             
                                         disconnect_method,
         | 
| 248 | 
            -
                                          | 
| 248 | 
            +
                                         enqueued_time,
         | 
| 249 249 | 
             
                                         call_timeout,
         | 
| 250 250 | 
             
                                         callback_timeout,
         | 
| 251 251 | 
             
                                         answer_fallback_url,
         | 
| @@ -259,8 +259,8 @@ module Bandwidth | |
| 259 259 | 
             
                                         priority)
         | 
| 260 260 | 
             
                end
         | 
| 261 261 |  | 
| 262 | 
            -
                def  | 
| 263 | 
            -
                  DateTimeHelper.to_rfc3339( | 
| 262 | 
            +
                def to_enqueued_time
         | 
| 263 | 
            +
                  DateTimeHelper.to_rfc3339(enqueued_time)
         | 
| 264 264 | 
             
                end
         | 
| 265 265 | 
             
              end
         | 
| 266 266 | 
             
            end
         | 
    
        data/lib/bandwidth.rb
    CHANGED
    
    | @@ -47,6 +47,7 @@ require_relative 'bandwidth/http/auth/web_rtc_basic_auth' | |
| 47 47 | 
             
            require_relative 'bandwidth/http/auth/web_rtc_basic_auth.rb'
         | 
| 48 48 |  | 
| 49 49 | 
             
            # External Files
         | 
| 50 | 
            +
            require_relative 'bandwidth/voice_lib/bxml/response.rb'
         | 
| 50 51 | 
             
            require_relative 'bandwidth/voice_lib/bxml/bxml.rb'
         | 
| 51 52 | 
             
            require_relative 'bandwidth/voice_lib/bxml/verbs/bridge.rb'
         | 
| 52 53 | 
             
            require_relative 'bandwidth/voice_lib/bxml/verbs/conference.rb'
         | 
| @@ -111,11 +111,15 @@ class IntegrationTest < Test::Unit::TestCase | |
| 111 111 | 
             
                    body.answer_url = BASE_CALLBACK_URL
         | 
| 112 112 | 
             
                    response = @bandwidth_client.voice_client.client.create_call(BW_ACCOUNT_ID, body)
         | 
| 113 113 | 
             
                    assert(response.data.call_id.length > 0, "call_id value not set")
         | 
| 114 | 
            +
                    assert_not_nil(response.data.enqueued_time, "enqueued time is nil")
         | 
| 115 | 
            +
                    assert(response.data.enqueued_time.is_a?(DateTime), "enqueued time is not a DateTime object")
         | 
| 114 116 |  | 
| 115 117 | 
             
                    #Get phone call information
         | 
| 116 118 | 
             
                    sleep 1
         | 
| 117 119 | 
             
                    response = @bandwidth_client.voice_client.client.get_call(BW_ACCOUNT_ID, response.data.call_id)
         | 
| 118 120 | 
             
                    assert(response.data.state.length > 0, "state value not set")
         | 
| 121 | 
            +
                    assert_not_nil(response.data.enqueued_time, "enqueued time is nil")
         | 
| 122 | 
            +
                    assert(response.data.enqueued_time.is_a?(DateTime), "enqueued time is not a DateTime object")
         | 
| 119 123 | 
             
                end
         | 
| 120 124 |  | 
| 121 125 | 
             
                def test_create_call_with_amd_and_get_call_state
         | 
| @@ -262,6 +266,34 @@ class IntegrationTest < Test::Unit::TestCase | |
| 262 266 | 
             
                    assert_equal(expected, actual)
         | 
| 263 267 | 
             
                end
         | 
| 264 268 |  | 
| 269 | 
            +
                def test_empty_bxml_verb
         | 
| 270 | 
            +
                    bxml = Bandwidth::Voice::Bxml.new()
         | 
| 271 | 
            +
             | 
| 272 | 
            +
                    expected = '<?xml version="1.0" encoding="UTF-8"?><Bxml></Bxml>'
         | 
| 273 | 
            +
                    actual = bxml.to_bxml()
         | 
| 274 | 
            +
                    assert_equal(expected, actual)
         | 
| 275 | 
            +
                end
         | 
| 276 | 
            +
             | 
| 277 | 
            +
                def test_bxml_speak_sentence_pause
         | 
| 278 | 
            +
                    bxml = Bandwidth::Voice::Bxml.new()
         | 
| 279 | 
            +
             | 
| 280 | 
            +
                    speak_sentence = Bandwidth::Voice::SpeakSentence.new({
         | 
| 281 | 
            +
                        :sentence => "new modify call bxml is pog",
         | 
| 282 | 
            +
                        :voice => "Julie"
         | 
| 283 | 
            +
                    })
         | 
| 284 | 
            +
             | 
| 285 | 
            +
                    pause = Bandwidth::Voice::Pause.new({
         | 
| 286 | 
            +
                        :duration => 6
         | 
| 287 | 
            +
                    })
         | 
| 288 | 
            +
             | 
| 289 | 
            +
                    bxml.push(speak_sentence)
         | 
| 290 | 
            +
                    bxml.push(pause)
         | 
| 291 | 
            +
             | 
| 292 | 
            +
                    expected = '<?xml version="1.0" encoding="UTF-8"?><Bxml><SpeakSentence voice="Julie">new modify call bxml is pog</SpeakSentence><Pause duration="6"/></Bxml>'
         | 
| 293 | 
            +
                    actual = bxml.to_bxml()
         | 
| 294 | 
            +
                    assert_equal(expected, actual)
         | 
| 295 | 
            +
                end
         | 
| 296 | 
            +
             | 
| 265 297 | 
             
                def test_hangup
         | 
| 266 298 | 
             
                    hangup = Bandwidth::Voice::Hangup.new()
         | 
| 267 299 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bandwidth-sdk
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 10.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Bandwidth
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-07-05 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: logging
         | 
| @@ -28,24 +28,66 @@ dependencies: | |
| 28 28 | 
             
              name: faraday
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '1.0'
         | 
| 34 | 
            +
                - - "<"
         | 
| 35 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 36 | 
            +
                    version: '3.0'
         | 
| 37 | 
            +
              type: :runtime
         | 
| 38 | 
            +
              prerelease: false
         | 
| 39 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ">="
         | 
| 32 42 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 43 | 
             
                    version: '1.0'
         | 
| 34 | 
            -
                - - " | 
| 44 | 
            +
                - - "<"
         | 
| 45 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            +
                    version: '3.0'
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: faraday-follow_redirects
         | 
| 49 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                requirements:
         | 
| 51 | 
            +
                - - "~>"
         | 
| 52 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            +
                    version: '0.3'
         | 
| 54 | 
            +
              type: :runtime
         | 
| 55 | 
            +
              prerelease: false
         | 
| 56 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            +
                requirements:
         | 
| 58 | 
            +
                - - "~>"
         | 
| 59 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 60 | 
            +
                    version: '0.3'
         | 
| 61 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 62 | 
            +
              name: faraday-gzip
         | 
| 63 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 | 
            +
                requirements:
         | 
| 65 | 
            +
                - - "~>"
         | 
| 35 66 | 
             
                  - !ruby/object:Gem::Version
         | 
| 36 | 
            -
                    version: 1. | 
| 67 | 
            +
                    version: 0.1.0
         | 
| 37 68 | 
             
              type: :runtime
         | 
| 38 69 | 
             
              prerelease: false
         | 
| 39 70 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 | 
            +
                requirements:
         | 
| 72 | 
            +
                - - "~>"
         | 
| 73 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            +
                    version: 0.1.0
         | 
| 75 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 76 | 
            +
              name: faraday-multipart
         | 
| 77 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 40 78 | 
             
                requirements:
         | 
| 41 79 | 
             
                - - "~>"
         | 
| 42 80 | 
             
                  - !ruby/object:Gem::Version
         | 
| 43 81 | 
             
                    version: '1.0'
         | 
| 44 | 
            -
             | 
| 82 | 
            +
              type: :runtime
         | 
| 83 | 
            +
              prerelease: false
         | 
| 84 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 85 | 
            +
                requirements:
         | 
| 86 | 
            +
                - - "~>"
         | 
| 45 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            -
                    version: 1. | 
| 88 | 
            +
                    version: '1.0'
         | 
| 47 89 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            -
              name:  | 
| 90 | 
            +
              name: faraday-retry
         | 
| 49 91 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 92 | 
             
                requirements:
         | 
| 51 93 | 
             
                - - "~>"
         | 
| @@ -140,6 +182,20 @@ dependencies: | |
| 140 182 | 
             
                - - "~>"
         | 
| 141 183 | 
             
                  - !ruby/object:Gem::Version
         | 
| 142 184 | 
             
                    version: '1.0'
         | 
| 185 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 186 | 
            +
              name: test-unit
         | 
| 187 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 188 | 
            +
                requirements:
         | 
| 189 | 
            +
                - - ">="
         | 
| 190 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 191 | 
            +
                    version: '0'
         | 
| 192 | 
            +
              type: :development
         | 
| 193 | 
            +
              prerelease: false
         | 
| 194 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 195 | 
            +
                requirements:
         | 
| 196 | 
            +
                - - ">="
         | 
| 197 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 198 | 
            +
                    version: '0'
         | 
| 143 199 | 
             
            description: The official client SDK for Bandwidht's Voice, Messaging, MFA, and WebRTC
         | 
| 144 200 | 
             
              APIs
         | 
| 145 201 | 
             
            email: dx@bandwidth.com
         | 
| @@ -206,6 +262,7 @@ files: | |
| 206 262 | 
             
            - lib/bandwidth/utilities/date_time_helper.rb
         | 
| 207 263 | 
             
            - lib/bandwidth/utilities/file_wrapper.rb
         | 
| 208 264 | 
             
            - lib/bandwidth/voice_lib/bxml/bxml.rb
         | 
| 265 | 
            +
            - lib/bandwidth/voice_lib/bxml/response.rb
         | 
| 209 266 | 
             
            - lib/bandwidth/voice_lib/bxml/verbs/bridge.rb
         | 
| 210 267 | 
             
            - lib/bandwidth/voice_lib/bxml/verbs/conference.rb
         | 
| 211 268 | 
             
            - lib/bandwidth/voice_lib/bxml/verbs/forward.rb
         |