ims-lti 2.0.0.beta.41 → 2.1.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ims/lti/models/messages/message.rb +4 -30
- data/lib/ims/lti/services.rb +1 -0
- data/lib/ims/lti/services/message_authenticator.rb +67 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29e9c5e5a1a93a572ef8c13b58070c2a346cc9b0
|
4
|
+
data.tar.gz: b8e314b9ce9a1be4370c2bc664636093c774aa3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1395db97d9522e4db6f47abcc4f78898be410ff37d0254162cbb4c3012c16b02a94961adc57233c6d6310dbd9ee47cbd2cd6cf6b2439d18a0fbc9385bb43407
|
7
|
+
data.tar.gz: 6e50211103d46cad1ea94365c1e34848cb54b2bb97768807c959fda2270c02b929b45cc307781c4126630d9c4710d3b2860859d4475ba74bf5981bbacb8ff66f
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module IMS::LTI::Models::Messages
|
2
2
|
class Message
|
3
3
|
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :message_authenticator
|
5
5
|
|
6
6
|
class << self
|
7
7
|
|
@@ -126,23 +126,9 @@ module IMS::LTI::Models::Messages
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def signed_post_params(secret)
|
129
|
-
|
130
|
-
@
|
131
|
-
@
|
132
|
-
end
|
133
|
-
|
134
|
-
def valid_signature?(secret)
|
135
|
-
params = collect_attributes(OAUTH_KEYS)
|
136
|
-
params = OAUTH_KEYS.inject({}) do |hash, k|
|
137
|
-
value = instance_variable_get("@#{k}")
|
138
|
-
hash[k] = value if value
|
139
|
-
hash
|
140
|
-
end
|
141
|
-
options, parsed_params = parse_params(params.merge(post_params))
|
142
|
-
signature = parsed_params.delete(:oauth_signature)
|
143
|
-
consumer_key = oauth_consumer_key
|
144
|
-
@simple_oauth_header = SimpleOAuth::Header.new(:post, launch_url, parsed_params, options.merge({consumer_key: consumer_key, consumer_secret: secret}))
|
145
|
-
@simple_oauth_header.valid?(signature: signature)
|
129
|
+
message_params = { oauth_consumer_key: oauth_consumer_key}.merge(post_params)
|
130
|
+
@message_authenticator = IMS::LTI::Services::MessageAuthenticator.new(launch_url, message_params, secret )
|
131
|
+
@message_authenticator.signed_params
|
146
132
|
end
|
147
133
|
|
148
134
|
def parameters
|
@@ -181,18 +167,6 @@ module IMS::LTI::Models::Messages
|
|
181
167
|
|
182
168
|
private
|
183
169
|
|
184
|
-
def parse_params(params)
|
185
|
-
params.inject([{}, {}]) do |array, (k, v)|
|
186
|
-
attr = k.to_s.sub('oauth_', '').to_sym
|
187
|
-
if SimpleOAuth::Header::ATTRIBUTE_KEYS.include?(attr)
|
188
|
-
array[0][attr] = v
|
189
|
-
else
|
190
|
-
array[1][k] = v
|
191
|
-
end
|
192
|
-
array
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
170
|
def collect_attributes(attributes)
|
197
171
|
attributes.inject({}) do |h, param|
|
198
172
|
value = instance_variable_get("@#{param}")
|
data/lib/ims/lti/services.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
module IMS::LTI::Services
|
2
|
+
class MessageAuthenticator
|
3
|
+
|
4
|
+
attr_reader :launch_url, :params, :message, :simple_oauth_header, :signature, :consumer_key
|
5
|
+
|
6
|
+
def initialize(launch_url, params, secret)
|
7
|
+
@launch_url = launch_url
|
8
|
+
@params = params
|
9
|
+
@consumer_key = params[:oauth_consumer_key]
|
10
|
+
@options, @parsed_params = parse_params(params)
|
11
|
+
@signature = @parsed_params.delete(:oauth_signature)
|
12
|
+
@secret = secret
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def valid_signature?
|
17
|
+
simple_oauth_header.valid?(signature: signature)
|
18
|
+
end
|
19
|
+
|
20
|
+
def message
|
21
|
+
@message ||= begin
|
22
|
+
m = IMS::LTI::Models::Messages::Message.generate(params)
|
23
|
+
m.launch_url = launch_url
|
24
|
+
m
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def simple_oauth_header
|
29
|
+
@simple_oauth_header ||= begin
|
30
|
+
@simple_oauth_header = SimpleOAuth::Header.new(
|
31
|
+
:post, launch_url,
|
32
|
+
@parsed_params,
|
33
|
+
@options.merge(
|
34
|
+
{
|
35
|
+
consumer_key: consumer_key,
|
36
|
+
consumer_secret: @secret
|
37
|
+
}
|
38
|
+
)
|
39
|
+
)
|
40
|
+
@simple_oauth_header
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def base_string
|
45
|
+
simple_oauth_header.send(:signature_base)
|
46
|
+
end
|
47
|
+
|
48
|
+
def signed_params
|
49
|
+
simple_oauth_header.signed_attributes.merge(params)
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
private
|
54
|
+
def parse_params(params)
|
55
|
+
params.inject([{}, {}]) do |array, (k, v)|
|
56
|
+
attr = k.to_s.sub('oauth_', '').to_sym
|
57
|
+
if SimpleOAuth::Header::ATTRIBUTE_KEYS.include?(attr)
|
58
|
+
array[0][attr] = v
|
59
|
+
else
|
60
|
+
array[1][k] = v
|
61
|
+
end
|
62
|
+
array
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ims-lti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0.beta.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06
|
11
|
+
date: 2016-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simple_oauth
|
@@ -258,6 +258,7 @@ files:
|
|
258
258
|
- lib/ims/lti/serializers/membership_service/page_serializer.rb
|
259
259
|
- lib/ims/lti/serializers/membership_service/person_serializer.rb
|
260
260
|
- lib/ims/lti/services.rb
|
261
|
+
- lib/ims/lti/services/message_authenticator.rb
|
261
262
|
- lib/ims/lti/services/tool_config.rb
|
262
263
|
- lib/ims/lti/services/tool_proxy_registration_service.rb
|
263
264
|
- lib/ims/lti/services/tool_proxy_validator.rb
|