webfinger 1.2.0 → 2.1.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: 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