-
Notifications
You must be signed in to change notification settings - Fork 4
/
context.rb
54 lines (47 loc) · 1.56 KB
/
context.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
module AlexaRuby
# Amazon Alexa request context - application, user and device info
class Context
attr_reader :app_id, :user, :device, :api_endpoint, :audio_state
# Initialize new Context object
#
# @param context [Hash] request context parameters
# @raise [ArgumentError] if application ID, or user ID, or device ID are nil
def initialize(context)
@app_id = get_app_id(context[:System][:application])
raise ArgumentError, 'Missing application ID' unless @app_id
@user = load_user(context[:System][:user])
@device = load_device(context[:System][:device])
@api_endpoint = context[:System][:apiEndpoint]
@audio_state = load_audio_state(context[:AudioPlayer])
end
private
# Get application ID
#
# @param app [Hash] application parameters
# @return [String] application ID
def get_app_id(app)
app[:applicationId] unless app[:applicationId].nil?
end
# Initialize user parameters
#
# @param params [Hash] user parameters
# @return [Object] new User object instance
def load_user(params)
User.new(params)
end
# Initialize user device parameters
#
# @param params [Hash] user device parameters
# @return [Object] new Device object instance
def load_device(params)
Device.new(params)
end
# Initialize audio player state
#
# @param params [Hash] audio player parameters
# @return [Object] new AudioState object instance
def load_audio_state(params)
AudioState.new(params) unless params.nil?
end
end
end