hyperclient 1.0.1 → 2.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: 5f55cb82362d8eca25347e15c91387bbf2957f1f1241af27fccff1086b412d1b
4
- data.tar.gz: f31325a293b0aec888b94910b8c3dc28d2f30a6666fe59063b4112251f46e7c4
3
+ metadata.gz: '02694a72cb9a16a0faac55b463c859a470bce22f7976b0b77c19da138cceded8'
4
+ data.tar.gz: d96697a7e493f29b2a3207850b961664cfa18e0195b526abb16c9c108b2e2bc3
5
5
  SHA512:
6
- metadata.gz: e9b17e112614d3c600497c6c7cfd56268195427da789629d006742ff96e70d2b6972ba16fbfa075ab62613eeace923d8fdb4f231b9d86a04f82b75fa5d4a4826
7
- data.tar.gz: 8a8861e266967702c86d5762ec5b786687298c37e797a5c324583c9d3c9d2fe4dc83cf8841c912db3d14a0bf731d1dbee0c1c85b3d43961589c5741b43b3f128
6
+ metadata.gz: 45bb98cc9a22fd721c71f32a4e7b2634610279fe66a8466d6f2339efb994853896ed33867baa3e460cd805055b2b2611108d703f7c7788b952ef3693393140fd
7
+ data.tar.gz: c3c47fee4c97362f31c40a8923eec8c7573be28e215a43bdaac89c44e573cd93cec57291932718dd1bd136689c9f46f1ceff2ace244d613d76871cf9e7529df6
data/.DS_Store ADDED
Binary file
@@ -0,0 +1,18 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "04:00"
8
+ timezone: Europe/Madrid
9
+ open-pull-requests-limit: 10
10
+ ignore:
11
+ - dependency-name: rubocop
12
+ versions:
13
+ - 1.10.0
14
+ - 1.11.0
15
+ - 1.12.0
16
+ - 1.12.1
17
+ - 1.9.0
18
+ - 1.9.1
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: coverage
3
+ on: [push, pull_request]
4
+
5
+ env:
6
+ COVERAGE: 1
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v3
13
+ - name: Install Ruby (2.7)
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 2.7
17
+ bundler-cache: true
18
+ - name: Build and test with RSpec
19
+ run: |
20
+ bundle exec rake test
21
+ - name: Coveralls
22
+ uses: coverallsapp/github-action@master
23
+ with:
24
+ github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: danger
3
+ on:
4
+ pull_request:
5
+ types: [opened, reopened, edited, synchronize]
6
+ jobs:
7
+ danger:
8
+ runs-on: ubuntu-20.04
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ with:
12
+ fetch-depth: 0
13
+ - name: Set up Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 2.7
17
+ bundler-cache: true
18
+ - name: Run Danger
19
+ run: |
20
+ # the personal token is public, this is ok, base64 encode to avoid tripping Github
21
+ TOKEN=$(echo -n Z2hwX0xNQ3VmanBFeTBvYkZVTWh6NVNqVFFBOEUxU25abzBqRUVuaAo= | base64 --decode)
22
+ DANGER_GITHUB_API_TOKEN=$TOKEN bundle exec danger --verbose
@@ -0,0 +1,16 @@
1
+ name: lint
2
+ on: [push, pull_request]
3
+ jobs:
4
+ rubocop:
5
+ name: RuboCop
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - name: Checkout
9
+ uses: actions/checkout@v3
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: '2.7'
14
+ bundler-cache: true
15
+ - run: bundle exec rubocop
16
+
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: test
3
+ on: [push, pull_request]
4
+ jobs:
5
+ test:
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ fail-fast: false
9
+ matrix:
10
+ entry:
11
+ - { ruby: '3.2' }
12
+ - { ruby: '2.7' }
13
+ - { ruby: 'ruby-head', allowed-failure: true }
14
+ - { ruby: 'jruby-head', allowed-failure: true }
15
+ name: test (${{ matrix.entry.ruby }})
16
+ steps:
17
+ - uses: actions/checkout@v3
18
+ - uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.entry.ruby }}
21
+ bundler-cache: true
22
+ - run: bundle exec rake test spinach
23
+ continue-on-error: ${{ matrix.entry.allowed-failure || false }}
data/.rubocop.yml CHANGED
@@ -1,6 +1,11 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
+ require:
4
+ - rubocop-rake
5
+ - rubocop-minitest
6
+
3
7
  AllCops:
