fractalpenguin-googlesso 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 112f41d2d2c7fd83a4eed254091043bd0f1554b4
4
- data.tar.gz: 56c002807b287bafd7250a554ef8a80d77269a24
3
+ metadata.gz: a5dbd427592e1193c56d2a030f0f4b0e6049db14
4
+ data.tar.gz: ab26eac4d783f78db530b0f515fc79e12b6dd9bc
5
5
  SHA512:
6
- metadata.gz: 8e799798605bfc332394e6e34c65755753f0776cd17b13b94c57456c5e1d99ab70f1c4943a4d53aea9f6049fedf43771e481fec6a0a49045ce3a684662c75784
7
- data.tar.gz: 344c30f68b93c583c2181df01530873c2b517262790d2f1765b8745031f062315858a3db9550db7ce6bc5df3987d4a1e1ec650c3abaed1286fb6587bcfd8ddd1
6
+ metadata.gz: a4d30aae1a4daa5dc81b023c7a96052177aff58e7373faa9c85ee02aaef0c4a22df75b1c998e57f65b161b48549b65d51f243843ca8dc75a165e1cacdea97b5a
7
+ data.tar.gz: 07345ca2b3b214aee4676cd63ed42b810c234a650d578307eafdb6c1753f175683527628e9a197f7d363d8e6efb63489d3733b21882ca741f32d5ffd16763007
@@ -2,5 +2,5 @@ require 'xmlcanonicalizer'
2
2
  require 'processresponse'
3
3
 
4
4
  class FractalPenguinGoogleSSO
5
- VERSION = '0.0.3'
5
+ VERSION = '0.0.4'
6
6
  end
@@ -3,393 +3,392 @@ require "base64"
3
3
 
4
4
  include REXML
5
5
 
6
-
7
- class REXML::Instruction
8
- def write(writer, indent=-1, transitive=false, ie_hack=false)
9
- indent(writer, indent)
10
- writer << START.sub(/\\/u, '')
11
- writer << @target
12
- writer << ' '
13
- writer << @content if @content != nil
14
- writer << STOP.sub(/\\/u, '')
15
- end
6
+ class REXML::Instruction
7
+ def write(writer, indent=-1, transitive=false, ie_hack=false)
8
+ indent(writer, indent)
9
+ writer << START.sub(/\\/u, '')
10
+ writer << @target
11
+ writer << ' '
12
+ writer << @content if @content != nil
13
+ writer << STOP.sub(/\\/u, '')
16
14
  end
17
-
18
- class REXML::Attribute
19
- def <=>(a2)
20
- if (self === a2)
21
- return 0
22
- elsif (self == nil)
23
- return -1
24
- elsif (a2 == nil)
25
- return 1
26
- elsif (self.prefix() == a2.prefix())
27
- return self.name()<=>a2.name()
28
- end
29
- if (self.prefix() == nil)
30
- return -1
31
- elsif (a2.prefix() == nil)
32
- return 1
33
- end
34
- ret = self.namespace()<=>a2.namespace()
35
- if (ret == 0)
36
- ret = self.prefix()<=>a2.prefix()
37
- end
38
- return ret
15
+ end
16
+
17
+ class REXML::Attribute
18
+ def <=>(a2)
19
+ if (self === a2)
20
+ return 0
21
+ elsif (self == nil)
22
+ return -1
23
+ elsif (a2 == nil)
24
+ return 1
25
+ elsif (self.prefix() == a2.prefix())
26
+ return self.name()<=>a2.name()
39
27
  end
40
- end
41
-
42
- class REXML::Element
43
- def search_namespace(prefix)
44
- if (self.namespace(prefix) == nil)
45
- return (self.parent().search_namespace(prefix)) if (self.parent() != nil)
46
- else
47
- return self.namespace(prefix)
48
- end
28
+ if (self.prefix() == nil)
29
+ return -1
30
+ elsif (a2.prefix() == nil)
31
+ return 1
49
32
  end
50
- def rendered=(rendered)
51
- @rendered = rendered
33
+ ret = self.namespace()<=>a2.namespace()
34
+ if (ret == 0)
35
+ ret = self.prefix()<=>a2.prefix()
52
36
  end
