link-header-parser 2.0.0 → 4.0.0

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: f27e7cee875b551a9a48c7d37b498eeec2a5dae6a3cd3695dddd5bdb59c3ae5b
4
- data.tar.gz: 59113fb0ff7c0ce6d82150b3143599a995841b114778f1cc63cd7625cb973c59
3
+ metadata.gz: 173d1c05e3a5c2fe7d8e99454249d73ce780cfcc3bb120d7be5145e9b376ea54
4
+ data.tar.gz: a79af8ae39af06d3a4625eab54aa8f51d4574f5789c913d570919c20f877febc
5
5
  SHA512:
6
- metadata.gz: 5db8f753ed8a5562d212368f647cf1eb32e4b23dad387ed06f5d9d6083ec4cd706cfec35fe2116b1d41813599b560b60c7152b5a786eecee3bcbdc319aea5660
7
- data.tar.gz: 77aa58a97d9f87789f03b5206a9878368446675c1b46c4184bd697cd55965811f4d797d2f11b572cf9dbf286a2680af9967feb9ac8a4a81a3090b3f22dcfbc03
6
+ metadata.gz: 48085ca777ca8b2e6d859e2920165d7336cd2b909efbdfcc63aaff1980859d77e8cb6f0455dc61c8b089d143206d435639b49a9aef9a7f151c21ca683e9af07d
7
+ data.tar.gz: 8fbd4c92cced717fc2a41d213209067824288810d14053236e6ca3ee1363c421a89c49be4ac6f34f9cc3736c91108ec58779a2638fca1efcbbf314ae5bbf1c84
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.0.0 / 2022-01-06
4
+
5
+ - Remove Addressable dependency (daedf22)
6
+ - **Breaking change:** Update minimum Ruby version to 2.6 (e2343ed)
7
+ - Migrate to GitHub Actions (509b2c4)
8
+ - Update project Ruby version to 2.6.9 (c39bc66)
9
+
10
+ ## 3.0.0 / 2021-05-22
11
+
12
+ - Add implicit type conversion methods, alias explicit methods, and update specs (d132535)
13
+ - Remove exceptions module (249d77c)
14
+ - Use implicit conversions instead of type checking in methods (628c01b)
15
+ - Replace Absolutely dependency with Addressable (beb5188)
16
+ - Update project Ruby version to 2.5.9 (4a3941f)
17
+
18
+ ## 2.2.0 / 2021-04-02
19
+
20
+ - Expand supported Ruby versions to include 3.0 (7187878)
21
+
22
+ ## 2.1.0 / 2020-10-07
23
+
24
+ - Update Absolutely dependency to 5.0 (62988c0)
25
+
3
26
  ## 2.0.0 / 2020-05-21
4
27
 
5
28
  - **Breaking changes:** Rewrite gem code (5351010)
data/CONTRIBUTING.md CHANGED
@@ -8,9 +8,9 @@ There are a couple ways you can help improve link-header-parser-ruby:
8
8
 
9
9
  ## Getting Started
10
10
 
