Module: VoiceBase::V2::Client

Included in:
VoiceBase::V3::Client
Defined in:
lib/voicebase/v2/client.rb

Defined Under Namespace

Classes: FileParam, HashParam, StringParam

Constant Summary collapse

BOUNDARY =
"0123456789ABLEWASIEREISAWELBA9876543210"
MULTIPART_CONTENT_TYPE =
"multipart/form-data; boundary=#{BOUNDARY}"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(client, args = {}) ⇒ Object



7
8
9
10
# File 'lib/voicebase/v2/client.rb', line 7

def self.extended(client, args = {})
  client.api_host     = client.args[:host] || ENV.fetch('VOICEBASE_V2_API_HOST', 'https://apis.voicebase.com')
  client.api_endpoint = client.args[:api_endpoint] || ENV.fetch('VOICEBASE_V2_API_ENDPOINT', '/v2-beta')
end

Instance Method Details

#authenticate!Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/voicebase/v2/client.rb', line 12

def authenticate!
  auth = {:username => @auth_key, :password => @auth_secret}
  response = VoiceBase::Response.new(
    self.class.get(
      uri + '/access/users/admin/tokens',
      basic_auth: auth,
      headers: {
        'User-Agent'   => @user_agent,
        'Accept'       => 'application/json'
      }
    ), api_version)
  @token = VoiceBase::Client::Token.new(response.tokens.any? && response.tokens.first.fetch("token"))
rescue NoMethodError => ex
  raise VoiceBase::AuthenticationError, response.status_message
end

#delete_file(args = {}, headers = {}) ⇒ Object

Raises:



105
106
107
108
109
110
111
112
113
114
115
# File 'lib/voicebase/v2/client.rb', line 105

def delete_file(args = {}, headers = {})
  raise ArgumentError, "Missing argument :media_id" unless args[:media_id]
  url = uri + "/media/#{args[:media_id]}"

  response = self.class.delete(
      url,
      headers: default_headers(headers)
  )

  VoiceBase::Response.new(response, api_version)
end

#get_json_transcript(args, headers) ⇒ Object

Raises:



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/voicebase/v2/client.rb', line 62

def get_json_transcript(args, headers)
  raise ArgumentError, "Missing argument :media_id" unless args[:media_id]
  url = uri + "/media/#{args[:media_id]}"

  response = self.class.get(
      url,
      headers: default_headers(headers)
  )

  VoiceBase::Response.new(response, api_version)
end

#get_media(args = {}, headers = {}) ⇒ Object

I presume this method exists for parity with the V1 API however we are not using it

Raises:



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/voicebase/v2/client.rb', line 42

def get_media(args = {}, headers = {})
  raise ArgumentError, "Missing argument :media_id" unless args[:media_id]
  url = if args[:media_id]
    uri + "/media/#{args[:media_id]}"
  elsif args[:external_id]
    uri + "/media?externalID=#{args[:external_id]}"
  else
    raise ArgumentError, "Missing argument :media_url or :media_file"
  end
  if args[:external_id]
    uri + "/media?externalID=#{args[:external_id]}"
  else
    raise ArgumentError, "Missing argument :external_id"
  end

  VoiceBase::Response.new(self.class.get(
    url, headers: default_headers(headers)
  ), api_version)
end

#get_media_progress(args = {}, headers = {}) ⇒ Object

I presume this method exists for parity with the V1 API however we are not using it

Raises:



97
98
99
100
101
102
103
# File 'lib/voicebase/v2/client.rb', line 97

def get_media_progress(args = {}, headers = {})
  raise ArgumentError, "Missing argument :media_id" unless args[:media_id]
  VoiceBase::Response.new(self.class.get(
    uri + "/media/#{args[:media_id]}/progress",
    headers: default_headers(headers)
  ), api_version)
end

#get_text_transcript(args, headers) ⇒ Object

Raises:



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/voicebase/v2/client.rb', line 74

def get_text_transcript(args, headers)
  raise ArgumentError, "Missing argument :media_id" unless args[:media_id]
  url = uri + "/media/#{args[:media_id]}/transcripts/latest"
  
  headers.merge!({ 'Accept' => 'text/plain' })

  response = self.class.get(
      url,
      headers: default_headers(headers)
  )

  response.parsed_response
end

#get_transcript(args = {}, headers = {}) ⇒ Object



88
89
90
91
92
93
94
# File 'lib/voicebase/v2/client.rb', line 88

def get_transcript(args = {}, headers = {})
  if args[:format] == "txt"
    get_text_transcript(args, headers)
  else
    get_json_transcript(args, headers)
  end
end

#upload_media(args = {}, headers = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/voicebase/v2/client.rb', line 28

def upload_media(args = {}, headers = {})
  media_url = require_media_file_or_url(args)
  form_args = form_args(media_url, args[:language]) # language codes: en-US (default), en-UK, en-AU
  form_args.merge! (args[:external_id]) if args[:external_id]

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