53
- def rendered?()
54
- return @rendered
37
+ return ret
38
+ end
39
+ end
40
+
41
+ class REXML::Element
42
+ def search_namespace(prefix)
43
+ if (self.namespace(prefix) == nil)
44
+ return (self.parent().search_namespace(prefix)) if (self.parent() != nil)
45
+ else
46
+ return self.namespace(prefix)
55
47
  end
56
- def node_namespaces()
57
- ns = Array.new()
58
- ns.push(self.prefix())
59
- self.attributes().each_attribute{|a|
60
- if (a.prefix() == "xmlns" or (a.prefix() == "" && a.local_name() == "xmlns"))
61
- ns.push("xmlns")
48
+ end
49
+ def rendered=(rendered)
50
+ @rendered = rendered
51
+ end
52
+ def rendered?()
53
+ return @rendered
54
+ end
55
+ def node_namespaces()
56
+ ns = Array.new()
57
+ ns.push(self.prefix())
58
+ self.attributes().each_attribute{|a|
59
+ if (a.prefix() == "xmlns" or (a.prefix() == "" && a.local_name() == "xmlns"))
60
+ ns.push("xmlns")
61
+ end
62
+ }
63
+ self.prefixes().each { |prefix| ns.push(prefix) }
64
+ ns
65
+ end
66
+ end
67
+
68
+ class NamespaceNode
69
+ attr_reader :prefix, :uri
70
+ def initialize(prefix, uri)
71
+ @prefix = prefix
72
+ @uri = uri
73
+ end
74
+ end
75
+
76
+ class XmlCanonicalizer
77
+ attr_accessor :prefix_list, :logger
78
+
79
+ BEFORE_DOC_ELEMENT = 0
80
+ INSIDE_DOC_ELEMENT = 1
81
+ AFTER_DOC_ELEMENT = 2
82
+
83
+ NODE_TYPE_ATTRIBUTE = 3
84
+ NODE_TYPE_WHITESPACE = 4
85
+ NODE_TYPE_COMMENT = 5
86
+ NODE_TYPE_PI = 6
87
+ NODE_TYPE_TEXT = 7
88
+
89
+
90
+ def initialize(with_comments, excl_c14n)
91
+ @with_comments = with_comments
92
+ @exclusive = excl_c14n
93
+ @res = ""
94
+ @state = BEFORE_DOC_ELEMENT
95
+ @xnl = Array.new()
96
+ @prevVisibleNamespacesStart = 0
97
+ @prevVisibleNamespacesEnd = 0
98
+ @visibleNamespaces = Array.new()
99
+ @inclusive_namespaces = Array.new()
100
+ @prefix_list = nil
101
+ @rendered_prefixes = Array.new()
102
+ @logger = nil#Logger.new("xmlcanonicalizer.log")
103
+ #@logger.level = Logger::DEBUG
104
+ end
105
+
106
+ def add_inclusive_namespaces(prefix_list, element, visible_namespaces)
107
+ namespaces = element.attributes()
108
+ namespaces.each_attribute{|ns|
109
+ if (ns.prefix=="xmlns")
110
+ if (prefix_list.include?(ns.local_name()))
111
+ visible_namespaces.push(NamespaceNode.new("xmlns:"+ns.local_name(), ns.value()))
62
112
  end
113
+ end
114
+ }
115
+ parent = element.parent()
116
+ add_inclusive_namespaces(prefix_list, parent, visible_namespaces) if (parent)
117
+ visible_namespaces
118
+ end
119
+
120
+ def canonicalize(document)
121
+ write_document_node(document)
122
+ @logger.debug("\nCanonicalized result\n" + @res.to_s()) if @logger
123
+ @res
124
+ end
125
+
126
+ def canonicalize_element(element, logging = true)
127
+ @logger.debug("Canonicalize element:\n" + element.to_s()) if @logger
128
+ @inclusive_namespaces = add_inclusive_namespaces(@prefix_list, element, @inclusive_namespaces) if (@prefix_list)
129
+ @preserve_document = element.document()
130
+ tmp_parent = element.parent()
131
+ body_string = remove_whitespace(element.to_s().gsub("\n","").gsub("\t","").gsub("\r",""))
132
+ document = Document.new(body_string)
133
+ tmp_parent.delete_element(element)
134
+ element = tmp_parent.add_element(document.root())
135
+ @preserve_element = element
136
+ document = Document.new(element.to_s())
137
+ ns = element.namespace(element.prefix())
138
+ document.root().add_namespace(element.prefix(), ns)
139
+ write_document_node(document)
140
+ @logger.debug("Canonicalized result:\n" + @res.to_s()) if @logger
141
+ @res
142
+ end
143
+
144
+ def write_document_node(document)
145
+ @state = BEFORE_DOC_ELEMENT
146
+ if (document.class().to_s() == "REXML::Element")
147
+ write_node(document)
148
+ else
149
+ document.each_child{|child|
150
+ write_node(child)
63
151
  }
64
- self.prefixes().each { |prefix| ns.push(prefix) }
65
- ns
66
152
  end
153
+ @res
67
154
  end
68
-
69
- class NamespaceNode
70
- attr_reader :prefix, :uri
71
- def initialize(prefix, uri)
72
- @prefix = prefix
73
- @uri = uri
155
+
156
+ def write_node(node)
157
+ visible = is_node_visible(node)
158
+ if ((node.node_type() == :text) && white_text?(node.value()))
159
+ res = node.value()
160
+ res.gsub("\r\n","\n")
161
+ #res = res.delete(" ").delete("\t")
162
+ res.delete("\r")
163
+ @res = @res + res
164
+ #write_text_node(node,visible) if (@state == INSIDE_DOC_ELEMENT)
165
+ return
74
166
  end
75
- end
76
-
77
- class XmlCanonicalizer
78
- attr_accessor :prefix_list, :logger
79
-
80
- BEFORE_DOC_ELEMENT = 0
81
- INSIDE_DOC_ELEMENT = 1
82
- AFTER_DOC_ELEMENT = 2
83
-
84
- NODE_TYPE_ATTRIBUTE = 3
85
- NODE_TYPE_WHITESPACE = 4
86
- NODE_TYPE_COMMENT = 5
87
- NODE_TYPE_PI = 6
88
- NODE_TYPE_TEXT = 7
89
-
90
-
91
- def initialize(with_comments, excl_c14n)
92
- @with_comments = with_comments
93
- @exclusive = excl_c14n
94
- @res = ""
95
- @state = BEFORE_DOC_ELEMENT
96
- @xnl = Array.new()
97
- @prevVisibleNamespacesStart = 0
98
- @prevVisibleNamespacesEnd = 0
99
- @visibleNamespaces = Array.new()
100
- @inclusive_namespaces = Array.new()
101
- @prefix_list = nil
102
- @rendered_prefixes = Array.new()
103
- @logger = nil#Logger.new("xmlcanonicalizer.log")
104
- #@logger.level = Logger::DEBUG
167
+ if (node.node_type() == :text)
168
+ write_text_node(node, visible)
169
+ return
105
170
  end
106
-
107
- def add_inclusive_namespaces(prefix_list, element, visible_namespaces)
108
- namespaces = element.attributes()
109
- namespaces.each_attribute{|ns|
110
- if (ns.prefix=="xmlns")
111
- if (prefix_list.include?(ns.local_name()))
112
- visible_namespaces.push(NamespaceNode.new("xmlns:"+ns.local_name(), ns.value()))
113
- end
114
- end
115
- }
116
- parent = element.parent()
117
- add_inclusive_namespaces(prefix_list, parent, visible_namespaces) if (parent)
118
- visible_namespaces
171
+ if (node.node_type() == :element)
172
+ write_element_node(node, visible) if (!node.rendered?())
173
+ node.rendered=(true)
119
174
  end
120
-
121
- def canonicalize(document)
122
- write_document_node(document)
123
- @logger.debug("\nCanonicalized result\n" + @res.to_s()) if @logger
124
- @res
175
+ if (node.node_type() == :processing_instruction)
125
176
  end
126
-
127
- def canonicalize_element(element, logging = true)
128
- @logger.debug("Canonicalize element:\n" + element.to_s()) if @logger
129
- @inclusive_namespaces = add_inclusive_namespaces(@prefix_list, element, @inclusive_namespaces) if (@prefix_list)
130
- @preserve_document = element.document()
131
- tmp_parent = element.parent()
132
- body_string = remove_whitespace(element.to_s().gsub("\n","").gsub("\t","").gsub("\r",""))
133
- document = Document.new(body_string)
134
- tmp_parent.delete_element(element)
135
- element = tmp_parent.add_element(document.root())
136
- @preserve_element = element
137
- document = Document.new(element.to_s())
138
- ns = element.namespace(element.prefix())
139
- document.root().add_namespace(element.prefix(), ns)
140
- write_document_node(document)
141
- @logger.debug("Canonicalized result:\n" + @res.to_s()) if @logger
142
- @res
177
+ if (node.node_type() == :comment)
143
178
  end
144
-
145
- def write_document_node(document)
146
- @state = BEFORE_DOC_ELEMENT
147
- if (document.class().to_s() == "REXML::Element")
148
- write_node(document)
149
- else
150
- document.each_child{|child|
151
- write_node(child)
152
- }
179
+ end
180
+
181
+ def write_element_node(node, visible)
182
+ savedPrevVisibleNamespacesStart = @prevVisibleNamespacesStart
183
+ savedPrevVisibleNamespacesEnd = @prevVisibleNamespacesEnd
184
+ savedVisibleNamespacesSize = @visibleNamespaces.size()
185
+ state = @state
186
+ state = INSIDE_DOC_ELEMENT if (visible && state == BEFORE_DOC_ELEMENT)
187
+ @res = @res + "<" + node.expanded_name() if (visible)
188
+ write_namespace_axis(node, visible)
189
+ write_attribute_axis(node)
190
+ @res = @res + ">" if (visible)
191
+ node.each_child{|child|
192
+ write_node(child)
193
+ }
194
+ @res = @res + "</" +node.expanded_name() + ">" if (visible)
195
+ @state = AFTER_DOC_ELEMENT if (visible && state == BEFORE_DOC_ELEMENT)
196
+ @prevVisibleNamespacesStart = savedPrevVisibleNamespacesStart
197
+ @prevVisibleNamespacesEnd = savedPrevVisibleNamespacesEnd
198
+ @visibleNamespaces.slice!(savedVisibleNamespacesSize, @visibleNamespaces.size() - savedVisibleNamespacesSize) if (@visibleNamespaces.size() > savedVisibleNamespacesSize)
199
+ end
200
+
201
+ def write_namespace_axis(node, visible)
202
+ doc = node.document()
203
+ has_empty_namespace = false
204
+ list = Array.new()
205
+ cur = node
206
+ #while ((cur != nil) && (cur != doc) && (cur.node_type() != :document))
207
+ namespaces = cur.node_namespaces()
208
+ namespaces.each{|prefix|
209
+ next if ((prefix == "xmlns") && (node.namespace(prefix) == ""))
210
+ namespace = cur.namespace(prefix)
211
+ next if (is_namespace_node(namespace))
212
+ next if (node.namespace(prefix) != cur.namespace(prefix))
213
+ next if (prefix == "xml" && namespace == "http://www.w3.org/XML/1998/namespace")
214
+ next if (!is_node_visible(cur))
215
+ rendered = is_namespace_rendered(prefix, namespace)
216
+ @visibleNamespaces.push(NamespaceNode.new("xmlns:"+prefix,namespace)) if (visible)
217
+ if ((!rendered) && !list.include?(prefix))
218
+ list.push(prefix)
153
219
  end
154
- @res
220
+ has_empty_namespace = true if (prefix == nil)
221
+ }
222
+ if (visible && !has_empty_namespace && !is_namespace_rendered(nil, nil))
223
+ @res = @res + ' xmlns=""'
155
224
  end
156
-
157
- def write_node(node)
158
- visible = is_node_visible(node)
159
- if ((node.node_type() == :text) && white_text?(node.value()))
160
- res = node.value()
161
- res.gsub("\r\n","\n")
162
- #res = res.delete(" ").delete("\t")
163
- res.delete("\r")
164
- @res = @res + res
165
- #write_text_node(node,visible) if (@state == INSIDE_DOC_ELEMENT)
166
- return
167
- end
168
- if (node.node_type() == :text)
169
- write_text_node(node, visible)
170
- return
171
- end
172
- if (node.node_type() == :element)
173
- write_element_node(node, visible) if (!node.rendered?())
174
- node.rendered=(true)
175
- end
176
- if (node.node_type() == :processing_instruction)
177
- end
178
- if (node.node_type() == :comment)
179
- end
225
+ #TODO: ns of inclusive_list
226
+ #=begin
227
+ if ((@prefix_list) && (node.to_s() == node.parent().to_s()))
228
+ #list.push(node.prefix())
229
+ @inclusive_namespaces.each{|ns|
230
+ prefix = ns.prefix().split(":")[1]
231
+ list.push(prefix) if (!list.include?(prefix) && (!node.attributes.prefixes.include?(prefix)))
232
+ }
233
+ @prefix_list = nil
180
234
  end
181
-
182
- def write_element_node(node, visible)
183
- savedPrevVisibleNamespacesStart = @prevVisibleNamespacesStart
184
- savedPrevVisibleNamespacesEnd = @prevVisibleNamespacesEnd
185
- savedVisibleNamespacesSize = @visibleNamespaces.size()
186
- state = @state
187
- state = INSIDE_DOC_ELEMENT if (visible && state == BEFORE_DOC_ELEMENT)
188
- @res = @res + "<" + node.expanded_name() if (visible)
189
- write_namespace_axis(node, visible)
190
- write_attribute_axis(node)
191
- @res = @res + ">" if (visible)
192
- node.each_child{|child|
193
- write_node(child)
194
- }
195
- @res = @res + "</" +node.expanded_name() + ">" if (visible)
196
- @state = AFTER_DOC_ELEMENT if (visible && state == BEFORE_DOC_ELEMENT)
197
- @prevVisibleNamespacesStart = savedPrevVisibleNamespacesStart
198
- @prevVisibleNamespacesEnd = savedPrevVisibleNamespacesEnd
199
- @visibleNamespaces.slice!(savedVisibleNamespacesSize, @visibleNamespaces.size() - savedVisibleNamespacesSize) if (@visibleNamespaces.size() > savedVisibleNamespacesSize)
235
+ #=end
236
+ list.sort!()
237
+ list.insert(0, "xmlns") unless list.delete("xmlns").nil?
238
+ list.each{|prefix|
239
+ next if (prefix == "")
240
+ next if (@rendered_prefixes.include?(prefix))
241
+ @rendered_prefixes.push(prefix)
242
+ ns = node.namespace(prefix)
243
+ ns = @preserve_element.namespace(prefix) if (ns == nil)
244
+ @res = @res + normalize_string(" " + prefix + '="' + ns + '"', NODE_TYPE_TEXT) if (prefix == "xmlns")
245
+ @res = @res + normalize_string(" xmlns:" + prefix + '="' + ns + '"', NODE_TYPE_TEXT) if (prefix != nil && prefix != "xmlns")
246
+ }
247
+ if (visible)
248
+ @prevVisibleNamespacesStart = @prevVisibleNamespacesEnd
249
+ @prevVisibleNamespacesEnd = @visibleNamespaces.size()
200
250
  end
201
-
202
- def write_namespace_axis(node, visible)
203
- doc = node.document()
204
- has_empty_namespace = false
205
- list = Array.new()
206
- cur = node
207
- #while ((cur != nil) && (cur != doc) && (cur.node_type() != :document))
208
- namespaces = cur.node_namespaces()
209
- namespaces.each{|prefix|
210
- next if ((prefix == "xmlns") && (node.namespace(prefix) == ""))
211
- namespace = cur.namespace(prefix)
212
- next if (is_namespace_node(namespace))
213
- next if (node.namespace(prefix) != cur.namespace(prefix))
214
- next if (prefix == "xml" && namespace == "http://www.w3.org/XML/1998/namespace")
215
- next if (!is_node_visible(cur))
216
- rendered = is_namespace_rendered(prefix, namespace)
217
- @visibleNamespaces.push(NamespaceNode.new("xmlns:"+prefix,namespace)) if (visible)
218
- if ((!rendered) && !list.include?(prefix))
219
- list.push(prefix)
220
- end
221
- has_empty_namespace = true if (prefix == nil)
222
- }
223
- if (visible && !has_empty_namespace && !is_namespace_rendered(nil, nil))
224
- @res = @res + ' xmlns=""'
225
- end
226
- #TODO: ns of inclusive_list
227
- #=begin
228
- if ((@prefix_list) && (node.to_s() == node.parent().to_s()))
229
- #list.push(node.prefix())
230
- @inclusive_namespaces.each{|ns|
231
- prefix = ns.prefix().split(":")[1]
232
- list.push(prefix) if (!list.include?(prefix) && (!node.attributes.prefixes.include?(prefix)))
251
+ end
252
+
253
+ def write_attribute_axis(node)
254
+ list = Array.new()
255
+ node.attributes.each_attribute{|attr|
256
+ list.push(attr) if (!is_namespace_node(attr.value()) && !is_namespace_decl(attr)) # && is_node_visible(
257
+ }
258
+ if (!@exclusive && node.parent() != nil && node.parent().parent() != nil)
259
+ cur = node.parent()
260
+ while (cur != nil)
261
+ #next if (cur.attributes() == nil)
262
+ cur.each_attribute{|attribute|
263
+ next if (attribute.prefix() != "xml")
264
+ next if (attribute.prefix().index("xmlns") == 0)
265
+ next if (node.namespace(attribute.prefix()) == attribute.value())
266
+ found = true
267
+ list.each{|n|
268
+ if (n.prefix() == "xml" && n.value() == attritbute.value())
269
+ found = true
270
+ break
271
+ end
272
+ }
273
+ next if (found)
274
+ list.push(attribute)
233
275
  }
234
- @prefix_list = nil
235
- end
236
- #=end
237
- list.sort!()
238
- list.insert(0, "xmlns") unless list.delete("xmlns").nil?
239
- list.each{|prefix|
240
- next if (prefix == "")
241
- next if (@rendered_prefixes.include?(prefix))
242
- @rendered_prefixes.push(prefix)
243
- ns = node.namespace(prefix)
244
- ns = @preserve_element.namespace(prefix) if (ns == nil)
245
- @res = @res + normalize_string(" " + prefix + '="' + ns + '"', NODE_TYPE_TEXT) if (prefix == "xmlns")
246
- @res = @res + normalize_string(" xmlns:" + prefix + '="' + ns + '"', NODE_TYPE_TEXT) if (prefix != nil && prefix != "xmlns")
247
- }
248
- if (visible)
249
- @prevVisibleNamespacesStart = @prevVisibleNamespacesEnd
250
- @prevVisibleNamespacesEnd = @visibleNamespaces.size()
251
276
  end
252
277
  end
253
-
254
- def write_attribute_axis(node)
255
- list = Array.new()
256
- node.attributes().sort.each{|key, attr|
257
- list.push(attr) if (!is_namespace_node(attr.value()) && !is_namespace_decl(attr)) # && is_node_visible(
258
- }
259
- if (!@exclusive && node.parent() != nil && node.parent().parent() != nil)
260
- cur = node.parent()
261
- while (cur != nil)
262
- #next if (cur.attributes() == nil)
263
- cur.each_attribute{|attribute|
264
- next if (attribute.prefix() != "xml")
265
- next if (attribute.prefix().index("xmlns") == 0)
266
- next if (node.namespace(attribute.prefix()) == attribute.value())
267
- found = true
268
- list.each{|n|
269
- if (n.prefix() == "xml" && n.value() == attritbute.value())
270
- found = true
271
- break
272
- end
273
- }
274
- next if (found)
275
- list.push(attribute)
276
- }
278
+ list.each{|attribute|
279
+ if (attribute != nil)
280
+ if (attribute.name() != "xmlns")
281
+ @res = @res + " " + normalize_string(attribute.to_string(), NODE_TYPE_ATTRIBUTE).gsub("'",'"')
277
282
  end
283
+ # else
284
+ # @res = @res + " " + normalize_string(attribute.name()+'="'+attribute.to_s()+'"', NODE_TYPE_ATTRIBUTE).gsub("'",'"')
285
+ #end
278
286
  end
279
- list.each{|attribute|
280
- if (attribute != nil)
281
- if (attribute.name() != "xmlns")
282
- @res = @res + " " + normalize_string(attribute.to_string(), NODE_TYPE_ATTRIBUTE).gsub("'",'"')
283
- end
284
- # else
285
- # @res = @res + " " + normalize_string(attribute.name()+'="'+attribute.to_s()+'"', NODE_TYPE_ATTRIBUTE).gsub("'",'"')
286
- #end
287
- end
288
- }
289
- end
290
-
291
- def is_namespace_node(namespace_uri)
292
- return (namespace_uri == "http://www.w3.org/2000/xmlns/")
287
+ }
288
+ end
289
+
290
+ def is_namespace_node(namespace_uri)
291
+ return (namespace_uri == "http://www.w3.org/2000/xmlns/")
292
+ end
293
+
294
+ def is_namespace_rendered(prefix, uri)
295
+ is_empty_ns = prefix == nil && uri == nil
296
+ if (is_empty_ns)
297
+ start = 0
298
+ else
299
+ start = @prevVisibleNamespacesStart
293
300
  end
294
-
295
- def is_namespace_rendered(prefix, uri)
296
- is_empty_ns = prefix == nil && uri == nil
297
- if (is_empty_ns)
298
- start = 0
299
- else
300
- start = @prevVisibleNamespacesStart
301
+ @visibleNamespaces.each{|ns|
302
+ if (ns.prefix() == "xmlns:"+prefix.to_s() && ns.uri() == uri)
303
+ return true
301
304
  end
302
- @visibleNamespaces.each{|ns|
303
- if (ns.prefix() == "xmlns:"+prefix.to_s() && ns.uri() == uri)
304
- return true
305
- end
306
- }
307
- return is_empty_ns
308
- #(@visibleNamespaces.size()-1).downto(start) {|i|
309
- # ns = @visibleNamespaces[i]
310
- # return true if (ns.prefix() == "xmlns:"+prefix.to_s() && ns.uri() == uri)
311
- # #p = ns.prefix() if (ns.prefix().index("xmlns") == 0)
312
- # #return ns.uri() == uri if (p == prefix)
313
- #}
314
- #return is_empty_ns
315
- end
316
-
317
- def is_node_visible(node)
318
- return true if (@xnl.size() == 0)
319
- @xnl.each{|element|
320
- return true if (element == node)
321
- }
322
- return false
323
- end
324
-
325
- def normalize_string(input, type)
326
- sb = ""
327
- return input
328
- end
329
- #input.each_byte{|b|
330
- # if (b ==60 && (type == NODE_TYPE_ATTRIBUTE || is_text_node(type)))
331
- # sb = sb + "&lt;"
332
- # elsif (b == 62 && is_text_node(type))
333
- # sb = sb + "&gt;"
334
- # elsif (b == 38 && (is_text_node(type) || is_text_node(type))) #Ampersand
335
- # sb = sb + "&amp;"
336
- # elsif (b == 34 && is_text_node(type)) #Quote
337
- # sb = sb + "&quot;"
338
- # elsif (b == 9 && is_text_node(type)) #Tabulator
339
- # sb = sb + "&#x9;"
340
- # elsif (b == 11 && is_text_node(type)) #CR
341
- # sb = sb + "&#xA;"
342
- # elsif (b == 13 && (type == NODE_TYPE_ATTRIBUTE || (is_text_node(type) && type != NODE_TYPE_WHITESPACE) || type == NODE_TYPE_COMMENT || type == NODE_TYPE_PI))
343
- # sb = sb + "&#xD;"
344
- # elsif (b == 13)
345
- # next
346
- # else
347
- # sb = sb.concat(b)
348
- # end
305
+ }
306
+ return is_empty_ns
307
+ #(@visibleNamespaces.size()-1).downto(start) {|i|
308
+ # ns = @visibleNamespaces[i]
309
+ # return true if (ns.prefix() == "xmlns:"+prefix.to_s() && ns.uri() == uri)
310
+ # #p = ns.prefix() if (ns.prefix().index("xmlns") == 0)
311
+ # #return ns.uri() == uri if (p == prefix)
349
312
  #}
350
- #sb
351
- #end
352
-
353
- def write_text_node(node, visible)
354
- if (visible)
355
- @res = @res + normalize_string(node.value(), node.node_type())
356
- end
357
- end
358
-
359
- def white_text?(text)
360
- return true if ((text.strip() == "") || (text.strip() == nil))
361
- return false
362
- end
363
-
364
- def is_namespace_decl(attribute)
365
- #return true if (attribute.name() == "xmlns")
366
- return true if (attribute.prefix().index("xmlns") == 0)
367
- return false
368
- end
369
-
370
- def is_text_node(type)
371
- return true if (type == NODE_TYPE_TEXT || type == NODE_TYPE_CDATA || type == NODE_TYPE_WHITESPACE)
372
- return false
373
- end
374
-
375
- def remove_whitespace(string)
376
- new_string = ""
377
- in_white = false
378
- string.each_byte{|b|
379
- #if (in_white && b == 32)
380
- #else
381
- if !(in_white && b == 32)
382
- new_string = new_string + b.chr()
383
- end
384
- if (b == 62) #>
385
- in_white = true
386
- end
387
- if (b == 60) #<
388
- in_white = false
389
- end
390
- }
391
- new_string
313
+ #return is_empty_ns
314
+ end
315
+
316
+ def is_node_visible(node)
317
+ return true if (@xnl.size() == 0)
318
+ @xnl.each{|element|
319
+ return true if (element == node)
320
+ }
321
+ return false
322
+ end
323
+
324
+ def normalize_string(input, type)
325
+ sb = ""
326
+ return input
327
+ end
328
+ #input.each_byte{|b|
329
+ # if (b ==60 && (type == NODE_TYPE_ATTRIBUTE || is_text_node(type)))
330
+ # sb = sb + "&lt;"
331
+ # elsif (b == 62 && is_text_node(type))
332
+ # sb = sb + "&gt;"
333
+ # elsif (b == 38 && (is_text_node(type) || is_text_node(type))) #Ampersand
334
+ # sb = sb + "&amp;"
335
+ # elsif (b == 34 && is_text_node(type)) #Quote
336
+ # sb = sb + "&quot;"
337
+ # elsif (b == 9 && is_text_node(type)) #Tabulator
338
+ # sb = sb + "&#x9;"
339
+ # elsif (b == 11 && is_text_node(type)) #CR
340
+ # sb = sb + "&#xA;"
341
+ # elsif (b == 13 && (type == NODE_TYPE_ATTRIBUTE || (is_text_node(type) && type != NODE_TYPE_WHITESPACE) || type == NODE_TYPE_COMMENT || type == NODE_TYPE_PI))
342
+ # sb = sb + "&#xD;"
343
+ # elsif (b == 13)
344
+ # next
345
+ # else
346
+ # sb = sb.concat(b)
347
+ # end
348
+ #}
349
+ #sb
350
+ #end
351
+
352
+ def write_text_node(node, visible)
353
+ if (visible)
354
+ @res = @res + normalize_string(node.value(), node.node_type())
392
355
  end
393
356
  end
394
357
 
358
+ def white_text?(text)
359
+ return true if ((text.strip() == "") || (text.strip() == nil))
360
+ return false
361
+ end
362
+
363
+ def is_namespace_decl(attribute)
364
+ #return true if (attribute.name() == "xmlns")
365
+ return true if (attribute.prefix().index("xmlns") == 0)
366
+ return false
367
+ end
368
+
369
+ def is_text_node(type)
370
+ return true if (type == NODE_TYPE_TEXT || type == NODE_TYPE_CDATA || type == NODE_TYPE_WHITESPACE)
371
+ return false
372
+ end
373
+
374
+ def remove_whitespace(string)
375
+ new_string = ""
376
+ in_white = false
377
+ string.each_byte{|b|
378
+ #if (in_white && b == 32)
379
+ #else
380
+ if !(in_white && b == 32)
381
+ new_string = new_string + b.chr()
382
+ end
383
+ if (b == 62) #>
384
+ in_white = true
385
+ end
386
+ if (b == 60) #<
387
+ in_white = false
388
+ end
389
+ }
390
+ new_string
391
+ end
392
+ end
393
+
395
394
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fractalpenguin-googlesso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - FractalPenguin
@@ -18,12 +18,13 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - lib/FractalPenguinGoogleSSO.rb
21
- - lib/processresponse.rb
22
- - lib/xmlcanonicalizer.rb
23
21
  - lib/SamlResponseTemplate.xml
24
22
  - lib/SignatureTemplate.xml
23
+ - lib/processresponse.rb
24
+ - lib/xmlcanonicalizer.rb
25
25
  homepage: https://github.com/Kylerchrdsn/fractalpenguin-googlesso
26
- licenses: []
26
+ licenses:
27
+ - MIT
27
28
  metadata: {}
28
29
  post_install_message:
29
30
  rdoc_options: []
@@ -31,17 +32,17 @@ require_paths:
31
32
  - lib
32
33
  required_ruby_version: !ruby/object:Gem::Requirement
33
34
  requirements:
34
- - - '>='
35
+ - - ">="
35
36
  - !ruby/object:Gem::Version
36
37
  version: '0'
37
38
  required_rubygems_version: !ruby/object:Gem::Requirement
38
39
  requirements:
39
- - - '>='
40
+ - - ">="
40
41
  - !ruby/object:Gem::Version
41
42
  version: '0'
42
43
  requirements: []
43
44
  rubyforge_project:
44
- rubygems_version: 2.0.13
45
+ rubygems_version: 2.4.5
45
46
  signing_key:
46
47
  specification_version: 4
47
48
  summary: Google SSO