11
- link-header-parser-ruby is developed using Ruby 2.5.8 and is additionally tested against Ruby 2.6 and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/link-header-parser-ruby).
11
+ link-header-parser-ruby is developed using Ruby 2.6.9 and is additionally tested against Ruby 2.7, 3.0, and 3.1 using [GitHub Actions](https://github.com/jgarber623/link-header-parser-ruby/actions).
12
12
 
13
- Before making changes to link-header-parser-ruby, you'll want to install Ruby 2.5.8. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm). Once you've installed Ruby 2.5.8 using your method of choice, install the project's gems by running:
13
+ Before making changes to link-header-parser-ruby, you'll want to install Ruby 2.6.9. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm). Once you've installed Ruby 2.6.9 using your method of choice, install the project's gems by running:
14
14
 
15
15
  ```sh
16
16
  bundle install
@@ -22,7 +22,7 @@ bundle install
22
22
  1. Install development dependencies as outlined above.
23
23
  1. Create a feature branch for the code changes you're looking to make: `git checkout -b my-new-feature`.
24
24
  1. _Write some code!_
25
- 1. If your changes would benefit from testing, add the necessary tests and verify everything passes by running `bundle exec rspec`.
25
+ 1. If your changes would benefit from testing, add the necessary tests and verify everything passes by running `bin/ci`.
26
26
  1. Commit your changes: `git commit -am 'Add some new feature or fix some issue'`. _(See [this excellent article](https://chris.beams.io/posts/git-commit/) for tips on writing useful Git commit messages.)_
27
27
  1. Push the branch to your fork: `git push -u origin my-new-feature`.
28
28
  1. Create a new [pull request][pulls] and we'll review your changes.
data/README.md CHANGED
@@ -2,18 +2,17 @@
2
2
 
3
3
  **A Ruby gem for parsing HTTP Link headers.**
4
4
 
5
- [![Gem](https://img.shields.io/gem/v/link-header-parser.svg?style=for-the-badge)](https://rubygems.org/gems/link-header-parser)
6
- [![Downloads](https://img.shields.io/gem/dt/link-header-parser.svg?style=for-the-badge)](https://rubygems.org/gems/link-header-parser)
7
- [![Build](https://img.shields.io/travis/com/jgarber623/link-header-parser-ruby/master.svg?style=for-the-badge)](https://travis-ci.com/jgarber623/link-header-parser-ruby)
8
- [![Dependencies](https://img.shields.io/depfu/jgarber623/link-header-parser-ruby.svg?style=for-the-badge)](https://depfu.com/github/jgarber623/link-header-parser-ruby)
9
- [![Maintainability](https://img.shields.io/codeclimate/maintainability/jgarber623/link-header-parser-ruby.svg?style=for-the-badge)](https://codeclimate.com/github/jgarber623/link-header-parser-ruby)
10
- [![Coverage](https://img.shields.io/codeclimate/c/jgarber623/link-header-parser-ruby.svg?style=for-the-badge)](https://codeclimate.com/github/jgarber623/link-header-parser-ruby/code)
5
+ [![Gem](https://img.shields.io/gem/v/link-header-parser.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/link-header-parser)
6
+ [![Downloads](https://img.shields.io/gem/dt/link-header-parser.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/link-header-parser)
7
+ [![Build](https://img.shields.io/github/workflow/status/jgarber623/link-header-parser-ruby/CI?logo=github&style=for-the-badge)](https://github.com/jgarber623/link-header-parser-ruby/actions/workflows/ci.yml)
8
+ [![Maintainability](https://img.shields.io/codeclimate/maintainability/jgarber623/link-header-parser-ruby.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/jgarber623/link-header-parser-ruby)
9
+ [![Coverage](https://img.shields.io/codeclimate/c/jgarber623/link-header-parser-ruby.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/jgarber623/link-header-parser-ruby/code)
11
10
 
12
11
  ## Getting Started
13
12
 
14
- Before installing and using link-header-parser-ruby, you'll want to have [Ruby](https://www.ruby-lang.org) 2.5 (or newer) installed. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm).
13
+ Before installing and using link-header-parser-ruby, you'll want to have [Ruby](https://www.ruby-lang.org) 2.6 (or newer) installed. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm).
15
14
 
16
- link-header-parser-ruby is developed using Ruby 2.5.8 and is additionally tested against Ruby 2.6 and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/link-header-parser-ruby).
15
+ link-header-parser-ruby is developed using Ruby 2.6.9 and is additionally tested against Ruby 2.7, 3.0, and 3.1 using [GitHub Actions](https://github.com/jgarber623/link-header-parser-ruby/actions).
17
16
 
18
17
  ## Installation
19
18
 
@@ -43,13 +42,13 @@ response = HTTP.get('https://sixtwothree.org')
43
42
 
44
43
  link_headers = response.headers.get('link')
45
44
 
46
- collection = LinkHeaderParser.parse(link_headers, base: response.uri.to_s)
45
+ collection = LinkHeaderParser.parse(link_headers, base: response.uri)
47
46
  ```
48
47
 
49
48
  The `parse` method accepts two arguments:
50
49
 
51
50
  1. an `Array` of strings representing HTTP Link headers (e.g. `['</>; rel="home"', '</chapters/1>; anchor="#copyright"; rel="license"']`)
52
- 1. a `String` representing the absolute URL of the resource providing the HTTP Link headers
51
+ 1. a `String` (or any `String`-like object) representing the absolute URL of the resource providing the HTTP Link headers
53
52
 
54
53
  In the example above, `collection` is an instance of `LinkHeadersCollection` which includes Ruby's [`Enumerable`](https://ruby-doc.org/core/Enumerable.html) mixin. This mixin allows for use of common methods like `each`, `first`/`last`, and `map`.
55
54
 
@@ -138,14 +137,14 @@ link_header.relation_types
138
137
  link_header = LinkHeaderParser.parse('</posts.rss>; rel="alternate"; hreflang="en-US"; title="sixtwothree.org: Posts"; type="application/rss+xml"', base: 'https://sixtwothree.org').first
139
138
 
140
139
  link_header.link_parameters
141
- #=> [#<LinkHeaderParser::LinkHeaderParameter:0x3fdea54716ac name: "rel", value: "alternate">, #<LinkHeaderParser::LinkHeaderParameter:0x3fdea5471684 name: "hreflang", value: "en-US">, #<LinkHeaderParser::LinkHeaderParameter:0x3fdea5471670 name: "title", value: "sixtwothree.org: Posts">, #<LinkHeaderParser::LinkHeaderParameter:0x3fdea547165c name: "type", value: "application/rss+xml">]
140
+ #=> [#<LinkHeaderParser::LinkHeaderParameter name: "rel", value: "alternate">, #<LinkHeaderParser::LinkHeaderParameter name: "hreflang", value: "en-US">, #<LinkHeaderParser::LinkHeaderParameter name: "title", value: "sixtwothree.org: Posts">, #<LinkHeaderParser::LinkHeaderParameter name: "type", value: "application/rss+xml">]
142
141
  ```
143
142
 
144
143
  Note that the `Array` returned by the `link_parameters` method may include multiple `LinkHeaderParameter`s with the same name depending on the provided Link header. Certain methods on `LinkHeader` will return values from the first occurrence of a parameter name (e.g. `link_header.relations_string`) in accordance with [RFC-8288](https://tools.ietf.org/html/rfc8288).
145
144
 
146
145
  ## Contributing
147
146
 
148
- Interested in helping improve link-header-parser-ruby? Awesome! Your help is greatly appreciated. See [CONTRIBUTING.md](https://github.com/jgarber623/link-header-parser-ruby/blob/master/CONTRIBUTING.md) for details.
147
+ Interested in helping improve link-header-parser-ruby? Awesome! Your help is greatly appreciated. See [CONTRIBUTING.md](https://github.com/jgarber623/link-header-parser-ruby/blob/main/CONTRIBUTING.md) for details.
149
148
 
150
149
  ## Acknowledgments
151
150
 
@@ -1,13 +1,12 @@
1
- require 'forwardable'
1
+ # frozen_string_literal: true
2
2
 
3
- require 'absolutely'
3
+ require 'forwardable'
4
4
 
5
- require 'link_header_parser/version'
6
- require 'link_header_parser/exceptions'
5
+ require_relative 'link_header_parser/version'
7
6
 
8
- require 'link_header_parser/link_header'
9
- require 'link_header_parser/link_header_parameter'
10
- require 'link_header_parser/link_headers_collection'
7
+ require_relative 'link_header_parser/link_header'
8
+ require_relative 'link_header_parser/link_header_parameter'
9
+ require_relative 'link_header_parser/link_headers_collection'
11
10
 
12
11
  module LinkHeaderParser
13
12
  # Parse an array of HTTP Link headers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LinkHeaderParser
2
4
  class LinkHeader
3
5
  FIELD_VALUE_REGEXP_PATTERN = /^\s*<\s*(?<target_string>[^>]+)\s*>\s*(?<parameters>;\s*.*)$/.freeze
@@ -11,11 +13,8 @@ module LinkHeaderParser
11
13
  # @param field_value [String]
12
14
  # @param base [String]
13
15
  def initialize(field_value, base:)
14
- raise ArgumentError, "field_value must be a String (given #{field_value.class})" unless field_value.is_a?(String)
15
- raise ArgumentError, "base must be a String (given #{base.class})" unless base.is_a?(String)
16
-
17
- @field_value = field_value
18
- @base = base
16
+ @field_value = field_value.to_str
17
+ @base = base.to_str
19
18
  end
20
19
 
21
20
  # The context URL for this Link header extracted from field_value (or target URL if no context URL is present)
@@ -31,11 +30,14 @@ module LinkHeaderParser
31
30
  #
32
31
  # @return [String]
33
32
  def context_uri
34
- @context_uri ||= Absolutely.to_abs(base: target_uri, relative: context_string)
33
+ @context_uri ||= URI.join(target_uri, context_string).normalize.to_s
35
34
  end
36
35
 
36
+ # @return [String]
37
37
  def inspect
38
- format(%(#<#{self.class.name}:%#0x target_uri: #{target_uri.inspect}, relation_types: #{relation_types.inspect}>), object_id)
38
+ "#<#{self.class.name}:#{format('%#0x', object_id)} " \
39
+ "target_uri: #{target_uri.inspect}, " \
40
+ "relation_types: #{relation_types.inspect}>"
39
41
  end
40
42
 
41
43
  # The parsed parameters for this Link header extracted from field_value
@@ -43,7 +45,9 @@ module LinkHeaderParser
43
45
  #
44
46
  # @return [Array<LinkHeaderParser::LinkHeaderParameter>]
45
47
  def link_parameters
46
- @link_parameters ||= field_value_match_data[:parameters].scan(PARAMETERS_REGEXP_PATTERN).flatten.map { |parameter| LinkHeaderParameter.new(parameter) }
48
+ @link_parameters ||= field_value_match_data[:parameters].scan(PARAMETERS_REGEXP_PATTERN)
49
+ .flatten
50
+ .map { |parameter| LinkHeaderParameter.new(parameter) }
47
51
  end
48
52
 
49
53
  # The relations_string value returned as an Array
@@ -59,7 +63,7 @@ module LinkHeaderParser
59
63
  #
60
64
  # @return [String]
61
65
  def relations_string
62
- @relations_string ||= grouped_link_parameters[:rel]&.first || ''
66
+ @relations_string ||= grouped_link_parameters[:rel]&.first.to_s
63
67
  end
64
68
 
65
69
  # The target URL for this Link header extracted from field_value
@@ -75,11 +79,11 @@ module LinkHeaderParser
75
79
  #
76
80
  # @return [String]
77
81
  def target_uri
78
- @target_uri ||= Absolutely.to_abs(base: base, relative: target_string)
82
+ @target_uri ||= URI.join(base, target_string).normalize.to_s
79
83
  end
80
84
 
81
85
  # @return [Hash{Symbol => String, Array, Hash{Symbol => Array}}]
82
- def to_h
86
+ def to_hash
83
87
  {
84
88
  target_string: target_string,
85
89
  target_uri: target_uri,
@@ -91,6 +95,8 @@ module LinkHeaderParser
91
95
  }
92
96
  end
93
97
 
98
+ alias to_h to_hash
99
+
94
100
  private
95
101
 
96
102
  attr_reader :base
@@ -100,7 +106,10 @@ module LinkHeaderParser
100
106
  end
101
107
 
102
108
  def grouped_link_parameters
103
- @grouped_link_parameters ||= link_parameters.map(&:to_a).group_by(&:shift).transform_keys(&:to_sym).transform_values(&:flatten)
109
+ @grouped_link_parameters ||= link_parameters.map(&:to_a)
110
+ .group_by(&:shift)
111
+ .transform_keys(&:to_sym)
112
+ .transform_values(&:flatten)
104
113
  end
105
114
  end
106
115
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LinkHeaderParser
2
4
  class LinkHeaderParameter
3
5
  PARAMETER_REGEXP_PATTERN = /^(?<name>.+?)(?:="?(?<value>.*?)"?)?$/.freeze
@@ -6,11 +8,14 @@ module LinkHeaderParser
6
8
 
7
9
  # @param parameter [String]
8
10
  def initialize(parameter)
9
- @parameter = parameter
11
+ @parameter = parameter.to_str
10
12
  end
11
13
 
14
+ # @return [String]
12
15
  def inspect
13
- format(%(#<#{self.class.name}:%#0x name: #{name.inspect}, value: #{value.inspect}>), object_id)
16
+ "#<#{self.class.name}:#{format('%#0x', object_id)} " \
17
+ "name: #{name.inspect}, " \
18
+ "value: #{value.inspect}>"
14
19
  end
15
20
 
16
21
  # @see https://tools.ietf.org/html/rfc8288#appendix-B.3 (Appendix B.3.2.9)
@@ -22,16 +27,18 @@ module LinkHeaderParser
22
27
 
23
28
  # @see https://tools.ietf.org/html/rfc8288#appendix-B.3 (Appendix B.3.2.8)
24
29
  #
25
- # @return [String, nil]
30
+ # @return [String]
26
31
  def value
27
- @value ||= parameter_match_data[:value] || ''
32
+ @value ||= parameter_match_data[:value].to_s
28
33
  end
29
34
 
30
35
  # @return [Array<String>]
31
- def to_a
36
+ def to_ary
32
37
  [name, value]
33
38
  end
34
39
 
40
+ alias to_a to_ary
41
+
35
42
  private
36
43
 
37
44
  def parameter_match_data
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LinkHeaderParser
2
4
  class LinkHeadersCollection
3
5
  extend Forwardable
@@ -11,21 +13,24 @@ module LinkHeaderParser
11
13
  # @param headers [Array<String>]
12
14
  # @param base [String]
13
15
  def initialize(*headers, base:)
14
- @headers = headers.flatten
15
- @base = base
16
+ @headers = headers.to_ary.flatten.map(&:to_str)
17
+ @base = base.to_str
16
18
 
17
- discrete_headers.each { |header| push(LinkHeader.new(header, base: base)) }
19
+ distinct_headers.each { |header| push(LinkHeader.new(header, base: base)) }
18
20
  end
19
21
 
20
22
  # @return [Hash{Symbol => Array<LinkHeaderParser::LinkHeader>}]
21
23
  def group_by_relation_type
22
- relation_types.map do |relation_type|
23
- [relation_type, find_all { |member| member.relation_types.include?(relation_type) }]
24
- end.to_h.transform_keys(&:to_sym)
24
+ relation_types.to_h do |relation_type|
25
+ [relation_type.to_sym, select_by_relation_type(relation_type)]
26
+ end
25
27
  end
26
28
 
29
+ # @return [String]
27
30
  def inspect
28
- format(%(#<#{self.class.name}:%#0x headers: #{headers.inspect}, relation_types: #{relation_types.inspect}>), object_id)
31
+ "#<#{self.class.name}:#{format('%#0x', object_id)} " \
32
+ "headers: #{headers.inspect}, " \
33
+ "relation_types: #{relation_types.inspect}>"
29
34
  end
30
35
 
31
36
  # @return [Array<String>]
@@ -37,12 +42,16 @@ module LinkHeaderParser
37
42
 
38
43
  attr_reader :base
39
44
 
40
- def discrete_headers
41
- @discrete_headers ||= headers.flat_map { |header| header.split(/,(?=[\s|<])/) }.map(&:strip)
45
+ def distinct_headers
46
+ @distinct_headers ||= headers.flat_map { |header| header.split(/,(?=[\s|<])/) }.map(&:strip)
42
47
  end
43
48
 
44
49
  def members
45
50
  @members ||= []
46
51
  end
52
+
53
+ def select_by_relation_type(relation_type)
54
+ select { |member| member.relation_types.include?(relation_type) }
55
+ end
47
56
  end
48
57
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LinkHeaderParser
2
- VERSION = '2.0.0'.freeze
4
+ VERSION = '4.0.0'
3
5
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/link_header_parser/version'
2
4
 
3
5
  Gem::Specification.new do |spec|
4
- spec.required_ruby_version = Gem::Requirement.new('>= 2.5', '< 2.8')
6
+ spec.required_ruby_version = '>= 2.6', '< 4'
5
7
 
6
8
  spec.name = 'link-header-parser'
7
9
  spec.version = LinkHeaderParser::VERSION
@@ -13,14 +15,15 @@ Gem::Specification.new do |spec|
13
15
  spec.homepage = 'https://github.com/jgarber623/link-header-parser-ruby'
14
16
  spec.license = 'MIT'
15
17
 
16
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|spec)/}) }
18
- end
18
+ spec.files = Dir['lib/**/*'].reject { |f| File.directory?(f) }
19
+ spec.files += %w[LICENSE CHANGELOG.md CONTRIBUTING.md README.md]
20
+ spec.files += %w[link-header-parser.gemspec]
19
21
 
20
22
  spec.require_paths = ['lib']
21
23
 
22
- spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/issues"
23
- spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md"
24
-
25
- spec.add_runtime_dependency 'absolutely', '~> 4.0'
24
+ spec.metadata = {
25
+ 'bug_tracker_uri' => "#{spec.homepage}/issues",
26
+ 'changelog_uri' => "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md",
27
+ 'rubygems_mfa_required' => 'true'
28
+ }
26
29
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: link-header-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Garber
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-21 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: absolutely
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '4.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '4.0'
11
+ date: 2022-01-06 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: Parse HTTP Link headers.
28
14
  email:
29
15
  - jason@sixtwothree.org
@@ -31,23 +17,11 @@ executables: []
31
17
  extensions: []
32
18
  extra_rdoc_files: []
33
19
  files:
34
- - ".editorconfig"
35
- - ".gitignore"
36
- - ".reek.yml"
37
- - ".rspec"
38
- - ".rubocop"
39
- - ".rubocop.yml"
40
- - ".ruby-version"
41
- - ".simplecov"
42
- - ".travis.yml"
43
20
  - CHANGELOG.md
44
21
  - CONTRIBUTING.md
45
- - Gemfile
46
22
  - LICENSE
47
23
  - README.md
48
- - Rakefile
49
24
  - lib/link-header-parser.rb
50
- - lib/link_header_parser/exceptions.rb
51
25
  - lib/link_header_parser/link_header.rb
52
26
  - lib/link_header_parser/link_header_parameter.rb
53
27
  - lib/link_header_parser/link_headers_collection.rb
@@ -58,7 +32,8 @@ licenses:
58
32
  - MIT
59
33
  metadata:
60
34
  bug_tracker_uri: https://github.com/jgarber623/link-header-parser-ruby/issues
61
- changelog_uri: https://github.com/jgarber623/link-header-parser-ruby/blob/v2.0.0/CHANGELOG.md
35
+ changelog_uri: https://github.com/jgarber623/link-header-parser-ruby/blob/v4.0.0/CHANGELOG.md
36
+ rubygems_mfa_required: 'true'
62
37
  post_install_message:
63
38
  rdoc_options: []
64
39
  require_paths:
@@ -67,17 +42,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
42
  requirements:
68
43
  - - ">="
69
44
  - !ruby/object:Gem::Version
70
- version: '2.5'
45
+ version: '2.6'
71
46
  - - "<"
72
47
  - !ruby/object:Gem::Version
73
- version: '2.8'
48
+ version: '4'
74
49
  required_rubygems_version: !ruby/object:Gem::Requirement
75
50
  requirements:
76
51
  - - ">="
77
52
  - !ruby/object:Gem::Version
78
53
  version: '0'
79
54
  requirements: []
80
- rubygems_version: 3.1.2
55
+ rubygems_version: 3.2.33
81
56
  signing_key:
82
57
  specification_version: 4
83
58
  summary: Parse HTTP Link headers.
data/.editorconfig DELETED
@@ -1,14 +0,0 @@
1
- # EditorConfig is awesome: https://EditorConfig.org
2
- root = true
3
-
4
- [*]
5
- charset = utf-8
6
- end_of_line = lf
7
- insert_final_newline = true
8
- indent_size = 2
9
- indent_style = space
10
- trim_trailing_whitespace = true
11
-
12
- [*.md]
13
- indent_size = 4
14
- indent_style = tab
data/.gitignore DELETED
@@ -1,34 +0,0 @@
1
- *.gem
2
- *.rbc
3
- /.config
4
- /coverage/
5
- /InstalledFiles
6
- /pkg/
7
- /spec/reports/
8
- /spec/examples.txt
9
- /test/tmp/
10
- /test/version_tmp/
11
- /tmp/
12
-
13
- # Used by dotenv library to load environment variables.
14
- # .env
15
-
16
- # Documentation cache and generated files:
17
- /.yardoc/
18
- /_yardoc/
19
- /doc/
20
- /rdoc/
21
-
22
- # Environment normalization:
23
- /.bundle/
24
- /vendor/bundle
25
- /lib/bundler/man/
26
-
27
- # for a library or gem, you might want to ignore these files since the code is
28
- # intended to run in multiple environments; otherwise, check them in:
29
- Gemfile.lock
30
- # .ruby-version
31
- # .ruby-gemset
32
-
33
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
- .rvmrc
data/.reek.yml DELETED
@@ -1,9 +0,0 @@
1
- detectors:
2
- IrresponsibleModule:
3
- enabled: false
4
- NestedIterators:
5
- exclude:
6
- - LinkHeaderParser::LinkHeadersCollection#group_by_relation_type
7
-
8
- exclude_paths:
9
- - vendor/
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --order random
2
- --require spec_helper
data/.rubocop DELETED
@@ -1,3 +0,0 @@
1
- --display-style-guide
2
- --extra-details
3
- --parallel
data/.rubocop.yml DELETED
@@ -1,26 +0,0 @@
1
- require:
2
- - rubocop-performance
3
- - rubocop-rspec
4
-
5
- AllCops:
6
- NewCops: enable
7
-
8
- Layout/LineLength:
9
- Enabled: false
10
-
11
- Metrics/ModuleLength:
12
- Exclude:
13
- - spec/support/**/*.rb
14
-
15
- Naming/FileName:
16
- Exclude:
17
- - lib/link-header-parser.rb
18
-
19
- Style/Documentation:
20
- Enabled: false
21
-
22
- Style/FrozenStringLiteralComment:
23
- Enabled: false
24
-
25
- Style/SymbolArray:
26
- Enabled: false
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.5.8
data/.simplecov DELETED
@@ -1,13 +0,0 @@
1
- require 'simplecov-console'
2
-
3
- formatters = [SimpleCov::Formatter::HTMLFormatter]
4
-
5
- # rubocop:disable Style/IfUnlessModifier
6
- if RSpec.configuration.files_to_run.length > 1
7
- formatters << SimpleCov::Formatter::Console
8
- end
9
- # rubocop:enable Style/IfUnlessModifier
10
-
11
- SimpleCov.start do
12
- formatter SimpleCov::Formatter::MultiFormatter.new(formatters)
13
- end
data/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- dist: bionic
2
- language: ruby
3
- rvm:
4
- - 2.5
5
- - 2.6
6
- - 2.7
7
- cache: bundler
8
- before_script:
9
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
10
- - chmod +x ./cc-test-reporter
11
- - ./cc-test-reporter before-build
12
- after_script:
13
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
14
- notifications:
15
- email: false
16
- slack:
17
- rooms:
18
- secure: ZV5G4LIK9OXRXkXt3iC53QD1uVWmThzETj8CallRoZgGfUKfzzMjx2V7NqJLwkmFkaK9y/flt/bRVMVqkH60GY0Gq6YeS9zuKEWJYesC6+aWQa6scKaxgewLdfYth3ijMS91XbPKECbFj0LOs1WPTfqYDsdPpOnH2RBWUO6lx8ID4DZtvi7kMhcY2+K21Q3/3gW9y919KHSCppM24EsyIbkAlFce5RjXn5WmfyTOTyTrxbHyByFr3SSTGdyO3KK0Fa4hhKNC2pa5WmlLHvZ/c5P7MYf1Eo+Rji5I0QY3pcGOIvbK0xBBnXnGI6Zfp088evElGpw8qgUdkR03QbxjTYANdN6mlk9DvnHqPWjI6OalF3SA7PP9mYjKVb2THDPqWOAvqYdMrrLylduWfdCzpxk4Z13DwF6rYSRgz3juKeKx80rhcAFmptLAC3uzQxgSgKoj9xZbbcYqhh/JQL9lNBZYJyLO5M0fOzrEDbLyNrWFYzUgKYgxRAOLWhJ8V2FlN3oR2cXXcf6vmlpPYfoCA0a8Ig82Htapan0JEhNEU6sS1ctdS7NegccEB9P0V5hUDy3AooaqCy8gFYE3TENYI1vwrevo5vqtNffR1PXTsliGe/gIIeFET6H2IJ+HYG9DefMHwYIR97enMFe50PauNGqdHS9kCoUV59r1PDOBJuU=
data/Gemfile DELETED
@@ -1,14 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in link-header-parser.gemspec
4
- gemspec
5
-
6
- gem 'pry-byebug', '~> 3.9'
7
- gem 'rake', '~> 13.0'
8
- gem 'reek', '~> 6.0'
9
- gem 'rspec', '~> 3.9'
10
- gem 'rubocop', '~> 0.83.0'
11
- gem 'rubocop-performance', '~> 1.5'
12
- gem 'rubocop-rspec', '~> 1.38'
13
- gem 'simplecov', '~> 0.18.5'
14
- gem 'simplecov-console', '~> 0.7.2'
data/Rakefile DELETED
@@ -1,18 +0,0 @@
1
- require 'bundler/gem_tasks'
2
-
3
- require 'reek/rake/task'
4
- require 'rspec/core/rake_task'
5
- require 'rubocop/rake_task'
6
-
7
- Reek::Rake::Task.new do |task|
8
- task.fail_on_error = false
9
- task.source_files = FileList['**/*.rb'].exclude('vendor/**/*.rb')
10
- end
11
-
12
- RSpec::Core::RakeTask.new
13
-
14
- RuboCop::RakeTask.new do |task|
15
- task.fail_on_error = false
16
- end
17
-
18
- task default: [:rubocop, :reek, :spec]
@@ -1,5 +0,0 @@
1
- module LinkHeaderParser
2
- class LinkHeaderParserError < StandardError; end
3
-
4
- class ArgumentError < LinkHeaderParserError; end
5
- end