lib/oauthenticator/parse_authorization.rb in oauthenticator-1.3.2 vs lib/oauthenticator/parse_authorization.rb in oauthenticator-1.3.3
- old
+ new
@@ -32,18 +32,18 @@
def parse_authorization(header)
header = header.to_s
scanner = StringScanner.new(header)
auth_parse_error = proc { |message| raise ParseError.new(message, {'Authorization' => [message]}) }
scanner.scan(/OAuth\s*/i) || auth_parse_error.call("Authorization scheme is not OAuth - recieved: #{header}")
- attributes = Hash.new { |h,k| h[k] = [] }
+ attributes = {}
while scanner.scan(/(\w+)="([^"]*)"\s*(,?)\s*/)
key = scanner[1]
value = scanner[2]
comma_follows = !scanner[3].empty?
if !comma_follows && !scanner.eos?
auth_parse_error.call("Could not parse Authorization header: #{header}\naround or after character #{scanner.pos}: #{scanner.rest}")
end
- attributes[unescape(key)] << unescape(value)
+ (attributes[unescape(key)] ||= []) << unescape(value)
end
unless scanner.eos?
auth_parse_error.call("Could not parse Authorization header: #{header}\naround or after character #{scanner.pos}: #{scanner.rest}")
end
duplicates = attributes.reject { |k,v| v.size <= 1 }