Class: IMS::LTI::Models::Messages::Message
- Inherits:
-
Object
- Object
- IMS::LTI::Models::Messages::Message
show all
- Defined in:
- lib/ims/lti/models/messages/message.rb
Constant Summary
collapse
- MESSAGE_TYPE =
"".freeze
- LAUNCH_TARGET_IFRAME =
'iframe'
- LAUNCH_TARGET_WINDOW =
'window'
- EXTENSION_PREFIX =
'ext_'
- CUSTOM_PREFIX =
'custom_'
- OAUTH_KEYS =
:oauth_callback, :oauth_consumer_key, :oauth_nonce, :oauth_signature, :oauth_signature_method,
:oauth_timestamp, :oauth_token, :oauth_verifier, :oauth_version
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(attrs = {}) ⇒ Message
Returns a new instance of Message.
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/ims/lti/models/messages/message.rb', line 94
def initialize(attrs = {})
@custom_params = {}
@ext_params = {}
@unknown_params = {}
attrs.each do |k, v|
str_key = k.to_s
if str_key.start_with?(EXTENSION_PREFIX)
@ext_params[str_key] = v
elsif str_key.start_with?(CUSTOM_PREFIX)
@custom_params[str_key] = v
elsif !v.nil? && self.respond_to?(k.to_sym)
send(("#{k}=").to_sym, v)
else
warn "Unknown parameter #{k}"
@unknown_params[str_key] = v
end
end
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args, &block) ⇒ Object
158
159
160
161
162
163
164
165
166
|
# File 'lib/ims/lti/models/messages/message.rb', line 158
def method_missing(meth, *args, &block)
if match = /^(custom|ext)_([^=$]*)/.match(meth)
param_type, key = match.captures
param_hash = instance_variable_get("@#{param_type}_params".to_sym)
meth =~ /=$/ ? param_hash[match.to_s] = args[0] : param_hash[match.to_s]
else
super
end
end
|
Instance Attribute Details
#custom_params ⇒ Object
Returns the value of attribute custom_params.
85
86
87
|
# File 'lib/ims/lti/models/messages/message.rb', line 85
def custom_params
@custom_params
end
|
#ext_params ⇒ Object
Returns the value of attribute ext_params.
85
86
87
|
# File 'lib/ims/lti/models/messages/message.rb', line 85
def ext_params
@ext_params
end
|
#message_authenticator ⇒ Object
Returns the value of attribute message_authenticator.
4
5
6
|
# File 'lib/ims/lti/models/messages/message.rb', line 4
def message_authenticator
@message_authenticator
end
|
#unknown_params ⇒ Object
Returns the value of attribute unknown_params.
85
86
87
|
# File 'lib/ims/lti/models/messages/message.rb', line 85
def unknown_params
@unknown_params
end
|
Class Method Details
.add_deprecated_params(param, *params) ⇒ Object
36
37
38
|
# File 'lib/ims/lti/models/messages/message.rb', line 36
def add_deprecated_params(param, *params)
add_params('@deprecated_params', param, *params)
end
|
.add_optional_params(param, *params) ⇒ Object
28
29
30
|
# File 'lib/ims/lti/models/messages/message.rb', line 28
def add_optional_params(param, *params)
add_params('@optional_params', param, *params)
end
|
.add_recommended_params(param, *params) ⇒ Object
20
21
22
|
# File 'lib/ims/lti/models/messages/message.rb', line 20
def add_recommended_params(param, *params)
add_params('@recommended_params', param, *params)
end
|
.add_required_params(param, *params) ⇒ Object
12
13
14
|
# File 'lib/ims/lti/models/messages/message.rb', line 12
def add_required_params(param, *params)
add_params('@required_params', param, *params)
end
|
.deprecated_params ⇒ Object
32
33
34
|
# File 'lib/ims/lti/models/messages/message.rb', line 32
def deprecated_params
supers_params('@deprecated_params') | (@deprecated_params || [])
end
|
.descendants ⇒ Object
46
47
48
|
# File 'lib/ims/lti/models/messages/message.rb', line 46
def descendants
@descendants || Set.new
end
|
.generate(params) ⇒ Object
89
90
91
92
|
# File 'lib/ims/lti/models/messages/message.rb', line 89
def self.generate(params)
klass = self.descendants.select{|d| d::MESSAGE_TYPE == params['lti_message_type']}.first
klass ? klass.new(params) : Message.new(params)
end
|
.inherited(klass) ⇒ Object
40
41
42
43
44
|
# File 'lib/ims/lti/models/messages/message.rb', line 40
def inherited(klass)
@descendants ||= Set.new
@descendants << klass
superclass.inherited(klass) unless(self == Message)
end
|
.optional_params ⇒ Object
24
25
26
|
# File 'lib/ims/lti/models/messages/message.rb', line 24
def optional_params
supers_params('@optional_params') | (@optional_params || [])
end
|
.recommended_params ⇒ Object
16
17
18
|
# File 'lib/ims/lti/models/messages/message.rb', line 16
def recommended_params
supers_params('@recommended_params') | (@recommended_params || [])
end
|
.required_params ⇒ Object
8
9
10
|
# File 'lib/ims/lti/models/messages/message.rb', line 8
def required_params
supers_params('@required_params') | (@required_params || [])
end
|
Instance Method Details
#add_custom_params(params) ⇒ Object
116
117
118
|
# File 'lib/ims/lti/models/messages/message.rb', line 116
def add_custom_params(params)
params.each { |k, v| k.to_s.start_with?('custom_') ? @custom_params[k.to_s] = v : @custom_params["custom_#{k.to_s}"] = v }
end
|
#deprecated_params ⇒ Object
150
151
152
|
# File 'lib/ims/lti/models/messages/message.rb', line 150
def deprecated_params
collect_attributes(self.class.deprecated_params)
end
|
#get_custom_params ⇒ Object
120
121
122
|
# File 'lib/ims/lti/models/messages/message.rb', line 120
def get_custom_params
@custom_params.inject({}) { |hash, (k, v)| hash[k.gsub(/\Acustom_/, '')] = v; hash }
end
|
#oauth_params ⇒ Object
154
155
156
|
# File 'lib/ims/lti/models/messages/message.rb', line 154
def oauth_params
collect_attributes(OAUTH_KEYS)
end
|
#optional_params ⇒ Object
146
147
148
|
# File 'lib/ims/lti/models/messages/message.rb', line 146
def optional_params
collect_attributes(self.class.optional_params)
end
|
#parameters ⇒ Object
134
135
136
|
# File 'lib/ims/lti/models/messages/message.rb', line 134
def parameters
collect_attributes(self.class.send("parameters"))
end
|
#post_params ⇒ Object
124
125
126
|
# File 'lib/ims/lti/models/messages/message.rb', line 124
def post_params
unknown_params.merge(@custom_params).merge(@ext_params).merge(parameters)
end
|
#recommended_params ⇒ Object
142
143
144
|
# File 'lib/ims/lti/models/messages/message.rb', line 142
def recommended_params
collect_attributes(self.class.recommended_params)
end
|
#required_params ⇒ Object
138
139
140
|
# File 'lib/ims/lti/models/messages/message.rb', line 138
def required_params
collect_attributes(self.class.required_params)
end
|
#signed_post_params(secret) ⇒ Object
128
129
130
131
132
|
# File 'lib/ims/lti/models/messages/message.rb', line 128
def signed_post_params(secret)
message_params = { oauth_consumer_key: oauth_consumer_key}.merge(post_params)
@message_authenticator = IMS::LTI::Services::MessageAuthenticator.new(launch_url, message_params, secret )
@message_authenticator.signed_params
end
|