webfinger 1.2.0 → 2.1.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: 44b7fa12cb19c4fec968c4a6a815c0539a5475a3e2b400d0750a87172a500242
4
- data.tar.gz: 6dd748518f967ffa779027d35d65bf2233f5960ee7277d7efbf6e263e3c59cf3
3
+ metadata.gz: d259fcab87388831d5b980e891ee5f8022ada8935423ee665a95ab394d3cb1bc
4
+ data.tar.gz: 2f66aff8dbbc2e65cf2ee903803561a769e4cf6da665714464407e1b1ccb6806
5
5
  SHA512:
6
- metadata.gz: 88bb1d045369cb436e0b633b35698ef6ba9511d1e907c5ddfb19587ba61953ac6a8c40076dd56fad632c05977d1ba6b51165d6911055262004444676484962e0
7
- data.tar.gz: a22df1a0edf557ac81eeb0d630a177baab6efc3814cf931cbbe4726879881ddab108b85c39e5083e6d4ee03fc4c71c1131102b31189d2a8faf968b173f38dc6b
6
+ metadata.gz: edf7b4a21d1890549757a4d316b14dbc2cfb584e7fb84a2badf5a68d8bca201272b5ffa1717c89c4edd73b764df50b53cd71802a25cdeaf709a635310655e88f
7
+ data.tar.gz: 2fbab83bf5ddb9dc7badb4f611281caf7fc04eeafecbfe72af9a006f68a6fecc24b88fd831c7bf60e06eef56e6590f2bd601fe82ea6115ce4fb5beae57807b11
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: nov
@@ -0,0 +1,32 @@
1
+ name: Spec
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ spec:
14
+ strategy:
15
+ matrix:
16
+ os: ['ubuntu-20.04']
17
+ ruby-version: ['2.6', '2.7', '3.0', '3.1']
18
+ # ubuntu 22.04 only supports ssl 3 and thus only ruby 3.1
19
+ include:
20
+ - os: 'ubuntu-22.04'
21
+ ruby-version: '3.1'
22
+ runs-on: ${{ matrix.os }}
23
+
24
+ steps:
25
+ - uses: actions/checkout@v3
26
+ - name: Set up Ruby
27
+ uses: ruby/setup-ruby@v1
28
+ with:
29
+ ruby-version: ${{ matrix.ruby-version }}
30
+ bundler-cache: true
31
+ - name: Run Specs
32
+ run: bundle exec rake spec
data/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ ## [Unreleased]
2
+
3
+ ## [2.0.0] - 2022-10-08
4
+
5
+ ### Added
6
+
7
+ - start recording CHANGELOG
8
+
9
+ ### Changed
10
+
11
+ - Switch from httpclient to faraday https://github.com/nov/webfinger/pull/9
data/README.rdoc CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  An Ruby WebFinger client library.
4
4
 
