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