8
+ NewCops: enable
4
9
  TargetRubyVersion: 2.3
5
10
 
6
11
  Metrics:
data/.rubocop_todo.yml CHANGED
@@ -1,21 +1,52 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-12-03 14:08:14 -0500 using RuboCop version 0.81.0.
3
+ # on 2024-02-01 15:28:54 UTC using RuboCop version 1.48.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 2
10
- # Cop supports --auto-correct.
11
- # Configuration parameters: AutoCorrect, EnforcedStyle.
9
+ # Offense count: 1
10
+ # Configuration parameters: Severity, Include.
11
+ # Include: **/*.gemspec
12
+ Gemspec/RequiredRubyVersion:
13
+ Exclude:
14
+ - 'hyperclient.gemspec'
15
+
16
+ # Offense count: 1
17
+ # Configuration parameters: AllowComments, AllowEmptyLambdas.
18
+ Lint/EmptyBlock:
19
+ Exclude:
20
+ - 'test/hyperclient/entry_point_test.rb'
21
+
22
+ # Offense count: 4
23
+ Lint/MissingSuper:
24
+ Exclude:
25
+ - 'lib/hyperclient/attributes.rb'
26
+ - 'lib/hyperclient/entry_point.rb'
27
+ - 'lib/hyperclient/link_collection.rb'
28
+ - 'lib/hyperclient/resource_collection.rb'
29
+
30
+ # Offense count: 1
31
+ # This cop supports unsafe autocorrection (--autocorrect-all).
32
+ # Configuration parameters: AllowedMethods.
33
+ # AllowedMethods: instance_of?, kind_of?, is_a?, eql?, respond_to?, equal?
34
+ Lint/RedundantSafeNavigation:
35
+ Exclude:
36
+ - 'lib/hyperclient/link.rb'
37
+
38
+ # Offense count: 3
39
+ # This cop supports unsafe autocorrection (--autocorrect-all).
40
+ # Configuration parameters: EnforcedStyle.
12
41
  # SupportedStyles: nested, compact
13
42
  Style/ClassAndModuleChildren:
14
43
  Exclude:
15
44
  - 'features/steps/api_navigation.rb'
16
45
  - 'features/steps/default_config.rb'
46
+ - 'features/support/env.rb'
17
47
 
18
- # Offense count: 4
48
+ # Offense count: 5
49
+ # Configuration parameters: AllowedConstants.
19
50
  Style/Documentation:
20
51
  Exclude:
21
52
  - 'spec/**/*'
@@ -23,30 +54,5 @@ Style/Documentation:
23
54
  - 'features/steps/api_navigation.rb'
24
55
  - 'features/steps/default_config.rb'
25
56
  - 'features/support/api.rb'
57
+ - 'features/support/env.rb'
26
58
  - 'features/support/fixtures.rb'
27
-
28
- # Offense count: 2
29
- Style/DoubleNegation:
30
- Exclude:
31
- - 'lib/hyperclient/curie.rb'
32
- - 'lib/hyperclient/link.rb'
33
-
34
- # Offense count: 3
35
- # Cop supports --auto-correct.
36
- Style/IfUnlessModifier:
37
- Exclude:
38
- - 'lib/hyperclient/link_collection.rb'
39
- - 'lib/hyperclient/resource.rb'
40
- - 'lib/hyperclient/resource_collection.rb'
41
-
42
- # Offense count: 1
43
- Style/MethodMissingSuper:
44
- Exclude:
45
- - 'lib/hyperclient/collection.rb'
46
-
47
- # Offense count: 101
48
- # Cop supports --auto-correct.
49
- # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
50
- # URISchemes: http, https
51
- Layout/LineLength:
52
- Max: 147
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ## Changelog
2
2
 
