indieweb-endpoints 4.0.0 → 7.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: 0c45996ba696d87124c8c764fce951197377fccfa3bf84d30ed702b3a27df610
4
- data.tar.gz: 562c474fa0079dfc5d6cbd8286e1a8c5cb169d1f54ede4404bfab2cec854a0bf
3
+ metadata.gz: 151e40ea1ac993997ee70da6c2f997609fb1311f33ab4f10d9090d76a555c3ec
4
+ data.tar.gz: 73547ed72b54f2c2b954bc89df1b697bd22fbc02ea59104b6dc841b7ec9ab6ab
5
5
  SHA512:
6
- metadata.gz: 4417010c2a25d2bb07f8e59f63cd3aa31149aaa5dda33391fba11b7ef1d90d1acb2cd8e642dcf38086a6016027159914941d8dd69fb7f9beae7fe30b6b1cc2db
7
- data.tar.gz: 43da9e43bb391e7e2ecf999d1bb21dd3776c005037a746230d65066c67dad68883f1397fa2e46c812daec21bd80df006e24620a4608e06774787d08705b81981
6
+ metadata.gz: 34e13013f71ae9d4ea89fbf1ba2a40619579023203a95a72b30c552b80ce3442e13d4eceeef4eaeceed074f3e9e39300a0b45c42e50a16c072a72f9f863b8809
7
+ data.tar.gz: 2f3c6b0e7267e69096f348210bf087b171c2d4acb64577bcc1a9440b0367655c85c62c23d837f054984389b4b484e39daab085db4112bd2f5777b3ce0cd33534
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 7.0.0 / 2022-01-06
4
+
5
+ - Update runtime dependency versions (5c9430f)
6
+ - **Breaking change:** Update development Ruby version to 2.6.9 and minimum Ruby version to 2.6 (ed17ab1 and 7e4a621)
7
+ - Migrate to GitHub Actions from Travis CI (c019756)
8
+ - Add `rubygems_mfa_required` to gemspec metadata (1f0a40f)
9
+
10
+ ## 6.1.0 / 2021-05-25
11
+
12
+ - Add support for Ruby 3.0 (3394252)
13
+
14
+ ## 6.0.0 / 2021-05-25
15
+
16
+ - Refactor parsers (e22e0af)
17
+ - Simplify exception handling (65361ee)
18
+ - Update http dependency to 5.0 (44f2d23)
19
+ - **Breaking change:** Favor Addressable::URI.join over Absolutely (0bc5049)
20
+ - Update development Ruby version to 2.5.9 (3439cce)
21
+
22
+ ## 5.0.0 / 2020-11-11
23
+
24
+ - Update absolutely and link-header-parser dependencies (064696e)
25
+
3
26
  ## 4.0.0 / 2020-07-21
4
27
 
5
28
  - **Breaking change:** Return a Hash of endpoints instead of an OpenStruct (15dc387)
data/CONTRIBUTING.md CHANGED
@@ -8,9 +8,9 @@ There are a couple ways you can help improve indieweb-endpoints-ruby:
8
8
 
9
9
  ## Getting Started
10
10
 
11
- indieweb-endpoints-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/indieweb/indieweb-endpoints-ruby).
11
+ indieweb-endpoints-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/indieweb/indieweb-endpoints-ruby/actions).
12
12
 
13
- Before making changes to indieweb-endpoints-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 indieweb-endpoints-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,23 +2,23 @@
2
2
 
3
3
  **A Ruby gem for discovering a URL's [IndieAuth](https://indieweb.org/IndieAuth), [Micropub](https://indieweb.org/Micropub), [Microsub](https://indieweb.org/Microsub), and [Webmention](https://indieweb.org/Webmention) endpoints.**
4
4
 
