class Alexa::Connection
Constants
- HEADERS
Attributes
access_key_id[R]
params[R]
secret_access_key[R]
Public Class Methods
new(credentials = {})
click to toggle source
# File lib/alexa/connection.rb, line 15 def initialize(credentials = {}) @secret_access_key = credentials.fetch(:secret_access_key) @access_key_id = credentials.fetch(:access_key_id) end
Public Instance Methods
get(params = {})
click to toggle source
# File lib/alexa/connection.rb, line 20 def get(params = {}) @params = params handle_response(request).body.force_encoding(Encoding::UTF_8) end
Private Instance Methods
auth_headers()
click to toggle source
# File lib/alexa/connection.rb, line 54 def auth_headers signer.sign_request( http_method: "GET", headers: HEADERS, url: uri.to_s ).headers end
handle_response(response)
click to toggle source
# File lib/alexa/connection.rb, line 27 def handle_response(response) case response when Net::HTTPSuccess response else raise ResponseError.new(response.body, response) end end
headers()
click to toggle source
# File lib/alexa/connection.rb, line 50 def headers HEADERS.merge(auth_headers) end
query()
click to toggle source
# File lib/alexa/connection.rb, line 71 def query params.map do |key, value| "#{key}=#{CGI.escape(value.to_s)}" end.sort!.join("&") end
request()
click to toggle source
# File lib/alexa/connection.rb, line 36 def request req = Net::HTTP::Get.new(uri) headers.each do |key, value| req[key] = value end Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(req) end end
signer()
click to toggle source
# File lib/alexa/connection.rb, line 62 def signer Aws::Sigv4::Signer.new( service: "awis", region: Alexa::API_REGION, access_key_id: access_key_id, secret_access_key: secret_access_key ) end
uri()
click to toggle source
# File lib/alexa/connection.rb, line 46 def uri @uri ||= URI.parse("#{Alexa::API_HOST}/api?" << query) end