class AlexaRuby::BaseRequest

Amazon Alexa web service request

Attributes

certificates_chain_url[RW]
context[R]
id[R]
locale[R]
session[R]
signature[RW]
timestamp[R]
type[R]
version[R]

Public Class Methods

new(request) click to toggle source

Initialize new request object

@param request [Hash] request from Amazon Alexa web service

# File lib/alexa_ruby/request/base_request.rb, line 10
def initialize(request)
  @req = request
  @version = @req[:version]
  @session = parse_session unless @type == :audio_player
  @context = parse_context unless @req[:context].nil?
  @id = nil
  @timestamp = nil
  @locale = nil
  parse_base_params(@req[:request])
end

Public Instance Methods

json() click to toggle source

Return JSON representation of given request

@return [String] request json

# File lib/alexa_ruby/request/base_request.rb, line 32
def json
  Oj.to_json(@req)
end
valid?() click to toggle source

Check if it is a valid Amazon request

@return [Boolean]

# File lib/alexa_ruby/request/base_request.rb, line 24
def valid?
  validator = Validator.new(certificates_chain_url, signature, @req)
  validator.valid_request?
end

Private Instance Methods

parse_base_params(req) click to toggle source

Set request parameters

@param req [Hash] request parameters @raise [ArgumentError] if missing ID or timestamp

# File lib/alexa_ruby/request/base_request.rb, line 54
def parse_base_params(req)
  @id = req[:requestId] unless req[:requestId].nil?
  raise ArgumentError, 'Missing request ID' unless @id
  @timestamp = DateTime.parse(req[:timestamp]) unless req[:timestamp].nil?
  raise ArgumentError, 'Missing request timestamp' unless @timestamp
  @locale = req[:locale] unless req[:locale].nil?
end
parse_context() click to toggle source

Build a request context object

@return [Object] new Context object instance

# File lib/alexa_ruby/request/base_request.rb, line 46
def parse_context
  Context.new(@req[:context])
end
parse_session() click to toggle source

Build session object

# File lib/alexa_ruby/request/base_request.rb, line 39
def parse_session
  Session.new(@req[:session])
end