3
+ ### 2.0.0 (2024/02/01)
4
+
5
+ * [#268](https://github.com/codegram/hyperclient/pull/268): Replace Travis-CI with GHA - [@dblock](https://github.com/dblock).
6
+ * [#269](https://github.com/codegram/hyperclient/pull/269): Re-add code coverage - [@dblock](https://github.com/dblock).
7
+ * [#270](https://github.com/codegram/hyperclient/pull/270): Upgrade Rubocop to 1.45 - [@dblock](https://github.com/dblock).
8
+ * [#271](https://github.com/codegram/hyperclient/pull/271): Test against Ruby 3.2 - [@dblock](https://github.com/dblock).
9
+ * [#285](https://github.com/codegram/hyperclient/pull/285): Support Faraday 2.x - [@dblock](https://github.com/dblock).
10
+
3
11
  ### 1.0.1 (2021/01/02)
4
12
 
5
13
  * [#193](https://github.com/codegram/hyperclient/pull/193): Auto-paginate collections - [@dblock](https://github.com/dblock).
data/CONTRIBUTING.md CHANGED
@@ -106,7 +106,7 @@ git push origin my-feature-branch -f
106
106
 
107
107
  #### Check on Your Pull Request
108
108
 
109
- Go back to your pull request after a few minutes and see whether it passed muster with Travis-CI. Everything should look green, otherwise fix issues and amend your commit as described above.
109
+ Go back to your pull request after a few minutes and see whether it passed muster with CI. Everything should look green, otherwise fix issues and amend your commit as described above.
110
110
 
111
111
  #### Be Patient
112
112
 
data/Gemfile CHANGED
@@ -1,10 +1,5 @@
1
- # NOTE: this is temporary until Bundler 2.0 changes how github: references work.
2
- git_source(:github) { |repo| "https://github.com/#{repo['/'] ? repo : "#{repo}/#{repo}"}.git" }
3
-
4
1
  source 'https://rubygems.org'
5
2
 
6
- gem 'faraday', ENV['FARADAY_VERSION'] if ENV.key?('FARADAY_VERSION')
7
-
8
3
  gemspec
9
4
 
10
5
  group :development do
@@ -18,8 +13,11 @@ end
18
13
 
19
14
  group :development, :test do
20
15
  gem 'rake'
21
- gem 'rubocop', '0.81.0', require: false
16
+ gem 'rubocop', '~> 1.48.0', require: false
17
+ gem 'rubocop-minitest', require: false
18
+ gem 'rubocop-rake', require: false
22
19
  gem 'simplecov', require: false
20
+ gem 'simplecov-lcov', require: false
23
21
  end
24
22
 
25
23
  group :test do
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Hyperclient
2
2
 
3
3
  [![Gem Version](http://img.shields.io/gem/v/hyperclient.svg)](http://badge.fury.io/rb/hyperclient)
4
- [![Build Status](http://img.shields.io/travis/codegram/hyperclient.svg)](https://travis-ci.org/codegram/hyperclient)
4
+ [![Build Status](https://github.com/codegram/hyperclient/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/codegram/hyperclient/actions/workflows/test.yml)
5
5
  [![Code Climate](https://codeclimate.com/github/codegram/hyperclient.svg)](https://codeclimate.com/github/codegram/hyperclient)
6
6
  [![Coverage Status](https://img.shields.io/coveralls/codegram/hyperclient.svg)](https://coveralls.io/r/codegram/hyperclient?branch=master)
7
7
 
@@ -25,7 +25,7 @@ Hyperclient is a Hypermedia API client written in Ruby. It fully supports [JSON
25
25
 
26
26
  # Usage
27
27
 
28
- The examples in this README use the [Splines Demo API](https://github.com/ruby-grape/grape-with-roar) running [here](https://grape-with-roar.herokuapp.com/api). If you're upgrading from a previous version, please make sure to read [UPGRADING](UPGRADING.md).
28
+ The examples in this README use the [Splines Demo API](https://github.com/ruby-grape/grape-with-roar) running [here](https://grape-with-roar.herokuapp.com/api). Use version 1.x with Faraday 1.x, and version 2.x with Faraday 2.x. If you're upgrading from a previous version, please make sure to read [UPGRADING](UPGRADING.md).
29
29
 
30
30
  ## API Client
31
31
 
@@ -50,7 +50,7 @@ Hyperclient constructs a connection using typical [Faraday](http://github.com/lo
50
50
  ```ruby
51
51
  api = Hyperclient.new('https://grape-with-roar.herokuapp.com/api') do |client|
52
52
  client.connection do |conn|
53
- conn.use Faraday::Request::OAuth
53
+ conn.use Faraday::Request::Instrumentation
54
54
  end
55
55
  end
56
56
  ```
@@ -60,7 +60,7 @@ You can pass options to the Faraday connection block in the `connection` block:
60
60
  ```ruby
61
61
  api = Hyperclient.new('https://grape-with-roar.herokuapp.com/api') do |client|
62
62
  client.connection(ssl: { verify: false }) do |conn|
63
- conn.use Faraday::Request::OAuth
63
+ conn.use Faraday::Request::Instrumentation
64
64
  end
65
65
  end
66
66
  ```
data/RELEASING.md CHANGED
@@ -12,7 +12,7 @@ bundle install
12
12
  rake
13
13
  ```
14
14
 
15
- Check that the last build succeeded in [Travis CI](https://travis-ci.org/codegram/hyperclient) for all supported platforms.
15
+ Check that the last build succeeded in CI for all supported platforms.
16
16
 
17
17
  Increment the version, modify [lib/hyperclient/version.rb](lib/hyperclient/version.rb).
18
18
 
data/Rakefile CHANGED
@@ -6,14 +6,6 @@ Bundler.setup :default, :test, :development
6
6
 
7
7
  Bundler::GemHelper.install_tasks
8
8
 
9
- if ENV['COVERAGE']
10
- require 'simplecov'
11
- SimpleCov.start do
12
- add_filter '/test/'
13
- add_filter '/features/'
14
- end
15
- end
16
-
17
9
  require 'rake/testtask'
18
10
 
19
11
  Rake::TestTask.new(:test) do |t|
@@ -43,13 +43,13 @@ class Spinach::Features::ApiNavigation < Spinach::FeatureSteps
43
43
  end
44
44
 
45
45
  step 'I should be able to access it\'s title and body' do
46
- @post._attributes.title.wont_equal nil
47
- @post._attributes.body.wont_equal nil
46
+ assert_kind_of String, @post._attributes.title
47
+ assert_kind_of String, @post._attributes.body
48
48
  end
49
49
 
50
50
  step 'I should also be able to access it\'s embedded comments' do
51
51
  comment = @post._embedded.comments.first
52
- comment._attributes.title.wont_equal nil
52
+ assert_kind_of String, comment._attributes.title
53
53
  end
54
54
 
55
55
  step 'I should be able to navigate to next page' do
@@ -25,7 +25,7 @@ class Spinach::Features::DefaultConfig < Spinach::FeatureSteps
25
25
  end
26
26
 
27
27
  step 'it should have been parsed as JSON' do
28
- @posts._attributes.total_posts.to_i.must_equal 4
29
- @posts._attributes['total_posts'].to_i.must_equal 4
28
+ assert_equal 4, @posts._attributes.total_posts.to_i
29
+ assert_equal 4, @posts._attributes['total_posts'].to_i
30
30
  end
31
31
  end
@@ -7,17 +7,28 @@ module API
7
7
  before do
8
8
  WebMock::Config.instance.query_values_notation = :flat_array
9
9
 
10
- stub_request(:any, /api.example.org*/).to_return(body: root_response, headers: { 'Content-Type' => 'application/hal+json' })
11
- stub_request(:get, 'api.example.org').to_return(body: root_response, headers: { 'Content-Type' => 'application/hal+json' })
12
- stub_request(:get, 'api.example.org/authors').to_return(body: authors_response, headers: { 'Content-Type' => 'application/hal+json' })
13
- stub_request(:get, 'api.example.org/posts').to_return(body: posts_response, headers: { 'Content-Type' => 'application/hal+json' })
14
- stub_request(:get, 'api.example.org/posts?page=2').to_return(body: posts_page2_response, headers: { 'Content-Type' => 'application/hal+json' })
15
- stub_request(:get, 'api.example.org/posts?page=3').to_return(body: posts_page3_response, headers: { 'Content-Type' => 'application/hal+json' })
16
- stub_request(:get, 'api.example.org/posts/1').to_return(body: post1_response, headers: { 'Content-Type' => 'application/hal+json' })
17
- stub_request(:get, 'api.example.org/posts/2').to_return(body: post2_response, headers: { 'Content-Type' => 'application/hal+json' })
18
- stub_request(:get, 'api.example.org/posts/3').to_return(body: post3_response, headers: { 'Content-Type' => 'application/hal+json' })
19
- stub_request(:get, 'api.example.org/page2').to_return(body: page2_response, headers: { 'Content-Type' => 'application/hal+json' })
20
- stub_request(:get, 'api.example.org/page3').to_return(body: page3_response, headers: { 'Content-Type' => 'application/hal+json' })
10
+ stub_request(:any, /api.example.org*/).to_return(body: root_response,
11
+ headers: { 'Content-Type' => 'application/hal+json' })
12
+ stub_request(:get, 'api.example.org').to_return(body: root_response,
13
+ headers: { 'Content-Type' => 'application/hal+json' })
14
+ stub_request(:get, 'api.example.org/authors').to_return(body: authors_response,
15
+ headers: { 'Content-Type' => 'application/hal+json' })
16
+ stub_request(:get, 'api.example.org/posts').to_return(body: posts_response,
17
+ headers: { 'Content-Type' => 'application/hal+json' })
18
+ stub_request(:get, 'api.example.org/posts?page=2').to_return(body: posts_page2_response,
19
+ headers: { 'Content-Type' => 'application/hal+json' })
20
+ stub_request(:get, 'api.example.org/posts?page=3').to_return(body: posts_page3_response,
21
+ headers: { 'Content-Type' => 'application/hal+json' })
22
+ stub_request(:get, 'api.example.org/posts/1').to_return(body: post1_response,
23
+ headers: { 'Content-Type' => 'application/hal+json' })
24
+ stub_request(:get, 'api.example.org/posts/2').to_return(body: post2_response,
25
+ headers: { 'Content-Type' => 'application/hal+json' })
26
+ stub_request(:get, 'api.example.org/posts/3').to_return(body: post3_response,
27
+ headers: { 'Content-Type' => 'application/hal+json' })
28
+ stub_request(:get, 'api.example.org/page2').to_return(body: page2_response,
29
+ headers: { 'Content-Type' => 'application/hal+json' })
30
+ stub_request(:get, 'api.example.org/page3').to_return(body: page3_response,
31
+ headers: { 'Content-Type' => 'application/hal+json' })
21
32
  end
22
33
 
23
34
  def api
@@ -1,4 +1,17 @@
1
- require 'minitest/spec'
1
+ require 'minitest'
2
2
  require 'webmock'
3
3
  WebMock.enable!
4
4
  require 'hyperclient'
5
+
6
+ Minitest::Spec.new nil if defined?(Minitest::Spec)
7
+ Spinach.config[:failure_exceptions] << Minitest::Assertion
8
+
9
+ class Spinach::FeatureSteps
10
+ include Minitest::Assertions
11
+ attr_accessor :assertions
12
+
13
+ def initialize(*args)
14
+ super(*args)
15
+ self.assertions = 0
16
+ end
17
+ end
data/hyperclient.gemspec CHANGED
@@ -8,13 +8,13 @@ Gem::Specification.new do |gem|
8
8
  gem.homepage = 'https://github.com/codegram/hyperclient/'
9
9
  gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
10
10
  gem.files = `git ls-files`.split("\n")
11
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
12
11
  gem.name = 'hyperclient'
13
12
  gem.require_paths = ['lib']
14
13
  gem.version = Hyperclient::VERSION
15
14
 
16
15
  gem.add_dependency 'addressable'
17
- gem.add_dependency 'faraday', '>= 0.9.0'
18
- gem.add_dependency 'faraday_hal_middleware'
19
- gem.add_dependency 'faraday_middleware'
16
+ gem.add_dependency 'faraday', '>= 2'
17
+ gem.add_dependency 'faraday-follow_redirects'
18
+ gem.add_dependency 'faraday_hal_middleware', '>= 0.2'
19
+ gem.metadata['rubygems_mfa_required'] = 'true'
20
20
  end
@@ -1,4 +1,4 @@
1
- require 'faraday_middleware'
1
+ require 'faraday/follow_redirects'
2
2
  require 'faraday_hal_middleware'
3
3
 
4
4
  module Hyperclient
@@ -20,7 +20,7 @@ module Hyperclient
20
20
  #
21
21
  # client = Hyperclient::EntryPoint.new('http://my.api.org') do |entry_point|
22
22
  # entry_point.connection do |conn|
23
- # conn.use Faraday::Request::OAuth
23
+ # conn.use Faraday::Request::Instrumentation
24
24
  # end
25
25
  # entry_point.headers['Access-Token'] = 'token'
26
26
  # end
@@ -138,7 +138,7 @@ module Hyperclient
138
138
  def default_faraday_block
139
139
  lambda do |connection, &block|
140
140
  connection.use Faraday::Response::RaiseError
141
- connection.use FaradayMiddleware::FollowRedirects
141
+ connection.use Faraday::FollowRedirects::Middleware
142
142
  connection.request :hal_json
143
143
  connection.response :hal_json, content_type: /\bjson$/
144
144
 
@@ -111,9 +111,7 @@ module Hyperclient
111
111
  elsif !Array.method_defined?(method)
112
112
  %i[_attributes _embedded _links].each do |target|
113
113
  target = send(target)
114
- if target.respond_to?(method.to_s)
115
- return target.send(method, *args, &block)
116
- end
114
+ return target.send(method, *args, &block) if target.respond_to?(method.to_s)
117
115
  end
118
116
  super
119
117
  end
@@ -23,9 +23,7 @@ module Hyperclient
23
23
  private
24
24
 
25
25
  def build_resource(representation)
26
- if representation.is_a?(Array)
27
- return representation.map(&method(:build_resource))
28
- end
26
+ return representation.map(&method(:build_resource)) if representation.is_a?(Array)
29
27
 
30
28
  Resource.new(representation, @entry_point)
31
29
  end
@@ -1,3 +1,3 @@
1
1
  module Hyperclient
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
@@ -26,18 +26,18 @@ module Hyperclient
26
26
 
27
27
  it 'can insert additional middleware after a connection has been constructed' do
28
28
  _(entry_point.connection).must_be_kind_of Faraday::Connection
29
- entry_point.connection.use :instrumentation
29
+ entry_point.connection.use Faraday::Request::Instrumentation
30
30
  handlers = entry_point.connection.builder.handlers
31
- _(handlers).must_include FaradayMiddleware::Instrumentation
31
+ _(handlers).must_include Faraday::Request::Instrumentation
32
32
  end
33
33
 
34
34
  it 'creates a Faraday connection with the default block' do
35
35
  handlers = entry_point.connection.builder.handlers
36
36
 
37
37
  _(handlers).must_include Faraday::Response::RaiseError
38
- _(handlers).must_include FaradayMiddleware::FollowRedirects
39
- _(handlers).must_include FaradayMiddleware::EncodeHalJson
40
- _(handlers).must_include FaradayMiddleware::ParseHalJson
38
+ _(handlers).must_include Faraday::FollowRedirects::Middleware
39
+ _(handlers).must_include Faraday::HalJson::Request
40
+ _(handlers).must_include Faraday::HalJson::Response
41
41
 
42
42
  _(entry_point.connection.options.params_encoder).must_equal Faraday::FlatParamsEncoder
43
43
  end
@@ -137,9 +137,9 @@ module Hyperclient
137
137
  it 'creates a Faraday connection with the default block' do
138
138
  handlers = entry_point.connection.builder.handlers
139
139
  _(handlers).wont_include Faraday::Response::RaiseError
140
- _(handlers).wont_include FaradayMiddleware::FollowRedirects
141
- _(handlers).must_include FaradayMiddleware::EncodeJson
142
- _(handlers).must_include FaradayMiddleware::ParseJson
140
+ _(handlers).wont_include Faraday::FollowRedirects
141
+ _(handlers).must_include Faraday::Request::Json
142
+ _(handlers).must_include Faraday::Response::Json
143
143
  end
144
144
  end
145
145
  end
@@ -148,7 +148,7 @@ module Hyperclient
148
148
  let(:entry_point) do
149
149
  EntryPoint.new 'http://my.api.org' do |entry_point|
150
150
  entry_point.connection do |conn|
151
- conn.use Faraday::Request::OAuth
151
+ conn.use Faraday::Request::Instrumentation
152
152
  end
153
153
  entry_point.headers['Access-Token'] = 'token'
154
154
  end
@@ -168,11 +168,11 @@ module Hyperclient
168
168
  it 'creates a Faraday connection with the default block plus any additional handlers' do
169
169
  handlers = entry_point.connection.builder.handlers
170
170
 
171
- _(handlers).must_include Faraday::Request::OAuth
171
+ _(handlers).must_include Faraday::Request::Instrumentation
172
172
  _(handlers).must_include Faraday::Response::RaiseError
173
- _(handlers).must_include FaradayMiddleware::FollowRedirects
174
- _(handlers).must_include FaradayMiddleware::EncodeHalJson
175
- _(handlers).must_include FaradayMiddleware::ParseHalJson
173
+ _(handlers).must_include Faraday::FollowRedirects::Middleware
174
+ _(handlers).must_include Faraday::HalJson::Request
175
+ _(handlers).must_include Faraday::HalJson::Response
176
176
 
177
177
  _(entry_point.connection.options.params_encoder).must_equal Faraday::FlatParamsEncoder
178
178
  end
@@ -60,7 +60,8 @@ module Hyperclient
60
60
 
61
61
  describe '_links' do
62
62
  it '_expand' do
63
- resource = Resource.new({ '_links' => { 'orders' => { 'href' => '/orders/{id}', 'templated' => true } } }, entry_point)
63
+ resource = Resource.new({ '_links' => { 'orders' => { 'href' => '/orders/{id}', 'templated' => true } } },
64
+ entry_point)
64
65
  _(resource._links.orders._expand(id: 1)._url).must_equal '/orders/1'
65
66
  _(resource.orders._expand(id: 1)._url).must_equal '/orders/1'
66
67
  _(resource.orders(id: 1)._url).must_equal '/orders/1'
@@ -13,7 +13,7 @@ describe Hyperclient do
13
13
  let(:client) do
14
14
  Hyperclient.new('http://api.example.org') do |client|
15
15
  client.connection(default: true) do |conn|
16
- conn.use Faraday::Request::OAuth
16
+ conn.use Faraday::Request::Instrumentation
17
17
  end
18
18
  client.headers['Access-Token'] = 'token'
19
19
  end
@@ -31,11 +31,11 @@ describe Hyperclient do
31
31
 
32
32
  it 'creates a Faraday connection with the default block plus any additional handlers' do
33
33
  handlers = client.connection.builder.handlers
34
- _(handlers).must_include Faraday::Request::OAuth
34
+ _(handlers).must_include Faraday::Request::Instrumentation
35
35
  _(handlers).must_include Faraday::Response::RaiseError
36
- _(handlers).must_include FaradayMiddleware::FollowRedirects
37
- _(handlers).must_include FaradayMiddleware::EncodeHalJson
38
- _(handlers).must_include FaradayMiddleware::ParseHalJson
36
+ _(handlers).must_include Faraday::FollowRedirects::Middleware
37
+ _(handlers).must_include Faraday::HalJson::Request
38
+ _(handlers).must_include Faraday::HalJson::Response
39
39
  end
40
40
  end
41
41
  end
data/test/test_helper.rb CHANGED
@@ -1,11 +1,30 @@
1
1
  $LOAD_PATH << 'lib'
2
2
 
3
+ if ENV['COVERAGE']
4
+ require 'simplecov'
5
+ require 'simplecov-lcov'
6
+ SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
7
+ SimpleCov::Formatter::LcovFormatter.config do |c|
8
+ c.report_with_single_file = true
9
+ c.lcov_file_name = 'lcov.info'
10
+ c.single_report_path = 'coverage/lcov.info'
11
+ end
12
+ SimpleCov.start do
13
+ add_filter '/test/'
14
+ add_filter '/features/'
15
+ end
16
+ end
17
+
3
18
  require 'minitest/autorun'
4
19
  require 'minitest/pride'
20
+ require 'minitest/unit'
5
21
  require 'mocha/minitest'
6
22
  require 'json'
7
23
 
8
- MiniTest::Test.class_eval do
24
+ require 'faraday'
25
+ require 'faraday/request/instrumentation'
26
+
27
+ MiniTest::Assertions.class_eval do
9
28
  def stub_request(conn, adapter_class = Faraday::Adapter::Test, &stubs_block)
10
29
  adapter_handler = conn.builder.handlers.find { |h| h.klass < Faraday::Adapter }
11
30
  if adapter_handler
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyperclient
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oriol Gual
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-02 00:00:00.000000000 Z
11
+ date: 2024-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -30,16 +30,16 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.0
33
+ version: '2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.9.0
40
+ version: '2'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faraday_hal_middleware
42
+ name: faraday-follow_redirects
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: faraday_middleware
56
+ name: faraday_hal_middleware
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '0.2'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '0.2'
69
69
  description: Hyperclient is a Ruby Hypermedia API client.
70
70
  email:
71
71
  - oriol.gual@gmail.com
@@ -73,10 +73,15 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
+ - ".DS_Store"
77
+ - ".github/dependabot.yml"
78
+ - ".github/workflows/coverage.yml"
79
+ - ".github/workflows/danger.yml"
80
+ - ".github/workflows/lint.yml"
81
+ - ".github/workflows/test.yml"
76
82
  - ".gitignore"
77
83
  - ".rubocop.yml"
78
84
  - ".rubocop_todo.yml"
79
- - ".travis.yml"
80
85
  - ".yardopts"
81
86
  - CHANGELOG.md
82
87
  - CONTRIBUTING.md
@@ -122,7 +127,8 @@ files:
122
127
  - test/test_helper.rb
123
128
  homepage: https://github.com/codegram/hyperclient/
124
129
  licenses: []
125
- metadata: {}
130
+ metadata:
131
+ rubygems_mfa_required: 'true'
126
132
  post_install_message:
127
133
  rdoc_options: []
128
134
  require_paths:
@@ -138,28 +144,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
144
  - !ruby/object:Gem::Version
139
145
  version: '0'
140
146
  requirements: []
141
- rubygems_version: 3.1.3
147
+ rubygems_version: 3.1.4
142
148
  signing_key:
143
149
  specification_version: 4
144
150
  summary: ''
145
- test_files:
146
- - features/api_navigation.feature
147
- - features/default_config.feature
148
- - features/steps/api_navigation.rb
149
- - features/steps/default_config.rb
150
- - features/support/api.rb
151
- - features/support/env.rb
152
- - features/support/fixtures.rb
153
- - test/fixtures/collection.json
154
- - test/fixtures/element.json
155
- - test/fixtures/root.json
156
- - test/hyperclient/attributes_test.rb
157
- - test/hyperclient/collection_test.rb
158
- - test/hyperclient/curie_test.rb
159
- - test/hyperclient/entry_point_test.rb
160
- - test/hyperclient/link_collection_test.rb
161
- - test/hyperclient/link_test.rb
162
- - test/hyperclient/resource_collection_test.rb
163
- - test/hyperclient/resource_test.rb
164
- - test/hyperclient_test.rb
165
- - test/test_helper.rb
151
+ test_files: []
data/.travis.yml DELETED
@@ -1,24 +0,0 @@
1
- language: ruby
2
-
3
- sudo: false
4
-
5
- matrix:
6
- include:
7
- - rvm: 2.6.6
8
- env: FARADAY_VERSION=0.9.0
9
- - rvm: 2.6.6
10
- env: FARADAY_VERSION=0.17.0
11
- - rvm: 2.6.6
12
- env: FARADAY_VERSION="~> 1.0"
13
- - rvm: 2.6.6
14
- script:
15
- - bundle exec danger
16
- - rvm: 2.3.8
17
- - rvm: jruby-9.2.7.0
18
- - rvm: jruby-head
19
- - rvm: ruby-head
20
- allow_failures:
21
- - rvm: ruby-head
22
- - rvm: jruby-head
23
-
24
- bundler_args: --without development