5
- [![Gem](https://img.shields.io/gem/v/indieweb-endpoints.svg?style=for-the-badge)](https://rubygems.org/gems/indieweb-endpoints)
6
- [![Downloads](https://img.shields.io/gem/dt/indieweb-endpoints.svg?style=for-the-badge)](https://rubygems.org/gems/indieweb-endpoints)
7
- [![Build](https://img.shields.io/travis/com/indieweb/indieweb-endpoints-ruby/master.svg?style=for-the-badge)](https://travis-ci.com/indieweb/indieweb-endpoints-ruby)
8
- [![Maintainability](https://img.shields.io/codeclimate/maintainability/indieweb/indieweb-endpoints-ruby.svg?style=for-the-badge)](https://codeclimate.com/github/indieweb/indieweb-endpoints-ruby)
9
- [![Coverage](https://img.shields.io/codeclimate/c/indieweb/indieweb-endpoints-ruby.svg?style=for-the-badge)](https://codeclimate.com/github/indieweb/indieweb-endpoints-ruby/code)
5
+ [![Gem](https://img.shields.io/gem/v/indieweb-endpoints.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/indieweb-endpoints)
6
+ [![Downloads](https://img.shields.io/gem/dt/indieweb-endpoints.svg?logo=rubygems&style=for-the-badge)](https://rubygems.org/gems/indieweb-endpoints)
7
+ [![Build](https://img.shields.io/github/workflow/status/indieweb/indieweb-endpoints-ruby/CI?logo=github&style=for-the-badge)](https://github.com/indieweb/indieweb-endpoints-ruby/actions/workflows/ci.yml)
8
+ [![Maintainability](https://img.shields.io/codeclimate/maintainability/indieweb/indieweb-endpoints-ruby.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/indieweb/indieweb-endpoints-ruby)
9
+ [![Coverage](https://img.shields.io/codeclimate/c/indieweb/indieweb-endpoints-ruby.svg?logo=code-climate&style=for-the-badge)](https://codeclimate.com/github/indieweb/indieweb-endpoints-ruby/code)
10
10
 
11
11
  ## Key Features
12
12
 
13
13
  - Compliant with [Section 4.1](https://www.w3.org/TR/indieauth/#discovery-by-clients) and [Section 4.2.2](https://www.w3.org/TR/indieauth/#redirect-url) of [the W3C's IndieAuth Working Group Note](https://www.w3.org/TR/indieauth/), [Section 5.3](https://www.w3.org/TR/micropub/#endpoint-discovery) of [the W3C's Micropub Recommendation](https://www.w3.org/TR/micropub/), and [Section 3.1.2](https://www.w3.org/TR/webmention/#sender-discovers-receiver-webmention-endpoint) of [the W3C's Webmention Recommendation](https://www.w3.org/TR/webmention/).
14
14
  - Passes all Endpoint Discovery tests on [webmention.rocks](https://webmention.rocks).
15
- - Supports Ruby 2.5 and newer.
15
+ - Supports Ruby 2.6 and newer.
16
16
 
17
17
  ## Getting Started
18
18
 
19
- Before installing and using indieweb-endpoints-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).
19
+ Before installing and using indieweb-endpoints-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
20
 
21
- indieweb-endpoints-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/indieweb/indieweb-endpoints-ruby).
21
+ indieweb-endpoints-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/indieweb/indieweb-endpoints-ruby/actions).
22
22
 
23
23
  ## Installation
24
24
 
@@ -70,21 +70,19 @@ client.endpoints
70
70
 
71
71
  ### Exception Handling
72
72
 
73
- There are several exceptions that may be raised by indieweb-endpoints-ruby's underlying dependencies. These errors are raised as subclasses of `IndieWebEndpointsError` (which itself is a subclass of `StandardError`).
73
+ There are several exceptions that may be raised by indieweb-endpoints-ruby's underlying dependencies. These errors are raised as subclasses of `IndieWeb::Endpoints::Error` (which itself is a subclass of `StandardError`).
74
74
 
75
- From [jgarber623/absolutely](https://github.com/jgarber623/absolutely) and [sporkmonger/addressable](https://github.com/sporkmonger/addressable):
75
+ From [sporkmonger/addressable](https://github.com/sporkmonger/addressable):
76
76
 
77
77
  - `IndieWeb::Endpoints::InvalidURIError`
78
78
 
79
79
  From [httprb/http](https://github.com/httprb/http):
80
80
 
81
- - `IndieWeb::Endpoints::ConnectionError`
82
- - `IndieWeb::Endpoints::TimeoutError`
83
- - `IndieWeb::Endpoints::TooManyRedirectsError`
81
+ - `IndieWeb::Endpoints::HttpError`
84
82
 
85
83
  ## Contributing
86
84
 
87
- Interested in helping improve indieweb-endpoints-ruby? Awesome! Your help is greatly appreciated. See [CONTRIBUTING.md](https://github.com/indieweb/indieweb-endpoints-ruby/blob/master/CONTRIBUTING.md) for details.
85
+ Interested in helping improve indieweb-endpoints-ruby? Awesome! Your help is greatly appreciated. See [CONTRIBUTING.md](https://github.com/indieweb/indieweb-endpoints-ruby/blob/main/CONTRIBUTING.md) for details.
88
86
 
89
87
  By contributing to and participating in the development of indieweb-endpoints-ruby, you acknowledge that you have read and agree to the [IndieWeb Code of Conduct](https://indieweb.org/code-of-conduct).
90
88
 
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/indieweb/endpoints/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 = 'indieweb-endpoints'
7
9
  spec.version = IndieWeb::Endpoints::VERSION
@@ -13,18 +15,20 @@ Gem::Specification.new do |spec|
13
15
  spec.homepage = 'https://github.com/indieweb/indieweb-endpoints-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 CODE_OF_CONDUCT.md CONTRIBUTING.md README.md]
20
+ spec.files += %w[indieweb-endpoints.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 'absolutely', '~> 4.0'
26
- spec.add_runtime_dependency 'addressable', '~> 2.7'
27
- spec.add_runtime_dependency 'http', '~> 4.4'
28
- spec.add_runtime_dependency 'link-header-parser', '~> 2.0'
29
- spec.add_runtime_dependency 'nokogiri', '~> 1.10'
30
+ spec.add_runtime_dependency 'addressable', '~> 2.8'
31
+ spec.add_runtime_dependency 'http', '~> 5.0'
32
+ spec.add_runtime_dependency 'link-header-parser', '~> 4.0'
33
+ spec.add_runtime_dependency 'nokogiri', '~> 1.12'
30
34
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  class Client
@@ -12,16 +14,12 @@ module IndieWeb
12
14
  #
13
15
  # @param url [String] an absolute URL
14
16
  def initialize(url)
15
- raise ArgumentError, "url must be a String (given #{url.class})" unless url.is_a?(String)
16
-
17
- @url = url
18
-
19
- raise ArgumentError, "url (#{url}) must be an absolute URL (e.g. https://example.com)" unless uri.absolute? && uri.scheme.match?(/^https?$/)
17
+ @url = url.to_str
20
18
  end
21
19
 
22
20
  # @return [String]
23
21
  def inspect
24
- format(%(#<#{self.class.name}:%#0x url: #{url.inspect}>), object_id)
22
+ "#<#{self.class.name}:#{format('%#0x', object_id)} url: #{url.inspect}>"
25
23
  end
26
24
 
27
25
  # @return [Hash{Symbol => String, Array, nil}]
@@ -34,10 +32,8 @@ module IndieWeb
34
32
  # @return [HTTP::Response]
35
33
  def response
36
34
  @response ||= HTTP.follow(max_hops: 20).headers(HTTP_HEADERS_OPTS).timeout(connect: 5, read: 5).get(uri)
37
- rescue HTTP::ConnectionError,
38
- HTTP::TimeoutError,
39
- HTTP::Redirector::TooManyRedirectsError => exception
40
- raise IndieWeb::Endpoints.const_get(exception.class.name.split('::').last), exception
35
+ rescue HTTP::Error => e
36
+ raise HttpError, e
41
37
  end
42
38
 
43
39
  private
@@ -46,8 +42,8 @@ module IndieWeb
46
42
 
47
43
  def uri
48
44
  @uri ||= Addressable::URI.parse(url)
49
- rescue Addressable::URI::InvalidURIError => exception
50
- raise InvalidURIError, exception
45
+ rescue Addressable::URI::InvalidURIError => e
46
+ raise InvalidURIError, e
51
47
  end
52
48
  end
53
49
  end
@@ -1,15 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
- class IndieWebEndpointsError < StandardError; end
4
-
5
- class ArgumentError < IndieWebEndpointsError; end
6
-
7
- class ConnectionError < IndieWebEndpointsError; end
5
+ class Error < StandardError; end
8
6
 
9
- class InvalidURIError < IndieWebEndpointsError; end
7
+ class ArgumentError < Error; end
10
8
 
11
- class TimeoutError < IndieWebEndpointsError; end
9
+ class HttpError < Error; end
12
10
 
13
- class TooManyRedirectsError < IndieWebEndpointsError; end
11
+ class InvalidURIError < Error; end
14
12
  end
15
13
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -23,17 +25,29 @@ module IndieWeb
23
25
  attr_reader :response
24
26
 
25
27
  def mapped_results
26
- @mapped_results ||= results_from_http_request.map { |endpoint| Absolutely.to_abs(base: response.uri.to_s, relative: endpoint) }.uniq.sort
27
- rescue Absolutely::InvalidURIError => exception
28
- raise InvalidURIError, exception
28
+ @mapped_results ||= results_from_http_request.map { |endpoint| Addressable::URI.join(response.uri, endpoint).to_s }.uniq.sort
29
+ rescue Addressable::URI::InvalidURIError => e
30
+ raise InvalidURIError, e
31
+ end
32
+
33
+ def parsed_response_body
34
+ @parsed_response_body ||= Nokogiri::HTML(response.body.to_s)
35
+ end
36
+
37
+ def parsed_response_headers
38
+ @parsed_response_headers ||= LinkHeaderParser.parse(response.headers.get('link'), base: response.uri)
29
39
  end
30
40
 
31
41
  def results_from_body
32
- @results_from_body ||= Services::ResponseParserService.parse_body(response, self.class.identifier)
42
+ return if response.mime_type != 'text/html'
43
+
44
+ Services::ResponseParserService.parse_body(parsed_response_body, self.class.identifier)
33
45
  end
34
46
 
35
47
  def results_from_headers
36
- @results_from_headers ||= Services::ResponseParserService.parse_headers(response, self.class.identifier)
48
+ return if parsed_response_headers.none?
49
+
50
+ Services::ResponseParserService.parse_headers(parsed_response_headers.group_by_relation_type, self.class.identifier)
37
51
  end
38
52
 
39
53
  def results_from_http_request
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -8,7 +10,7 @@ module IndieWeb
8
10
 
9
11
  # @return [Array<String>, nil]
10
12
  def results
11
- return unless mapped_results.any?
13
+ return if mapped_results.none?
12
14
 
13
15
  mapped_results
14
16
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -9,7 +11,7 @@ module IndieWeb
9
11
  private
10
12
 
11
13
  def results_for_node(node)
12
- Services::ResponseParserService.parse_body(response, self.class.identifier, node)
14
+ Services::ResponseParserService.parse_body(parsed_response_body, self.class.identifier, node)
13
15
  end
14
16
 
15
17
  # https://www.w3.org/TR/webmention/#sender-discovers-receiver-webmention-endpoint
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Parsers
@@ -1,27 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
5
  module Services
4
6
  class ResponseParserService
5
- # @param response [HTTP::Response]
7
+ # @param body [Nokogiri::HTML::Document]
6
8
  # @param identifier [Symbol]
7
9
  # @return [Array<String>]
8
- def self.parse_body(response, identifier, node = 'link')
9
- return unless response.mime_type == 'text/html'
10
-
10
+ def self.parse_body(body, identifier, node = 'link')
11
11
  # Reject endpoints that contain a fragment identifier
12
- Nokogiri::HTML(response.body.to_s).css(%(#{node}[rel~="#{identifier}"][href]:not([href*="#"]))).map { |element| element['href'] }
12
+ body.css(%(#{node}[rel~="#{identifier}"][href]:not([href*="#"]))).map { |element| element['href'] }
13
13
  end
14
14
 
15
- # @param response [HTTP::Response]
15
+ # @param headers [Hash{Symbol => Array<LinkHeaderParser::LinkHeader}]
16
16
  # @param identifier [Symbol]
17
17
  # @return [Array<String>, nil]
18
- def self.parse_headers(response, identifier)
19
- headers = LinkHeaderParser.parse(response.headers.get('link'), base: response.uri.to_s).group_by_relation_type[identifier]
20
-
21
- return unless headers
18
+ def self.parse_headers(headers, identifier)
19
+ return unless headers.key?(identifier)
22
20
 
23
21
  # Reject endpoints that contain a fragment identifier
24
- headers.reject { |header| Addressable::URI.parse(header.target_uri).fragment }.map(&:target_uri)
22
+ headers[identifier].reject { |header| Addressable::URI.parse(header.target_uri).fragment }.map(&:target_uri)
25
23
  end
26
24
  end
27
25
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module IndieWeb
2
4
  module Endpoints
3
- VERSION = '4.0.0'.freeze
5
+ VERSION = '7.0.0'
4
6
  end
5
7
  end
@@ -1,24 +1,25 @@
1
- require 'absolutely'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'addressable/uri'
3
4
  require 'http'
4
5
  require 'link-header-parser'
5
6
  require 'nokogiri'
6
7
 
7
- require 'indieweb/endpoints/version'
8
- require 'indieweb/endpoints/exceptions'
8
+ require_relative 'endpoints/version'
9
+ require_relative 'endpoints/exceptions'
9
10
 
10
- require 'indieweb/endpoints/services/response_parser_service'
11
+ require_relative 'endpoints/services/response_parser_service'
11
12
 
12
- require 'indieweb/endpoints/client'
13
- require 'indieweb/endpoints/parsers'
13
+ require_relative 'endpoints/client'
14
+ require_relative 'endpoints/parsers'
14
15
 
15
- require 'indieweb/endpoints/parsers/base_parser'
16
- require 'indieweb/endpoints/parsers/authorization_endpoint_parser'
17
- require 'indieweb/endpoints/parsers/micropub_parser'
18
- require 'indieweb/endpoints/parsers/microsub_parser'
19
- require 'indieweb/endpoints/parsers/redirect_uri_parser'
20
- require 'indieweb/endpoints/parsers/token_endpoint_parser'
21
- require 'indieweb/endpoints/parsers/webmention_parser'
16
+ require_relative 'endpoints/parsers/base_parser'
17
+ require_relative 'endpoints/parsers/authorization_endpoint_parser'
18
+ require_relative 'endpoints/parsers/micropub_parser'
19
+ require_relative 'endpoints/parsers/microsub_parser'
20
+ require_relative 'endpoints/parsers/redirect_uri_parser'
21
+ require_relative 'endpoints/parsers/token_endpoint_parser'
22
+ require_relative 'endpoints/parsers/webmention_parser'
22
23
 
23
24
  module IndieWeb
24
25
  module Endpoints
metadata CHANGED
@@ -1,85 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: indieweb-endpoints
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 7.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-07-21 00:00:00.000000000 Z
11
+ date: 2022-01-06 00:00:00.000000000 Z
12
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'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: addressable
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '2.7'
19
+ version: '2.8'
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: '2.7'
26
+ version: '2.8'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: http
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '4.4'
33
+ version: '5.0'
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: '4.4'
40
+ version: '5.0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: link-header-parser
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '2.0'
47
+ version: '4.0'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '2.0'
54
+ version: '4.0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: nokogiri
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '1.10'
61
+ version: '1.12'
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '1.10'
68
+ version: '1.12'
83
69
  description: Discover a URL’s IndieAuth, Micropub, Microsub, and Webmention endpoints.
84
70
  email:
85
71
  - jason@sixtwothree.org
@@ -87,23 +73,11 @@ executables: []
87
73
  extensions: []
88
74
  extra_rdoc_files: []
89
75
  files:
90
- - ".editorconfig"
91
- - ".github/CODEOWNERS"
92
- - ".gitignore"
93
- - ".reek.yml"
94
- - ".rspec"
95
- - ".rubocop"
96
- - ".rubocop.yml"
97
- - ".ruby-version"
98
- - ".simplecov"
99
- - ".travis.yml"
100
76
  - CHANGELOG.md
101
77
  - CODE_OF_CONDUCT.md
102
78
  - CONTRIBUTING.md
103
- - Gemfile
104
79
  - LICENSE
105
80
  - README.md
106
- - Rakefile
107
81
  - indieweb-endpoints.gemspec
108
82
  - lib/indieweb/endpoints.rb
109
83
  - lib/indieweb/endpoints/client.rb
@@ -123,7 +97,8 @@ licenses:
123
97
  - MIT
124
98
  metadata:
125
99
  bug_tracker_uri: https://github.com/indieweb/indieweb-endpoints-ruby/issues
126
- changelog_uri: https://github.com/indieweb/indieweb-endpoints-ruby/blob/v4.0.0/CHANGELOG.md
100
+ changelog_uri: https://github.com/indieweb/indieweb-endpoints-ruby/blob/v7.0.0/CHANGELOG.md
101
+ rubygems_mfa_required: 'true'
127
102
  post_install_message:
128
103
  rdoc_options: []
129
104
  require_paths:
@@ -132,17 +107,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
107
  requirements:
133
108
  - - ">="
134
109
  - !ruby/object:Gem::Version
135
- version: '2.5'
110
+ version: '2.6'
136
111
  - - "<"
137
112
  - !ruby/object:Gem::Version
138
- version: '2.8'
113
+ version: '4'
139
114
  required_rubygems_version: !ruby/object:Gem::Requirement
140
115
  requirements:
141
116
  - - ">="
142
117
  - !ruby/object:Gem::Version
143
118
  version: '0'
144
119
  requirements: []
145
- rubygems_version: 3.1.2
120
+ rubygems_version: 3.2.33
146
121
  signing_key:
147
122
  specification_version: 4
148
123
  summary: Discover a URL’s IndieAuth, Micropub, Microsub, and Webmention endpoints.
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/.github/CODEOWNERS DELETED
@@ -1 +0,0 @@
1
- * jgarber623
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,6 +0,0 @@
1
- detectors:
2
- IrresponsibleModule:
3
- enabled: false
4
-
5
- exclude_paths:
6
- - 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,29 +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/BlockLength:
12
- Exclude:
13
- - spec/**/*.rb
14
-
15
- Naming/RescuedExceptionsVariableName:
16
- PreferredName: exception
17
-
18
- RSpec/FilePath:
19
- Exclude:
20
- - spec/lib/indieweb/**/*_spec.rb
21
-
22
- Style/Documentation:
23
- Enabled: false
24
-
25
- Style/FrozenStringLiteralComment:
26
- Enabled: false
27
-
28
- Style/SymbolArray:
29
- 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,15 +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
data/Gemfile DELETED
@@ -1,15 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in indieweb-endpoints.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.88.0'
11
- gem 'rubocop-performance', '~> 1.7'
12
- gem 'rubocop-rspec', '~> 1.42'
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]