Sha256: bef5f25a76ed42893bb14bd4de4a155d74ec4d639e92f6717742e5866ddef6ef

Contents?: true

Size: 922 Bytes

Versions: 2

Compression:

Stored size: 922 Bytes

Contents

# frozen_string_literal: true

module TwilioBase
  module Protocols
    module Voice
      class Sip < Base
        def endpoint
          "sip:#{sip_endpoint}?#{parsed_headers}"
        end

        def name
          :sip
        end

        private

        def parsed_headers
          hash = headers.each_with_object({}) do |(k, v), obj|
            key = "X-#{k.to_s.camelize}"
            value = v.presence || '-'

            obj[key] = value
          end

          Addressable::URI.new(query_values: hash).query
        end

        def headers
          params[:headers].is_a?(Hash) ? params[:headers] : {}
        end

        def sip_endpoint
          sip_whip
        end

        def sip_whip
          @sip_whip ||= sip_endpoints.sample.to_s.strip
        end

        def sip_endpoints
          value = Array(to)

          value.flat_map { |v| v.split(',') }
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
twilio_base-1.9.0 app/services/twilio_base/protocols/voice/sip.rb
twilio_base-1.8.0 app/services/twilio_base/protocols/voice/sip.rb