5
- {<img src="https://secure.travis-ci.org/nov/webfinger.png" />}[http://travis-ci.org/nov/webfinger]
6
-
7
5
  Following the latest WebFinger spec discussed at IETF WebFinger WG.
8
6
  http://tools.ietf.org/html/draft-ietf-appsawg-webfinger
9
7
 
@@ -75,4 +73,4 @@ You can also specify URL builder to force non-HTTPS access. (NOTE: allow non-HTT
75
73
 
76
74
  == Copyright
77
75
 
78
- Copyright (c) 2012 nov matake. See LICENSE for details.
76
+ Copyright (c) 2012 nov matake. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 2.1.0
@@ -33,4 +33,4 @@ module WebFinger
33
33
  super 404, message, response
34
34
  end
35
35
  end
36
- end
36
+ end
@@ -10,7 +10,7 @@ module WebFinger
10
10
 
11
11
  def discover!
12
12
  handle_response do
13
- WebFinger.http_client.get_content endpoint.to_s
13
+ WebFinger.http_client.get(endpoint.to_s)
14
14
  end
15
15
  end
16
16
 
@@ -50,23 +50,22 @@ module WebFinger
50
50
  end
51
51
 
52
52
  def handle_response
53
- raw_response = yield
54
- jrd = JSON.parse(raw_response).with_indifferent_access
55
- Response.new jrd
56
- rescue HTTPClient::BadResponseError => e
57
- case e.res.try(:status)
53
+ json = yield.body
54
+ Response.new json
55
+ rescue Faraday::Error => e
56
+ case e.response_status
58
57
  when nil
59
58
  raise e
60
59
  when 400
61
- raise BadRequest.new('Bad Request', raw_response)
60
+ raise BadRequest.new('Bad Request', e.response_body)
62
61
  when 401
63
- raise Unauthorized.new('Unauthorized', raw_response)
62
+ raise Unauthorized.new('Unauthorized', e.response_body)
64
63
  when 403
65
- raise Forbidden.new('Forbidden', raw_response)
64
+ raise Forbidden.new('Forbidden', e.response_body)
66
65
  when 404
67
- raise NotFound.new('Not Found', raw_response)
66
+ raise NotFound.new('Not Found', e.response_body)
68
67
  else
69
- raise HttpError.new(e.res.status, e.res.reason, raw_response)
68
+ raise HttpError.new(e.response_status, e.response_body, e.response_body)
70
69
  end
71
70
  end
72
71
  end
data/lib/webfinger.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'json'
2
- require 'httpclient'
2
+ require 'faraday'
3
+ require 'faraday/follow_redirects'
3
4
  require 'active_support'
4
5
  require 'active_support/core_ext'
5
6
 
@@ -42,24 +43,21 @@ module WebFinger
42
43
  end
43
44
 
44
45
  def http_client
45
- _http_client_ = HTTPClient.new(
46
- agent_name: "WebFinger (#{VERSION})"
47
- )
48
-
49
- # NOTE: httpclient gem seems stopped maintaining root certtificate set, use OS default.
50
- _http_client_.ssl_config.clear_cert_store
51
- _http_client_.ssl_config.cert_store.set_default_paths
52
-
53
- _http_client_.request_filter << Debugger::RequestFilter.new if debugging?
54
- http_config.try(:call, _http_client_)
55
- _http_client_
46
+ Faraday.new(headers: {user_agent: "WebFinger #{VERSION}"}) do |faraday|
47
+ faraday.response :raise_error
48
+ faraday.response :json
49
+ faraday.response :follow_redirects
50
+ faraday.response :logger, WebFinger.logger if debugging?
51
+ faraday.adapter Faraday.default_adapter
52
+ http_config.try(:call, faraday)
53
+ end
56
54
  end
55
+
57
56
  def http_config(&block)
58
57
  @http_config ||= block
59
58
  end
60
59
  end
61
60
 
62
- require 'webfinger/debugger'
63
61
  require 'webfinger/exception'
64
62
  require 'webfinger/request'
65
63
  require 'webfinger/response'
@@ -35,4 +35,4 @@ module WebMockHelper
35
35
  end
36
36
 
37
37
  include WebMockHelper
38
- WebMock.disable_net_connect!
38
+ WebMock.disable_net_connect!
@@ -158,16 +158,16 @@ describe WebFinger do
158
158
  subject { WebFinger.http_client }
159
159
 
160
160
  describe '#request_filter' do
161
- subject { WebFinger.http_client.request_filter.collect(&:class) }
161
+ subject { WebFinger.http_client.builder.handlers.collect(&:klass) }
162
162
 
163
163
  context 'as default' do
164
- it { should_not include WebFinger::Debugger::RequestFilter }
164
+ it { should_not include Faraday::Response::Logger }
165
165
  end
166
166
 
167
167
  context 'when debugging' do
168
168
  before { WebFinger.debug! }
169
- it { should include WebFinger::Debugger::RequestFilter }
169
+ it { should include Faraday::Response::Logger }
170
170
  end
171
171
  end
172
172
  end
173
- end
173
+ end
data/webfinger.gemspec CHANGED
@@ -12,7 +12,8 @@ Gem::Specification.new do |gem|
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
14
  gem.require_paths = ['lib']
15
- gem.add_runtime_dependency 'httpclient', '>= 2.4'
15
+ gem.add_runtime_dependency 'faraday', '~> 2.0'
16
+ gem.add_runtime_dependency 'faraday-follow_redirects'
16
17
  gem.add_runtime_dependency 'activesupport'
17
18
  gem.add_development_dependency 'rake'
18
19
  gem.add_development_dependency 'rspec'
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webfinger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov matake
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-01 00:00:00.000000000 Z
11
+ date: 2022-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: httpclient
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday-follow_redirects
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - ">="
18
32
  - !ruby/object:Gem::Version
19
- version: '2.4'
33
+ version: '0'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: '2.4'
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: activesupport
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -115,16 +129,16 @@ executables: []
115
129
  extensions: []
116
130
  extra_rdoc_files: []
117
131
  files:
132
+ - ".github/FUNDING.yml"
133
+ - ".github/workflows/spec.yml"
118
134
  - ".gitignore"
119
- - ".travis.yml"
135
+ - CHANGELOG.md
120
136
  - Gemfile
121
137
  - LICENSE.txt
122
138
  - README.rdoc
123
139
  - Rakefile
124
140
  - VERSION
125
141
  - lib/webfinger.rb
126
- - lib/webfinger/debugger.rb
127
- - lib/webfinger/debugger/request_filter.rb
128
142
  - lib/webfinger/exception.rb
129
143
  - lib/webfinger/request.rb
130
144
  - lib/webfinger/response.rb
@@ -134,7 +148,6 @@ files:
134
148
  - spec/mock_json/email_config.json
135
149
  - spec/mock_json/open_id.json
136
150
  - spec/spec_helper.rb
137
- - spec/webfinger/debugger/request_filter_spec.rb
138
151
  - spec/webfinger/response_spec.rb
139
152
  - spec/webfinger_spec.rb
140
153
  - webfinger.gemspec
@@ -157,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
170
  - !ruby/object:Gem::Version
158
171
  version: '0'
159
172
  requirements: []
160
- rubygems_version: 3.1.4
173
+ rubygems_version: 3.1.6
161
174
  signing_key:
162
175
  specification_version: 4
163
176
  summary: Ruby WebFinger client library, following IETF WebFinger WG spec updates.
@@ -168,6 +181,5 @@ test_files:
168
181
  - spec/mock_json/email_config.json
169
182
  - spec/mock_json/open_id.json
170
183
  - spec/spec_helper.rb
171
- - spec/webfinger/debugger/request_filter_spec.rb
172
184
  - spec/webfinger/response_spec.rb
173
185
  - spec/webfinger_spec.rb
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- before_install:
2
- - gem install bundler
3
-
4
- rvm:
5
- - 2.5.8
6
- - 2.6.6
7
- - 2.7.2
8
- - 3.0.0
@@ -1,20 +0,0 @@
1
- module WebFinger
2
- module Debugger
3
- class RequestFilter
4
- # Callback called in HTTPClient (before sending a request)
5
- # request:: HTTP::Message
6
- def filter_request(request)
7
- started = "======= [WebFinger] HTTP REQUEST STARTED ======="
8
- WebFinger.logger.info [started, request.dump].join("\n")
9
- end
10
-
11
- # Callback called in HTTPClient (after received a response)
12
- # request:: HTTP::Message
13
- # response:: HTTP::Message
14
- def filter_response(request, response)
15
- finished = "======= [WebFinger] HTTP REQUEST FINISHED ======="
16
- WebFinger.logger.info ['-' * 50, response.dump, finished].join("\n")
17
- end
18
- end
19
- end
20
- end
@@ -1,3 +0,0 @@
1
- Dir[File.dirname(__FILE__) + '/debugger/*.rb'].each do |file|
2
- require file
3
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe WebFinger::Debugger::RequestFilter do
4
- let(:resource_endpoint) { 'https://example.com/resources' }
5
- let(:request) { HTTP::Message.new_request(:get, URI.parse(resource_endpoint)) }
6
- let(:response) { HTTP::Message.new_response({:hello => 'world'}.to_json) }
7
- let(:request_filter) { WebFinger::Debugger::RequestFilter.new }
8
-
9
- describe '#filter_request' do
10
- it 'should log request' do
11
- expect(WebFinger.logger).to receive(:info).with(
12
- "======= [WebFinger] HTTP REQUEST STARTED =======\n" +
13
- request.dump
14
- )
15
- request_filter.filter_request(request)
16
- end
17
- end
18
-
19
- describe '#filter_response' do
20
- it 'should log response' do
21
- expect(WebFinger.logger).to receive(:info).with(
22
- "--------------------------------------------------\n" +
23
- response.dump +
24
- "\n======= [WebFinger] HTTP REQUEST FINISHED ======="
25
- )
26
- request_filter.filter_response(request, response)
27
- end
28
- end
29
- end