webmention-verification 3.0.0 → 6.0.0

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
2
  SHA256:
3
- metadata.gz: 68a408b3f4b87517a6e11e188bc99c63d6eebbb40578a590a199550fe7014b87
4
- data.tar.gz: 73abb9d6dda65e8d7dbda04a984fd9374db2334b9d45a653453553c7f121f978
3
+ metadata.gz: 3d920d91622406f373a8b74d0169383d3d847a6e534da19ecaf6a230078c1bcf
4
+ data.tar.gz: dc29ab3a43d77d48e6b6852a3fe884ab7a1af8e7ba0a63d36ac61207168f92a5
5
5
  SHA512:
6
- metadata.gz: 43a6a1b80371c4cc2cdf9430e335733694f3e9ad9e93f1856a19048988b55c77b175786ad7a43c26fb5c497d367dd561fbf5d1f73ab696b065b1711258ff40c4
7
- data.tar.gz: 4fe2a26b715e7cf50692e77a1c8319af395bcacbbeaddf26476c05badb8b135f6356972f38c07752c4f46b834b30fb8e0f57585855d4f2b15803e527f9981479
6
+ metadata.gz: 8d0efb2c62c2d8b1e854e1251f7f5552731352e8864599b87694e08b223088c8e8c891be1622e34a87775ba371cd990c4b9601092582b33fc9010cc585ef8820
7
+ data.tar.gz: 2ef8ae0f3bae0825d2cae1fb24ae890095c6855b6ab2fc65ed822fb8ab4c531b82a91f49004aba0e307bdc02ae20c65b6679cfc56705231f020b8de75c4b7850
data/CHANGELOG.md CHANGED
@@ -1,6 +1,30 @@
1
1
  # Changelog
2
2
 
