ims-lti 1.2.6 → 1.2.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7fb650dcdd9fad408934d47de72f8f2e11a55605d10f23ee04944976c900cd4
4
- data.tar.gz: 2835e4925ea33ebd4f4aac6ea8c0b47d3696a67ae548addd6f1aad5adf4f12ef
3
+ metadata.gz: 29574604b1d50bb3ad7a18357c73989e650cc7eaee9693115661f4b1fba01369
4
+ data.tar.gz: 7d3ce283cf78880097a4803f35ef96f0e2cdea74d49e17a6b45982b9f5171390
5
5
  SHA512:
6
- metadata.gz: 98469e50f9bb313fc90facdc65c309ec286e3b71b410226d390ffa0d25b6b78ed4c1d3ca7bfec31baf27c8f949a7c83f8525dc66c313968eb8af333dd514637d
7
- data.tar.gz: 8ab0abecf8f0f7038f91f006a1a82ddf7a3717f5532a7bfa52ba9ae2a0379fd260e6f07cdb5074cfd283ed33a4a8b692b79c99fd487aad40394586052b32733b
6
+ metadata.gz: 8effe8dd1fe14c17dd01a41c4f3c719a0201717d72b244b5d181df53df0de9ec13bec6bed53f1f9aa873c2cb9ada99dfad4eadc94818003610a287a56d8884f1
7
+ data.tar.gz: a738260e51baa9a6a61db871ad3807e73dbf3918e1fd45da1cf27d6be0fd61bdf8e597579f8ac68c639936c848bb5d676dddacd7d592f784e1051bc9db2aa7d0
@@ -96,67 +96,116 @@ module IMS::LTI
96
96
 
97
97
  #generates the return url for file submissions
98
98
  def file_content_return_url(url, text, content_type = nil)
99
- url = CGI::escape(url)
100
- text = CGI::escape(text)
101
- content_type = CGI::escape(content_type) if content_type
102
99
 
103
- return_url = "#{content_return_url}?return_type=file&url=#{url}&text=#{text}"
104
- return_url = "#{return_url}&content_type=#{content_type}" if content_type
100
+ return_url = add_parameters(content_return_url, {
101
+ return_type: 'file',
102
+ url: url,
103
+ text: text
104
+ })
105
+
106
+ if content_type
107
+ return_url = add_parameters(return_url, {
108
+ content_type: content_type
109
+ })
110
+ end
105
111
 
106
112
  return return_url
107
113
  end
108
114
 
109
115
  #generates the return url for url submissions
110
116
  def url_content_return_url(url, title = nil, text = 'link', target = '_blank')
111
- url = CGI::escape(url)
112
- text = CGI::escape(text)
113
- target = CGI::escape(target)
114
117
 
115
- return_url = "#{content_return_url}?return_type=url&url=#{url}&text=#{text}&target=#{target}"
116
- return_url = "#{return_url}&title=#{CGI::escape(title)}" if title
118
+ return_url = add_parameters(content_return_url, {
119
+ return_type: 'url',
120
+ url: url,
121
+ text: text,
122
+ target: target
123
+ })
124
+
125
+ if title
126
+ return_url = add_parameters(return_url, {
127
+ title:title
128
+ })
129
+ end
117
130
 
118
131
  return return_url
119
132
  end
120
133
 
121
134
  #generates the return url for lti launch submissions
122
135
  def lti_launch_content_return_url(url, text='link', title=nil)
123
- url = CGI::escape(url)
124
- text = CGI::escape(text)
125
136
 
126
- return_url = "#{content_return_url}?return_type=lti_launch_url&url=#{url}&text=#{text}"
127
- return_url = "#{return_url}&title=#{CGI::escape(title)}" if title
137
+ return_url = add_parameters(content_return_url, {
138
+ return_type: 'lti_launch_url',
139
+ url: url,
140
+ text: text
141
+ })
142
+
143
+ if title
144
+ return_url = add_parameters(return_url, {
145
+ title:title
146
+ })
147
+ end
128
148
 
129
149
  return return_url
130
150
  end
131
151
 
132
152
  #generates the return url for image submissions
133
153
  def image_content_return_url(url, width, height, alt = '')
134
- url = CGI::escape(url)
135
- width = CGI::escape(width.to_s)
136
- height = CGI::escape(height.to_s)
137
- alt = CGI::escape(alt)
138
154
 
139
- "#{content_return_url}?return_type=image_url&url=#{url}&width=#{width}&height=#{height}&alt=#{alt}"
155
+ add_parameters(content_return_url, {
156
+ return_type: 'image_url',
157
+ url: url,
158
+ width: width.to_s,
159
+ height: height.to_s,
160
+ alt: alt
161
+ })
140
162
  end
141
163
 
142
164
  #generates the return url for iframe submissions
143
165
  def iframe_content_return_url(url, width, height, title = nil)
144
- url = CGI::escape(url)
145
- width = CGI::escape(width.to_s)
146
- height = CGI::escape(height.to_s)
147
166
 
148
- return_url = "#{content_return_url}?return_type=iframe&url=#{url}&width=#{width}&height=#{height}"
149
- return_url = "#{return_url}&title=#{CGI::escape(title)}" if title
167
+ return_url = add_parameters(content_return_url, {
168
+ return_type: 'iframe',
169
+ url: url,
170
+ width: width.to_s,
171
+ height: height.to_s
172
+ })
173
+
174
+ if title
175
+ return_url = add_parameters(return_url, {
176
+ title:title
177
+ })
178
+ end
150
179
 
151
180
  return return_url
152
181
  end
153
182
 
154
183
  #generates the return url for oembed submissions
155
184
  def oembed_content_return_url(url, endpoint)
156
- url = CGI::escape(url)
157
- endpoint = CGI::escape(endpoint)
158
185
 
159
- "#{content_return_url}?return_type=oembed&url=#{url}&endpoint=#{endpoint}"
186
+ add_parameters(content_return_url, {
187
+ return_type: 'oembed',
188
+ url: url,
189
+ endpoint: endpoint
190
+ })
191
+ end
192
+
193
+ private
194
+
195
+ # adds parameters to a url, with consideration for
196
+ # already existing parameters
197
+ def add_parameters(url, params)
198
+ parsed = URI.parse(url)
199
+ query = if parsed.query
200
+ CGI.parse(parsed.query)
201
+ else
202
+ {}
203
+ end
204
+
205
+ query = query.merge(params)
206
+
207
+ parsed.query = URI.encode_www_form(query)
208
+ parsed.to_s
160
209
  end
161
210
  end
162
211
 
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: 1.2.6
4
+ version: 1.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-26 00:00:00.000000000 Z
11
+ date: 2022-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -54,20 +54,20 @@ dependencies:
54
54
  name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - "~>"
57
+ - - ">"
58
58
  - !ruby/object:Gem::Version
59
59
  version: '3.0'
60
- - - ">"
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '3.0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '3.0'
70
- - - ">"
70
+ - - "~>"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '3.0'
73
73
  description:
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubygems_version: 3.1.6
118
+ rubygems_version: 3.0.3.1
119
119
  signing_key:
120
120
  specification_version: 4
121
121
  summary: Ruby library for creating IMS LTI tool providers and consumers