authorization_header_parser 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a0d2bce662c12e178c65f990a14c46707b764e1d
4
- data.tar.gz: 0e21e001e47900e9f848bcdc5fc0d4cbb3a71f27
2
+ SHA256:
3
+ metadata.gz: 250103e9c99ee4a6be24cd0f88c6c12232fd351b2f0025954c5ab1092cd9d853
4
+ data.tar.gz: 75ffead6c93f30c5a6c264edc3f40e17d519fd540a356a0896b58327036f7ae0
5
5
  SHA512:
6
- metadata.gz: 222f8060cd448acf936f047d249808fe23620fbf8d01bd4b0107e71d1a006bb5831a4e86a70076fd2c72e54560eac2d318f3cc95452f8a91cc42001fa34fea46
7
- data.tar.gz: 834ddcfd2bb39c40ad8cb213a06b537aa3c5914376e0e46b8b6ca70201f29431dda174a1e92ee60c7b67097346f75e94ba5871f2facf451713eadfa8677742e7
6
+ metadata.gz: 357ae1add710a6b2c32d86baf0e308c417d4a78ea1b3793ae18bb1ffe6e72906e6cfa9002655b0054d020fc5e6e544f78a61bb35b47b07a32f9ec3d31d6151db
7
+ data.tar.gz: 273c99a97f5c3630c2106d53c52262078fd3d749d23edd88513a47ba3435b3ed27f6cdc215f853c5d420c50f52ce8ae86d705ea32089a61b776bab8a306c9386
@@ -0,0 +1,50 @@
1
+ # rcov generated
2
+ coverage
3
+ coverage.data
4
+
5
+ # rdoc generated
6
+ rdoc
7
+
8
+ # yard generated
9
+ doc
10
+ .yardoc
11
+
12
+ # bundler
13
+ .bundle
14
+ Gemfile.lock
15
+
16
+ # jeweler generated
17
+ pkg
18
+
19
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
20
+ #
21
+ # * Create a file at ~/.gitignore
22
+ # * Include files you want ignored
23
+ # * Run: git config --global core.excludesfile ~/.gitignore
24
+ #
25
+ # After doing this, these files will be ignored in all your git projects,
26
+ # saving you from having to 'pollute' every project you touch with them
27
+ #
28
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
29
+ #
30
+ # For MacOS:
31
+ #
32
+ #.DS_Store
33
+
34
+ # For TextMate
35
+ #*.tmproj
36
+ #tmtags
37
+
38
+ # For emacs:
39
+ #*~
40
+ #\#*
41
+ #.\#*
42
+
43
+ # For vim:
44
+ #*.swp
45
+
46
+ # For redcar:
47
+ #.redcar
48
+
49
+ # For rubinius:
50
+ #*.rbc
@@ -0,0 +1,4 @@
1
+ inherit_gem:
2
+ wetransfer_style: ruby/default.yml
3
+ AllCops:
4
+ TargetRubyVersion: 2.1
@@ -0,0 +1,5 @@
1
+ rvm:
2
+ - 2.1.0
3
+ - 2.6.3
4
+ cache: bundler
5
+ sudo: false
data/Gemfile CHANGED
@@ -1,8 +1,3 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- group :development do
4
- gem "rspec", "~> 3"
5
- gem "rdoc", "~> 3.12"
6
- gem "bundler", "~> 1.0"
7
- gem "jeweler", "~> 2.0.1"
8
- end
3
+ gemspec
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # authorization_header_parser
2
2
 