3
- ## 3.0.0 / unreleased
3
+ ## 6.0.0 / 2022-05-03
4
+
5
+ - Move/rename BaseVerifier to Verifier class (6965e98)
6
+ - Remove addressable dependency (38a004e)
7
+ - Raise Webmention::Verification::SSLError on SSL errors (be9d922)
8
+ - Update ~~Addressable and~~ Nokogiri dependency constraints (822b7ae)
9
+ - **Breaking change:** Update minimum supported Ruby to 2.6 (07a7c5e)
10
+ - Update development Ruby version to 2.6.10 (d67d583)
11
+ - Remove Reek (b10b648)
12
+
13
+ ## 5.0.0 / 2021-06-08
14
+
15
+ - Add `Webmention::Verification::Client#inspect` method (361c437)
16
+ - Update [HTTP](https://github.com/httprb/http) gem constraint to ~> 5.0 (4063764)
17
+ - Simplify exception handling (3f8f12c)
18
+ - Rename base `WebmentionVerificationError` class to `Error` (2b12338)
19
+ - Add support for Ruby 3.0 (05baf08)
20
+ - Update development Ruby version to 2.5.9 (821a488)
21
+
22
+ ## 4.0.0 / 2020-08-23
23
+
24
+ - **Breaking Change:** Update minimum supported Ruby version to 2.5 (096012e)
25
+ - Update development Ruby version to 2.5.8 (3b3f38e)
26
+
27
+ ## 3.0.0 / 2020-05-14
4
28
 
5
29
  - **Breaking Change:** Remove `Webmention::Verification.client` convenience method (af575d7)
6
30
  - **Breaking Change:** Remove `HttpRequest` class (112f9d3)
data/CONTRIBUTING.md CHANGED
@@ -8,9 +8,9 @@ There are a couple ways you can help improve webmention-verification-ruby:
8
8
 
9
9
  ## Getting Started
10
10
 
11
- webmention-verification-ruby is developed using Ruby 2.4.10 and is additionally tested against Ruby 2.5, 2.6, and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/webmention-verification-ruby).
11
+ webmention-verification-ruby is developed using Ruby 2.6.10 and is additionally tested against Ruby 2.7, 3.0, and 3.1 using [GitHub Actions](https://github.com/jgarber623/webmention-verification-ruby/actions).
12
12
 
13
- Before making changes to webmention-verification-ruby, you'll want to install Ruby 2.4.10. 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.4.10 using your method of choice, install the project's gems by running:
13
+ Before making changes to webmention-verification-ruby, you'll want to install Ruby 2.6.10. 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.10 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,23 +2,22 @@
2
2
 
3
3
  **A Ruby gem for verifying a received [webmention](https://indieweb.org/Webmention).**
4
4
 
5
- [![Gem](https://img.shields.io/gem/v/webmention-verification.svg?style=for-the-badge)](https://rubygems.org/gems/webmention-verification)
6
- [![Downloads](https://img.shields.io/gem/dt/webmention-verification.svg?style=for-the-badge)](https://rubygems.org/gems/webmention-verification)
7
- [![Build](https://img.shields.io/travis/com/jgarber623/webmention-verification-ruby/master.svg?style=for-the-badge)](https://travis-ci.com/jgarber623/webmention-verification-ruby)
8
- [![Dependencies](https://img.shields.io/depfu/jgarber623/webmention-verification-ruby.svg?style=for-the-badge)](https://depfu.com/github/jgarber623/webmention-verification-ruby)
9
- [![Maintainability](https://img.shields.io/codeclimate/maintainability/jgarber623/webmention-verification-ruby.svg?style=for-the-badge)](https://codeclimate.com/github/jgarber623/webmention-verification-ruby)
10
- [![Coverage](https://img.shields.io/codeclimate/c/jgarber623/webmention-verification-ruby.svg?style=for-the-badge)](https://codeclimate.com/github/jgarber623/webmention-verification-ruby/code)
5
+ [![Gem](https://img.shields.io/gem/v/webmention-verification.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/webmention-verification)
6
+ [![Downloads](https://img.shields.io/gem/dt/webmention-verification.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/webmention-verification)
7
+ [![Build](https://img.shields.io/github/workflow/status/jgarber623/webmention-verification-ruby/CI?logo=github&style=for-the-badge)](https://github.com/jgarber623/webmention-verification-ruby/actions/workflows/ci.yml)
8
+ [![Maintainability](https://img.shields.io/codeclimate/maintainability/jgarber623/webmention-verification-ruby.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/jgarber623/webmention-verification-ruby)
9
+ [![Coverage](https://img.shields.io/codeclimate/c/jgarber623/webmention-verification-ruby.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/jgarber623/webmention-verification-ruby/code)
11
10
 
12
11
  ## Key Features
13
12
 
14
13
  - Compliant with [Section 3.2.2](https://www.w3.org/TR/webmention/#webmention-verification) of [the W3C's Webmention Recommendation](https://www.w3.org/TR/webmention/).
15
- - Supports Ruby 2.4 and newer.
14
+ - Supports Ruby 2.6 and newer.
16
15
 
17
16
  ## Getting Started
18
17
 
19
- Before installing and using webmention-verification-ruby, you'll want to have [Ruby](https://www.ruby-lang.org) 2.4 (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).
18
+ Before installing and using webmention-verification-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).
20
19
 
21
- webmention-verification-ruby is developed using Ruby 2.4.10 and is additionally tested against Ruby 2.5, 2.6, and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/webmention-verification-ruby).
20
+ webmention-verification-ruby is developed using Ruby 2.6.10 and is additionally tested against Ruby 2.7, 3.0, and 3.1 using [GitHub Actions](https://github.com/jgarber623/webmention-verification-ruby/actions).
22
21
 
23
22
  ## Installation
24
23
 
@@ -70,8 +69,8 @@ client = Webmention::Verification::Client.new(source, target)
70
69
  puts client.source # => 'https://source.example.com/post/100'
71
70
  puts client.target # => 'https://target.example.com/post/100'
72
71
 
73
- puts client.source_uri # => #<Addressable::URI>
74
- puts client.target_uri # => #<Addressable::URI>
72
+ puts client.source_uri # => #<HTTP::URI>
73
+ puts client.target_uri # => #<HTTP::URI>
75
74
 
76
75
  puts client.response # => #<HTTP::Response>
77
76
 
@@ -139,7 +138,7 @@ In the example above, `verifier.results` will return an array of HTML elements t
139
138
 
140
139
  ### Exception Handling
141
140
 
142
- There are several exceptions that may be raised by webmention-verification-ruby's underlying dependencies. These errors are raised as subclasses of `WebmentionVerificationError` (which itself is a subclass of `StandardError`).
141
+ There are several exceptions that may be raised by webmention-verification-ruby's underlying dependencies. These errors are raised as subclasses of `Webmention::Verification::Error` (which itself is a subclass of `StandardError`).
143
142
 
144
143
  From [sporkmonger/addressable](https://github.com/sporkmonger/addressable):
145
144
 
@@ -147,15 +146,17 @@ From [sporkmonger/addressable](https://github.com/sporkmonger/addressable):
147
146
 
148
147
  From [httprb/http](https://github.com/httprb/http):
149
148
 
150
- - `Webmention::Verification::ConnectionError`
151
- - `Webmention::Verification::TimeoutError`
152
- - `Webmention::Verification::TooManyRedirectsError`
149
+ - `Webmention::Verification::HttpError`
150
+
151
+ From the Ruby Standard Library's [`OpenSSL::SSL::SSLError`](https://ruby-doc.org/stdlib-2.6.10/libdoc/openssl/rdoc/OpenSSL/SSL/SSLError.html):
152
+
153
+ - `Webmention::Verification::SSLError`
153
154
 
154
155
  webmention-verification-ruby will also raise a `Webmention::Verification::UnsupportedMimeTypeError` when encountering an `HTTP::Response` instance with an unsupported MIME type.
155
156
 
156
157
  ## Contributing
157
158
 
158
- Interested in helping improve webmention-verification-ruby? Awesome! Your help is greatly appreciated. See [CONTRIBUTING.md](https://github.com/jgarber623/webmention-verification-ruby/blob/master/CONTRIBUTING.md) for details.
159
+ Interested in helping improve webmention-verification-ruby? Awesome! Your help is greatly appreciated. See [CONTRIBUTING.md](https://github.com/jgarber623/webmention-verification-ruby/blob/main/CONTRIBUTING.md) for details.
159
160
 
160
161
  ## Acknowledgments
161
162
 
@@ -1,13 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webmention
2
4
  module Verification
3
5
  class Client
4
6
  HTTP_CLIENT_HEADERS = {
5
- accept: '*/*',
7
+ accept: '*/*',
6
8
  user_agent: 'Webmention Verification Client (https://rubygems.org/gems/webmention-verification)'
7
9
  }.freeze
8
10
 
11
+ @registered_verifiers = {}
12
+
13
+ class << self
14
+ attr_reader :registered_verifiers
15
+ end
16
+
9
17
  attr_reader :source, :target
10
18
 
19
+ def self.register_verifier(klass)
20
+ klass.mime_types.each { |mime_type| @registered_verifiers[mime_type] = klass }
21
+ end
22
+
11
23
  # Create a client used to determine whether or not source URI links to target URI.
12
24
  #
13
25
  # @example
@@ -24,55 +36,65 @@ module Webmention
24
36
  # @param options [Hash]
25
37
  # @option options [Boolean] :strict (true)
26
38
  def initialize(source, target, **options)
27
- raise ArgumentError, "source must be a String (given #{source.class.name})" unless source.is_a?(String)
28
- raise ArgumentError, "target must be a String (given #{target.class.name})" unless target.is_a?(String)
29
-
30
- @source = source
31
- @target = target
39
+ @source = source.to_str
40
+ @target = target.to_str
32
41
  @options = options
33
42
 
34
- raise ArgumentError, 'source must be an absolute URI (e.g. https://example.com/post/100)' unless source_uri.absolute?
35
- raise ArgumentError, 'target must be an absolute URI (e.g. https://example.com/post/100)' unless target_uri.absolute?
43
+ message = 'must be an absolute URI (e.g. https://example.com/post/100)'
44
+
45
+ raise ArgumentError, "source #{message}" unless absolute?(source_uri)
46
+ raise ArgumentError, "target #{message}" unless absolute?(target_uri)
47
+ end
48
+
49
+ # @return [String]
50
+ def inspect
51
+ "#<#{self.class.name}:#{format('%#0x', object_id)} " \
52
+ "source: #{source.inspect} " \
53
+ "target: #{target.inspect} " \
54
+ "options: #{@options.inspect}>"
36
55
  end
37
56
 
38
57
  # @return [HTTP::Response]
39
- # @raise [Webmention::Verification::ConnectionError, Webmention::Verification::TimeoutError, Webmention::Verification::TooManyRedirectsError]
58
+ # @raise [Webmention::Verification::HttpError, Webmention::Verification::SSLError]
40
59
  def response
41
60
  @response ||= HTTP.follow.headers(HTTP_CLIENT_HEADERS).timeout(connect: 10, read: 10).get(source_uri)
42
- rescue HTTP::ConnectionError,
43
- HTTP::TimeoutError,
44
- HTTP::Redirector::TooManyRedirectsError => exception
45
- raise Webmention::Verification.const_get(exception.class.name.split('::').last), exception
61
+ rescue HTTP::Error => e
62
+ raise HttpError, e
63
+ rescue OpenSSL::SSL::SSLError => e
64
+ raise SSLError, e
46
65
  end
47
66
 
48
- # @return [Addressable::URI]
67
+ # @return [HTTP::URI]
49
68
  # @raise [Webmention::Verification::InvalidURIError]
50
69
  def source_uri
51
- @source_uri ||= Addressable::URI.parse(source)
52
- rescue Addressable::URI::InvalidURIError => exception
53
- raise InvalidURIError, exception
70
+ @source_uri ||= HTTP::URI.parse(source)
71
+ rescue Addressable::URI::InvalidURIError => e
72
+ raise InvalidURIError, e
54
73
  end
55
74
 
56
- # @return [Addressable::URI]
75
+ # @return [HTTP::URI]
57
76
  # @raise [Webmention::Verification::InvalidURIError]
58
77
  def target_uri
59
- @target_uri ||= Addressable::URI.parse(target)
60
- rescue Addressable::URI::InvalidURIError => exception
61
- raise InvalidURIError, exception
78
+ @target_uri ||= HTTP::URI.parse(target)
79
+ rescue Addressable::URI::InvalidURIError => e
80
+ raise InvalidURIError, e
62
81
  end
63
82
 
64
83
  # @return [Boolean]
65
84
  # @raise [Webmention::Verification::UnsupportedMimeTypeError]
66
85
  def verified?
67
- raise UnsupportedMimeTypeError, "Unsupported MIME Type: #{response.mime_type}" unless verifier_for_mime_type
68
-
69
- verifier_for_mime_type.new(response, target, @options).verified?
86
+ self.class
87
+ .registered_verifiers[response.mime_type]
88
+ .new(response, target, **@options)
89
+ .verified?
90
+ rescue NoMethodError
91
+ raise UnsupportedMimeTypeError, "Unsupported MIME Type: #{response.mime_type}"
70
92
  end
71
93
 
72
94
  private
73
95
 
74
- def verifier_for_mime_type
75
- @verifier_for_mime_type ||= Verifiers.registered[response.mime_type]
96
+ def absolute?(uri)
97
+ uri.http? || uri.https?
76
98
  end
77
99
  end
78
100
  end
@@ -1,19 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webmention
2
4
  module Verification
3
- class BaseVerifier
5
+ class Verifier
4
6
  class << self
5
7
  attr_reader :mime_types
6
8
  end
7
9
 
8
10
  def initialize(response, target, **options)
9
- raise ArgumentError, "response must be an HTTP::Response (given #{response.class.name})" unless response.is_a?(HTTP::Response)
10
- raise ArgumentError, "target must be a String (given #{target.class.name})" unless target.is_a?(String)
11
-
12
11
  @response = response
13
- @target = target
12
+ @target = target.to_str
14
13
  @options = options
15
-
16
- raise UnsupportedMimeTypeError, "Unsupported MIME Type: #{response.mime_type}" unless self.class.mime_types.include?(response.mime_type)
17
14
  end
18
15
 
19
16
  def results
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webmention
2
4
  module Verification
3
5
  module Verifiers
4
- class HtmlVerifier < BaseVerifier
6
+ class HtmlVerifier < Verifier
5
7
  @mime_types = ['text/html']
6
8
 
7
- Verifiers.register(self)
9
+ Client.register_verifier(self)
8
10
 
9
11
  HTML_ATTRIBUTE_MAP = {
10
- cite: %w[blockquote del ins q],
11
- data: %w[object],
12
- href: %w[a area],
13
- poster: %w[video],
14
- src: %w[audio embed img source track video],
15
- srcset: %w[img source]
12
+ 'cite' => %w[blockquote del ins q],
13
+ 'data' => %w[object],
14
+ 'href' => %w[a area],
15
+ 'poster' => %w[video],
16
+ 'src' => %w[audio embed img source track video],
17
+ 'srcset' => %w[img source]
16
18
  }.freeze
17
19
 
18
20
  private
@@ -26,7 +28,7 @@ module Webmention
26
28
  end
27
29
 
28
30
  def search_doc(attribute, elements)
29
- regexp = attribute == :srcset ? srcset_attribute_regexp : target_regexp
31
+ regexp = attribute == 'srcset' ? srcset_attribute_regexp : target_regexp
30
32
 
31
33
  doc.css(*elements.map { |element| "#{element}[#{attribute}]" }).find_all do |node|
32
34
  node[attribute].match?(regexp)
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webmention
2
4
  module Verification
3
5
  module Verifiers
4
- class JsonVerifier < BaseVerifier
6
+ class JsonVerifier < Verifier
5
7
  @mime_types = ['application/json']
6
8
 
7
- Verifiers.register(self)
9
+ Client.register_verifier(self)
8
10
 
9
11
  private
10
12
 
@@ -28,7 +30,6 @@ module Webmention
28
30
 
29
31
  private
30
32
 
31
- # :reek:TooManyStatements { max_statements: 6 }
32
33
  def build_results(comparator, object, matches = [])
33
34
  return matches unless object.is_a?(Enumerable)
34
35
 
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webmention
2
4
  module Verification
3
5
  module Verifiers
4
- class PlaintextVerifier < BaseVerifier
6
+ class PlaintextVerifier < Verifier
5
7
  @mime_types = ['text/plain']
6
8
 
7
- Verifiers.register(self)
9
+ Client.register_verifier(self)
8
10
 
9
11
  private
10
12
 
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webmention
2
4
  module Verification
3
- VERSION = '3.0.0'.freeze
5
+ VERSION = '6.0.0'
4
6
  end
5
7
  end
@@ -1,21 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
 
3
- require 'addressable/uri'
4
5
  require 'http'
5
6
  require 'nokogiri'
6
7
 
7
- require 'webmention/verification/version'
8
- require 'webmention/verification/exceptions'
8
+ require_relative 'verification/version'
9
9
 
10
- require 'webmention/verification/client'
11
- require 'webmention/verification/verifiers'
12
- require 'webmention/verification/verifiers/base_verifier'
13
- require 'webmention/verification/verifiers/html_verifier'
14
- require 'webmention/verification/verifiers/json_verifier'
15
- require 'webmention/verification/verifiers/plaintext_verifier'
10
+ require_relative 'verification/client'
11
+ require_relative 'verification/verifier'
12
+ require_relative 'verification/verifiers/html_verifier'
13
+ require_relative 'verification/verifiers/json_verifier'
14
+ require_relative 'verification/verifiers/plaintext_verifier'
16
15
 
17
16
  module Webmention
18
17
  module Verification
18
+ class Error < StandardError; end
19
+ class ArgumentError < Error; end
20
+ class HttpError < Error; end
21
+ class InvalidURIError < Error; end
22
+ class SSLError < Error; end
23
+ class UnsupportedMimeTypeError < Error; end
24
+
19
25
  # Determine whether or not source URI links to target URI.
20
26
  #
21
27
  # @example
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/webmention/verification/version'
2
4
 
3
5
  Gem::Specification.new do |spec|
4
- spec.required_ruby_version = Gem::Requirement.new('>= 2.4', '< 2.8')
6
+ spec.required_ruby_version = '>= 2.6', '< 4'
5
7
 
6
8
  spec.name = 'webmention-verification'
7
9
  spec.version = Webmention::Verification::VERSION
@@ -13,16 +15,18 @@ Gem::Specification.new do |spec|
13
15
  spec.homepage = 'https://github.com/jgarber623/webmention-verification-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[webmention-verification.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
+ 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
+ }
24
29
 
25
- spec.add_runtime_dependency 'addressable', '~> 2.7'
26
- spec.add_runtime_dependency 'http', '~> 4.4'
27
- spec.add_runtime_dependency 'nokogiri', '~> 1.10'
30
+ spec.add_runtime_dependency 'http', '~> 5.0'
31
+ spec.add_runtime_dependency 'nokogiri', '~> 1.13'
28
32
  end
metadata CHANGED
@@ -1,57 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webmention-verification
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 6.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-14 00:00:00.000000000 Z
11
+ date: 2022-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: addressable
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.7'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.7'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: http
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '4.4'
19
+ version: '5.0'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '4.4'
26
+ version: '5.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: nokogiri
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '1.10'
33
+ version: '1.13'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '1.10'
40
+ version: '1.13'
55
41
  description: Verify a received webmention.
56
42
  email:
57
43
  - jason@sixtwothree.org
@@ -59,26 +45,13 @@ executables: []
59
45
  extensions: []
60
46
  extra_rdoc_files: []
61
47
  files:
62
- - ".editorconfig"
63
- - ".gitignore"
64
- - ".reek.yml"
65
- - ".rspec"
66
- - ".rubocop"
67
- - ".rubocop.yml"
68
- - ".ruby-version"
69
- - ".simplecov"
70
- - ".travis.yml"
71
48
  - CHANGELOG.md
72
49
  - CONTRIBUTING.md
73
- - Gemfile
74
50
  - LICENSE
75
51
  - README.md
76
- - Rakefile
77
52
  - lib/webmention/verification.rb
78
53
  - lib/webmention/verification/client.rb
79
- - lib/webmention/verification/exceptions.rb
80
- - lib/webmention/verification/verifiers.rb
81
- - lib/webmention/verification/verifiers/base_verifier.rb
54
+ - lib/webmention/verification/verifier.rb
82
55
  - lib/webmention/verification/verifiers/html_verifier.rb
83
56
  - lib/webmention/verification/verifiers/json_verifier.rb
84
57
  - lib/webmention/verification/verifiers/plaintext_verifier.rb
@@ -89,7 +62,8 @@ licenses:
89
62
  - MIT
90
63
  metadata:
91
64
  bug_tracker_uri: https://github.com/jgarber623/webmention-verification-ruby/issues
92
- changelog_uri: https://github.com/jgarber623/webmention-verification-ruby/blob/v3.0.0/CHANGELOG.md
65
+ changelog_uri: https://github.com/jgarber623/webmention-verification-ruby/blob/v6.0.0/CHANGELOG.md
66
+ rubygems_mfa_required: 'true'
93
67
  post_install_message:
94
68
  rdoc_options: []
95
69
  require_paths:
@@ -98,17 +72,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
72
  requirements:
99
73
  - - ">="
100
74
  - !ruby/object:Gem::Version
101
- version: '2.4'
75
+ version: '2.6'
102
76
  - - "<"
103
77
  - !ruby/object:Gem::Version
104
- version: '2.8'
78
+ version: '4'
105
79
  required_rubygems_version: !ruby/object:Gem::Requirement
106
80
  requirements:
107
81
  - - ">="
108
82
  - !ruby/object:Gem::Version
109
83
  version: '0'
110
84
  requirements: []
111
- rubygems_version: 3.1.3
85
+ rubygems_version: 3.3.12
112
86
  signing_key:
113
87
  specification_version: 4
114
88
  summary: Verify a received webmention.
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,8 +0,0 @@
1
- detectors:
2
- DuplicateMethodCall:
3
- max_calls: 3
4
- IrresponsibleModule:
5
- enabled: false
6
-
7
- exclude_paths:
8
- - 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,31 +0,0 @@
1
- require:
2
- - rubocop-performance
3
- - rubocop-rspec
4
-
5
- AllCops:
6
- NewCops: enable
7
-
8
- Layout/HashAlignment:
9
- EnforcedColonStyle: table
10
-
11
- Layout/LineLength:
12
- Enabled: false
13
-
14
- Metrics/BlockLength:
15
- Exclude:
16
- - spec/**/*.rb
17
-
18
- Naming/RescuedExceptionsVariableName:
19
- PreferredName: exception
20
-
21
- RSpec/NestedGroups:
22
- Max: 4
23
-
24
- Style/Documentation:
25
- Enabled: false
26
-
27
- Style/FrozenStringLiteralComment:
28
- Enabled: false
29
-
30
- Style/SymbolArray:
31
- Enabled: false
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.4.10
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,19 +0,0 @@
1
- dist: bionic
2
- language: ruby
3
- rvm:
4
- - 2.4
5
- - 2.5
6
- - 2.6
7
- - 2.7
8
- cache: bundler
9
- before_script:
10
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
11
- - chmod +x ./cc-test-reporter
12
- - ./cc-test-reporter before-build
13
- after_script:
14
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
15
- notifications:
16
- email: false
17
- slack:
18
- rooms:
19
- secure: sZ7DfokMwpZOjZ1jHD4RF58PtNGu+knqrv194+WLmfqV+MVPU38L04EGP1c/Kj7rIOtTQnbkDC10TjJNfl+OcRbUKYT19SBN3OqJJbAe5H46nhvNCfISKG54fEpbEMTcOsljSLcKB6FR3o/RiJUorY2BwS3aMCsf8NDhm08Nnxub5abpFvpgiXCfGSRklxt/dfuJmHB0kt3B8EEH3UzuAeaJoFOiV5RYnCUG0z5GXgHeZqZBs5sxmsmQhrDh5o/Yr0FSd9vcHDLD8EgArw//KyV10cF84NSEWtvPpFCcTnMpcfIuzkN/vgLoIbgYbyhczktCXiySHZDOzYBsCngzLN6DjD+5SdQgrrvtUF/Qsi9JUc6ij1EVHhcZjis7x6kGGtPL35nsM3D0KYwTXzlDIfj/RybQpLCaLL78lrkTiL2OnR1CfKXPwS58+sv0raUJOlWJP50WIL6Fe3J4L+3NWNVfpHdU2SV1cP1/UIs+Pwn4LUOwhSUn+rGsG1UKB/ZDezUMLes9PNclOmDVs8GgT7Lkn2N43mIqVQOyeHrUAVvWiI6M8xOTiAbNGP9sjOj4yJzhOwOToP5Id3ts9GvMoayHd8d8cyECQ9dotNh3VlX73p+Yjkz6rEvo/bsXfzx8gmsl0QQ6P7b4afFRwm1GC+nIofm6BNUS6cfg0xPrmMs=
data/Gemfile DELETED
@@ -1,15 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in webmention-verification.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.39'
13
- gem 'simplecov', '~> 0.18.5'
14
- gem 'simplecov-console', '~> 0.7.2'
15
- gem 'webmock', '~> 3.8'
data/Rakefile DELETED
@@ -1,17 +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
- end
10
-
11
- RSpec::Core::RakeTask.new
12
-
13
- RuboCop::RakeTask.new do |task|
14
- task.fail_on_error = false
15
- end
16
-
17
- task default: [:rubocop, :reek, :spec]
@@ -1,17 +0,0 @@
1
- module Webmention
2
- module Verification
3
- class WebmentionVerificationError < StandardError; end
4
-
5
- class ArgumentError < WebmentionVerificationError; end
6
-
7
- class ConnectionError < WebmentionVerificationError; end
8
-
9
- class InvalidURIError < WebmentionVerificationError; end
10
-
11
- class TimeoutError < WebmentionVerificationError; end
12
-
13
- class TooManyRedirectsError < WebmentionVerificationError; end
14
-
15
- class UnsupportedMimeTypeError < WebmentionVerificationError; end
16
- end
17
- end
@@ -1,13 +0,0 @@
1
- module Webmention
2
- module Verification
3
- module Verifiers
4
- def self.register(klass)
5
- klass.mime_types.each { |mime_type| registered[mime_type] = klass }
6
- end
7
-
8
- def self.registered
9
- @registered ||= {}
10
- end
11
- end
12
- end
13
- end