module VoiceBase::V3::Client

Public Class Methods

extended(client, args = {}) click to toggle source
# File lib/voicebase/v3/client.rb, line 6
def self.extended(client, args = {})
  client.api_host     = client.args[:host] || ENV.fetch('VOICEBASE_V3_API_HOST', 'https://apis.voicebase.com')
  client.api_endpoint = client.args[:api_endpoint] || ENV.fetch('VOICEBASE_V3_API_ENDPOINT', '/v3')
end

Public Instance Methods

upload_media(args = {}, headers = {}) click to toggle source
# File lib/voicebase/v3/client.rb, line 11
def upload_media(args = {}, headers = {})
  require_media_file_or_url!(args)
  r = ::VoiceBase::Request::MultipartBuilder.new(headers: default_headers(headers))

  if args[:config]
    r.add(VoiceBase::Request::HashPart.new(name: "configuration", hash: args[:config]))
  end

  if args[:media_url]
    r.add(VoiceBase::Request::TextPart.new(name: "mediaUrl", body: args[:media_url]))
  end

  if args[:media_file]
    r.add(VoiceBase::Request::FilePart.new(name: "media", file: args[:media_file]))
  end

  #TODO: make metadata an object
  if args[:metadata]
    r.add(VoiceBase::Request::HashPart.new(name: "metadata", hash: args[:metadata]))
  end

  response = self.class.post(
      uri + '/media',
      headers: r.headers,
      body: r.body
  )
  VoiceBase::Response.new(response, api_version)
end

Private Instance Methods

require_media_file_or_url!(args = {}) click to toggle source
# File lib/voicebase/v3/client.rb, line 42
def require_media_file_or_url!(args = {})
  if args[:media_url].nil? && args[:media_file].nil?
    raise ArgumentError, "Missing argument :media_url or :media_file"
  end
end