authorization_header_parser 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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