ims-lti 2.0.0.beta.41 → 2.1.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|