3
+ [![Build Status](https://travis-ci.org/WeTransfer/authorization_header_parser.svg?branch=master)](https://travis-ci.org/WeTransfer/authorization_header_parser)
4
+
3
5
  Parse custom authorization parameters from `Authorization:` HTTP headers into a neat
4
6
  Ruby Hash. Works best in combination with `Rack::Auth::AbstractRequest`
5
7
 
@@ -16,7 +18,7 @@ or for both scheme and params:
16
18
  Works well for token, Digest, OAuth and other schemes using custom authorization parameters.
17
19
 
18
20
  ## Contributing to authorization_header_parser
19
-
21
+
20
22
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
21
23
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
22
24
  * Fork the project.
@@ -27,6 +29,6 @@ Works well for token, Digest, OAuth and other schemes using custom authorization
27
29
 
28
30
  ## Copyright
29
31
 
30
- Copyright (c) 2015 Julik Tarkhanov. See LICENSE.txt for
32
+ Copyright (c) 2019 WeTransfer. See LICENSE.txt for
31
33
  further details.
32
34
 
data/Rakefile CHANGED
@@ -1,52 +1,7 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require_relative 'lib/authorization_header_parser'
15
-
16
- require 'jeweler'
17
- Jeweler::Tasks.new do |gem|
18
- gem.version = AuthorizationHeaderParser::VERSION
19
- gem.name = "authorization_header_parser"
20
- gem.homepage = "http://github.com/julik/authorization_header_parser"
21
- gem.license = "MIT"
22
- gem.description = %Q{Parses parametrized HTTP Authorization headers}
23
- gem.summary = %Q{such as OAuth and Digest}
24
- gem.email = "me@julik.nl"
25
- gem.authors = ["Julik Tarkhanov"]
26
- # dependencies defined in Gemfile
27
- end
28
- Jeweler::RubygemsDotOrgTasks.new
29
-
30
- require 'rspec/core'
1
+ require 'bundler/gem_tasks'
31
2
  require 'rspec/core/rake_task'
32
- RSpec::Core::RakeTask.new(:spec) do |spec|
33
- spec.pattern = FileList['spec/**/*_spec.rb']
34
- end
35
-
36
- desc "Code coverage detail"
37
- task :simplecov do
38
- ENV['COVERAGE'] = "true"
39
- Rake::Task['spec'].execute
40
- end
41
-
42
- task :default => :spec
43
-
44
- require 'rdoc/task'
45
- Rake::RDocTask.new do |rdoc|
46
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
3
+ require 'rubocop/rake_task'
47
4
 
48
- rdoc.rdoc_dir = 'rdoc'
49
- rdoc.title = "authorization_header_parser #{version}"
50
- rdoc.rdoc_files.include('README*')
51
- rdoc.rdoc_files.include('lib/**/*.rb')
52
- end
5
+ RSpec::Core::RakeTask.new(:spec)
6
+ RuboCop::RakeTask.new(:rubocop)
7
+ task default: [:spec, :rubocop]
@@ -0,0 +1,28 @@
1
+ require File.join(File.expand_path('../lib', __FILE__), 'authorization_header_parser')
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "authorization_header_parser"
5
+ s.version = AuthorizationHeaderParser::VERSION
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.require_paths = ["lib"]
9
+ s.authors = ["WeTransfer"]
10
+ s.date = "2015-06-29"
11
+ s.description = "Parses parametrized HTTP Authorization headers"
12
+ s.email = "info@wetransfer.com"
13
+ s.extra_rdoc_files = [
14
+ "LICENSE.txt",
15
+ "README.md"
16
+ ]
17
+ s.files = `git ls-files -z`.split("\x0")
18
+ s.homepage = "http://github.com/wetransfer/authorization_header_parser"
19
+ s.licenses = ["MIT"]
20
+ s.rubygems_version = "2.2.2"
21
+ s.summary = "such as OAuth and Digest"
22
+
23
+ s.specification_version = 4
24
+ s.add_development_dependency 'bundler'
25
+ s.add_development_dependency 'rspec', '~> 3'
26
+ s.add_development_dependency 'rake', '~> 10'
27
+ s.add_development_dependency 'wetransfer_style', '0.6.0'
28
+ end
@@ -1,22 +1,33 @@
1
1
  require 'strscan'
2
2
 
3
-
4
3
  module AuthorizationHeaderParser
5
- VERSION = '1.0.0'
6
- InvalidHeader = Class.new(StandardError)
7
-
4
+ VERSION = '1.1.1'
5
+
6
+ class InvalidHeader < StandardError
7
+ end
8
+
9
+ class ParseError < InvalidHeader
10
+ def initialize(message, scanner)
11
+ str = scanner.string
12
+ from = [(scanner.pos - 5), 0].sort.pop
13
+ upto = [(scanner.pos + 5), str.length].sort.shift
14
+ piece = str[from..upto]
15
+ super "#{message} - at #{scanner.pos} (around #{piece.inspect})"
16
+ end
17
+ end
18
+
8
19
  # Parse a custom scheme + params Authorization header.
9
20
  #
10
- # parse('absurd-auth token="12345"') #=> ['absurd-auth', {'token' => '12345}]
21
+ # parse('absurd-auth token="12345"') #=> ['absurd-auth', {'token' => '12345'}]
11
22
  def parse(value)
12
23
  scanner = StringScanner.new(value)
13
24
  scheme = scanner.scan(NON_WHITESPACE)
14
- raise InvalidHeader.new("Scheme not provided") unless scheme
25
+ raise InvalidHeader, "Scheme not provided" unless scheme
15
26
  scanner.skip(WHITESPACE)
16
-
27
+
17
28
  [scheme.strip, extract_params_from_scanner(scanner)]
18
29
  end
19
-
30
+
20
31
  # Parse Authorization params. Most useful in combination with Rack::Auth::AbstractRequest
21
32
  #
22
33
  # For instance, with 'Authorization: absurd-auth token="12345"':
@@ -26,33 +37,37 @@ module AuthorizationHeaderParser
26
37
  def parse_params(string)
27
38
  extract_params_from_scanner(StringScanner.new(string))
28
39
  end
29
-
40
+
30
41
  extend self
31
-
42
+
32
43
  private
33
-
44
+
34
45
  ANYTHING_BUT_EQ = /[^\s\=]+/
35
46
  EQ = /=/
36
- UNTIL_FWD_SLASH_OR_QUOTE = /[^\\"]+/
47
+ UNTIL_BACKSLASH_OR_QUOTE = /[^\\"]+/
37
48
  ESCAPED_QUOTE = /\\"/
38
49
  QUOTE = /"/
39
50
  WHITESPACE = /\s+/
40
51
  COMMA = /,/
41
52
  NON_WHITESPACE = /[^\s]+/
42
-
53
+
43
54
  # http://codereview.stackexchange.com/questions/41270
44
55
  # http://stackoverflow.com/questions/134936
45
56
  def extract_params_from_scanner(scanner)
46
57
  params = {}
47
- until scanner.eos? do
58
+ until scanner.eos?
48
59
  key = scanner.scan(ANYTHING_BUT_EQ)
49
- raise InvalidHeader, "Expected =, but found none at #{scanner.pos}" unless scanner.scan(EQ)
50
- value_opener = scanner.get_byte
51
- raise InvalidHeader, "Expected opening of a parameter at #{scanner.pos}" unless value_opener
52
- if value_opener == '"' # Quoted value
60
+ raise ParseError.new("Expected =, but found none", scanner) unless scanner.skip(EQ)
61
+
62
+ if scanner.eos? # Last parameter was empty, return
63
+ params[key] = ''
64
+ return params
65
+ end
66
+
67
+ if scanner.skip(QUOTE) # Quoted value
53
68
  buf = ''
54
69
  until scanner.eos?
55
- if scanner.scan(UNTIL_FWD_SLASH_OR_QUOTE)
70
+ if scanner.scan(UNTIL_BACKSLASH_OR_QUOTE)
56
71
  buf << scanner.matched
57
72
  elsif scanner.scan(ESCAPED_QUOTE)
58
73
  buf << '"'
@@ -61,16 +76,14 @@ module AuthorizationHeaderParser
61
76
  break
62
77
  end
63
78
  end
64
- else
65
- scanner.unscan # Bare parameter, backtrack 1 byte
66
- unless bare_value = scanner.scan(/[^,"]+/)
67
- raise InvalidHeader, "Expected a bare parameter value at #{scanner.pos}"
68
- end
79
+ elsif bare_value = scanner.scan(/[^,"]+/) # Bare parameter
69
80
  params[key] = bare_value
81
+ else # Empty parameter
82
+ params[key] = ''
70
83
  end
71
84
  scanner.skip(WHITESPACE)
72
85
  if !scanner.eos? && !scanner.skip(COMMA)
73
- raise InvalidHeader, "Expected end of header or a comma, at #{scanner.pos}"
86
+ raise ParseError.new("Expected end of header or a comma", scanner)
74
87
  end
75
88
  scanner.skip(WHITESPACE)
76
89
  end
@@ -4,68 +4,84 @@ describe "AuthorizationHeaderParser" do
4
4
  context '.parse_params' do
5
5
  it 'parses only the parameter string' do
6
6
  params = AuthorizationHeaderParser.parse_params('foo=bar, baz=bad')
7
- expect(params).to eq({"foo"=>"bar", "baz"=>"bad"})
7
+ expect(params).to eq("foo" => "bar", "baz" => "bad")
8
8
  end
9
9
  end
10
-
10
+
11
11
  context '.parse' do
12
+ it 'parses a simple Token header with empty parameters' do
13
+ header = 'Token foo=, baz='
14
+ parsed = AuthorizationHeaderParser.parse(header)
15
+ scheme, params = parsed
16
+ expect(scheme).to eq('Token')
17
+ expect(params).to eq("foo" => "", "baz" => "")
18
+ end
19
+
20
+ it 'parses a simple Token header with some parameters being empty' do
21
+ header = 'Token foo=, bar="Value", baz='
22
+ parsed = AuthorizationHeaderParser.parse(header)
23
+ scheme, params = parsed
24
+ expect(scheme).to eq('Token')
25
+ expect(params).to eq("foo" => "", "bar" => "Value", "baz" => "")
26
+ end
27
+
12
28
  it 'parses a simple Token header' do
13
29
  header = 'Token foo=bar, baz=bad'
14
30
  parsed = AuthorizationHeaderParser.parse(header)
15
31
  scheme, params = parsed
16
32
  expect(scheme).to eq('Token')
17
- expect(params).to eq({"foo"=>"bar", "baz"=>"bad"})
33
+ expect(params).to eq("foo" => "bar", "baz" => "bad")
18
34
  end
19
-
35
+
20
36
  it 'parses a header with an escaped quote' do
21
- digest_header = 'Custom param="value\"such and such\""'
37
+ digest_header = 'Custom param="value\"such and such\""'
22
38
  parsed = AuthorizationHeaderParser.parse(digest_header)
23
39
  scheme, params = parsed
24
40
  expect(scheme).to eq('Custom')
25
- expect(params).to eq({"param" => 'value"such and such"'})
41
+ expect(params).to eq("param" => 'value"such and such"')
26
42
  end
27
-
43
+
28
44
  it "parses a Digest header" do
29
45
  digest_header = 'Digest qop="chap",
30
46
  realm="testrealm@host.com",
31
47
  username="Foobear",
32
48
  response="6629fae49393a05397450978507c4ef1",
33
49
  cnonce="5ccc069c403ebaf9f0171e9517f40e41"'
34
-
50
+
35
51
  parsed = AuthorizationHeaderParser.parse(digest_header)
36
52
  scheme, params = parsed
37
53
  expect(scheme).to eq('Digest')
38
- expect(params).to eq({
39
- "qop"=>"chap",
40
- "realm"=>"testrealm@host.com",
41
- "username"=>"Foobear",
42
- "response"=>"6629fae49393a05397450978507c4ef1",
43
- "cnonce"=>"5ccc069c403ebaf9f0171e9517f40e41"
44
- })
54
+ expect(params).to eq(
55
+ "qop" => "chap",
56
+ "realm" => "testrealm@host.com",
57
+ "username" => "Foobear",
58
+ "response" => "6629fae49393a05397450978507c4ef1",
59
+ "cnonce" => "5ccc069c403ebaf9f0171e9517f40e41"
60
+ )
45
61
  end
46
-
62
+
47
63
  it 'parses an OAuth header from Twitter documentation' do
48
- twitter_header = 'OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog",
49
- oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
50
- oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
51
- oauth_signature_method="HMAC-SHA1",
52
- oauth_timestamp="1318622958",
53
- oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
64
+ twitter_header = 'OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog",
65
+ oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
66
+ oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
67
+ oauth_signature_method="HMAC-SHA1",
68
+ oauth_timestamp="1318622958",
69
+ oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
54
70
  oauth_version="1.0"'
55
71
  parsed = AuthorizationHeaderParser.parse(twitter_header)
56
72
  scheme, params = parsed
57
73
  expect(scheme).to eq("OAuth")
58
- expect(params).to eq({
59
- "oauth_consumer_key"=>"xvz1evFS4wEEPTGEFPHBog",
60
- "oauth_nonce"=>"kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
61
- "oauth_signature"=>"tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
62
- "oauth_signature_method"=>"HMAC-SHA1",
63
- "oauth_timestamp"=>"1318622958",
64
- "oauth_token"=>"370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
65
- "oauth_version"=>"1.0"
66
- })
74
+ expect(params).to eq(
75
+ "oauth_consumer_key" => "xvz1evFS4wEEPTGEFPHBog",
76
+ "oauth_nonce" => "kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
77
+ "oauth_signature" => "tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
78
+ "oauth_signature_method" => "HMAC-SHA1",
79
+ "oauth_timestamp" => "1318622958",
80
+ "oauth_token" => "370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
81
+ "oauth_version" => "1.0"
82
+ )
67
83
  end
68
-
84
+
69
85
  it 'parses another OAuth params example' do
70
86
  oauth_header = 'OAuth realm="",
71
87
  oauth_nonce="72250409",
@@ -74,40 +90,35 @@ describe "AuthorizationHeaderParser" do
74
90
  oauth_signature_method="HMAC-SHA1",
75
91
  oauth_version="1.0",
76
92
  oauth_signature="IBlWhOm3PuDwaSdxE/Qu4RKPtVE="'
77
-
93
+
78
94
  parsed = AuthorizationHeaderParser.parse(oauth_header)
79
95
  scheme, params = parsed
80
96
  expect(scheme).to eq("OAuth")
81
- expect(params).to eq({
82
- "realm"=>"",
83
- "oauth_nonce" => "72250409",
84
- "oauth_timestamp"=>"1294966759",
85
- "oauth_consumer_key"=>"Dummy",
86
- "oauth_signature_method"=>"HMAC-SHA1",
87
- "oauth_version"=>"1.0",
88
- "oauth_signature"=>"IBlWhOm3PuDwaSdxE/Qu4RKPtVE="
89
- })
97
+ expect(params).to eq(
98
+ "realm" => "",
99
+ "oauth_nonce" => "72250409",
100
+ "oauth_timestamp" => "1294966759",
101
+ "oauth_consumer_key" => "Dummy",
102
+ "oauth_signature_method" => "HMAC-SHA1",
103
+ "oauth_version" => "1.0",
104
+ "oauth_signature" => "IBlWhOm3PuDwaSdxE/Qu4RKPtVE="
105
+ )
90
106
  end
91
107
  end
92
-
108
+
93
109
  context 'with invalid headers' do
94
110
  it 'raises InvalidHeader' do
95
- expect {
96
- AuthorizationHeaderParser.parse_params('foo=')
97
- }.to raise_error(AuthorizationHeaderParser::InvalidHeader, /Expected opening of a parameter/)
98
-
99
111
  expect {
100
112
  AuthorizationHeaderParser.parse_params('foo=bar"')
101
113
  }.to raise_error(AuthorizationHeaderParser::InvalidHeader, /Expected end of header or a comma/)
102
-
114
+
103
115
  expect {
104
116
  AuthorizationHeaderParser.parse_params('FONDBSJDJAHJDHAHUYHJHJBDA')
105
117
  }.to raise_error(AuthorizationHeaderParser::InvalidHeader, /Expected =, but found none/)
106
-
118
+
107
119
  expect {
108
120
  AuthorizationHeaderParser.parse_params('foo="bar"baz"bad" another=123')
109
121
  }.to raise_error(AuthorizationHeaderParser::InvalidHeader, /Expected end of header or a comma/)
110
122
  end
111
123
  end
112
-
113
124
  end
metadata CHANGED
@@ -1,73 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authorization_header_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
- - Julik Tarkhanov
7
+ - WeTransfer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rdoc
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.12'
33
+ version: '3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.12'
40
+ version: '3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.0'
47
+ version: '10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.0'
54
+ version: '10'
55
55
  - !ruby/object:Gem::Dependency
56
- name: jeweler
56
+ name: wetransfer_style
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 2.0.1
61
+ version: 0.6.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 2.0.1
68
+ version: 0.6.0
69
69
  description: Parses parametrized HTTP Authorization headers
70
- email: me@julik.nl
70
+ email: info@wetransfer.com
71
71
  executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files:
@@ -75,15 +75,19 @@ extra_rdoc_files:
75
75
  - README.md
76
76
  files:
77
77
  - ".document"
78
+ - ".gitignore"
78
79
  - ".rspec"
80
+ - ".rubocop.yml"
81
+ - ".travis.yml"
79
82
  - Gemfile
80
83
  - LICENSE.txt
81
84
  - README.md
82
85
  - Rakefile
86
+ - authorization_header_parser.gemspec
83
87
  - lib/authorization_header_parser.rb
84
88
  - spec/authorization_header_parser_spec.rb
85
89
  - spec/spec_helper.rb
86
- homepage: http://github.com/julik/authorization_header_parser
90
+ homepage: http://github.com/wetransfer/authorization_header_parser
87
91
  licenses:
88
92
  - MIT
89
93
  metadata: {}
@@ -102,8 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
106
  - !ruby/object:Gem::Version
103
107
  version: '0'
104
108
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.2.2
109
+ rubygems_version: 3.0.6
107
110
  signing_key:
108
111
  specification_version: 4
109
112
  summary: such as OAuth and Digest