vertebrae 1.0.5 → 2.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: b16228cd60f59bb053ae8ebbdd28301615a1f6ade77566e3b054a157d0f484ae
4
- data.tar.gz: 7c8db822e05cdce4987aac0c36c21fd4d5f132999a2d90a54012154d39732578
3
+ metadata.gz: '0393bb3e854f2be0c8322419a19744b7a5e70058181479f3c2451f5aad97a9d0'
4
+ data.tar.gz: dcc4c063990ec31d642f1e25322419afde5f1e8e531a229cf86b50c62bb6da35
5
5
  SHA512:
6
- metadata.gz: 616886b82ccababdda3957bbd06e7c42367093e63a0b371211b969755f533c38db20da868bd2f14a5bc6cf1ab34dc80f14d8137aa10c529cdd75671c5a5840ca
7
- data.tar.gz: 3bacb516caac9af5d8d1022f5add4ea9a45b8f4b2b3fe1ea1e8a804466d2b3e4bc1124c17039d64333398fdea9d6a10308befb9dab64338e7d85f861eb39ceb2
6
+ metadata.gz: a78d58712f4c8660712155b71506caa353c02939e5c6788f077fa7d570e836e30d3cf3cf506de703e2dda0b811c1ef942a0837e283dd2918a73289b5ebd51395
7
+ data.tar.gz: cfcd259949eb37f628548788d133c3737ac1c7eab7ffe3432b34ec8eefb9a7de23d9c9fd8a00a6964b34182088bb409957769d5aaf77238a92465579f68a9311
@@ -4,21 +4,22 @@ on: [push]
4
4
  jobs:
5
5
  test:
6
6
  runs-on: ubuntu-latest
7
+ strategy:
8
+ matrix:
9
+ ruby-version: ['3.4', '4.0']
7
10
  steps:
8
- - uses: actions/checkout@v2
9
- - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6
11
+ - uses: actions/checkout@v4
12
+ - uses: ruby/setup-ruby@v1
10
13
  with:
11
- ruby-version: 2.7
14
+ ruby-version: ${{ matrix.ruby-version }}
12
15
  bundler-cache: true
13
- - run: bundle install
14
16
  - run: bundle exec rspec
15
17
  rubocop:
16
18
  runs-on: ubuntu-latest
17
19
  steps:
18
- - uses: actions/checkout@v2
19
- - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6
20
+ - uses: actions/checkout@v4
21
+ - uses: ruby/setup-ruby@v1
20
22
  with:
21
- ruby-version: 2.7
23
+ ruby-version: '4.0'
22
24
  bundler-cache: true
23
- - run: bundle install
24
25
  - run: bundle exec rubocop
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.2.2
1
+ 4.0.1
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ ## [2.0.0] - 2026-09-28
4
+
5
+ ### Fixed
6
+ - The default `/` prefix was applied twice when building request paths, so a caller path that
7
+ already started with `/` produced a leading `//`. Faraday treats that as a protocol-relative URL
8
+ and mangles it, yielding malformed URLs like `https://host////api/path` that some upstream APIs
9
+ reject at the edge with a bare 403.
10
+
11
+ ### Breaking Changes
12
+ - Dropped support for Ruby versions older than 3.4. Officially supported versions are Ruby 3.4 and 4.0.
13
+ - Pinned `faraday` to `~> 2.0` (previously unbounded above `2.0`).
data/Gemfile CHANGED
@@ -1,16 +1,6 @@
1
- source "http://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- gem 'activesupport', '>= 5.1.4'
4
- gem 'faraday', '> 2.0'
5
- gem 'faraday-mashify'
6
- gem 'faraday-multipart'
3
+ source 'https://rubygems.org'
7
4
 
8
- # Add dependencies to develop your gem here.
9
- # Include everything needed to run rake, tests, features, etc.
10
- group :development do
11
- gem "rspec"
12
- gem "bundler"
13
- gem "webmock"
14
- gem "rspec-its"
15
- gem "rubocop"
16
- end
5
+ # Specify your gem's dependencies in vertebrae.gemspec
6
+ gemspec
data/README.md CHANGED
@@ -4,6 +4,11 @@ Some basic infrastructure for writing beautiful API clients. See tijuana\_client
4
4
 
5
5
  [![CI Status](https://github.com/controlshift/vertebrae/actions/workflows/ci.yml/badge.svg)](https://github.com/controlshift/vertebrae/actions/workflows/ci.yml)
6
6
 
7
+ ## Requirements
8
+
9
+ - Ruby 3.4 or 4.0
10
+ - Faraday ~> 2.0
11
+
7
12
  ## Development
8
13
 
9
14
  After checking out the repo, run `bundle install` to install dependencies. Then, run `rake spec` to run the tests.
data/Rakefile CHANGED
@@ -1,39 +1,8 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
4
- require 'bundler'
5
3
  require 'bundler/gem_tasks'
6
-
7
-
8
- begin
9
- Bundler.setup(:default, :development)
10
- rescue Bundler::BundlerError => e
11
- $stderr.puts e.message
12
- $stderr.puts "Run `bundle install` to install missing gems"
13
- exit e.status_code
14
- end
15
- require 'rake'
16
-
17
- require 'rspec/core'
18
4
  require 'rspec/core/rake_task'
19
- RSpec::Core::RakeTask.new(:spec) do |spec|
20
- spec.pattern = FileList['spec/**/*_spec.rb']
21
- end
22
-
23
- desc "Code coverage detail"
24
- task :simplecov do
25
- ENV['COVERAGE'] = "true"
26
- Rake::Task['spec'].execute
27
- end
28
-
29
- task :default => :spec
30
5
 
31
- require 'rdoc/task'
32
- Rake::RDocTask.new do |rdoc|
33
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
6
+ RSpec::Core::RakeTask.new(:spec)
34
7
 
35
- rdoc.rdoc_dir = 'rdoc'
36
- rdoc.title = "vertebrae #{version}"
37
- rdoc.rdoc_files.include('README*')
38
- rdoc.rdoc_files.include('lib/**/*.rb')
39
- end
8
+ task default: :spec
@@ -32,7 +32,8 @@ module Vertebrae
32
32
  end
33
33
  connection.options = default_options.merge(initialisation_options.merge(options))
34
34
 
35
- path = connection.configuration.prefix + '/' + path
35
+ # Avoid a leading '//' here — Faraday treats it as a protocol-relative URL and mangles the path.
36
+ path = File.join(connection.configuration.prefix.to_s, path.to_s.delete_prefix('/'))
36
37
 
37
38
  ::Vertebrae::Base.logger.debug "EXECUTED: #{method} - #{path} with #{params} and #{options}"
38
39
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vertebrae
4
- VERSION = '1.0.5'
4
+ VERSION = '2.0.0'
5
5
  end
data/vertebrae.gemspec CHANGED
@@ -4,45 +4,45 @@ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'vertebrae/version'
6
6
 
7
- Gem::Specification.new do |s|
8
- s.name = "vertebrae".freeze
9
- s.version = Vertebrae::VERSION
10
-
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["Nathan Woodhull".freeze]
14
- s.date = "2021-07-23"
15
- s.description = "A set of low level infrastructure and reusable code for building API clients".freeze
16
- s.email = "nathan@controlshiftlabs.com".freeze
17
- s.extra_rdoc_files = [
18
- "LICENSE.txt",
19
- "README.md"
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'vertebrae'
9
+ spec.version = Vertebrae::VERSION
10
+ spec.authors = ['Nathan Woodhull', 'Owens Ehimen']
11
+ spec.email = ['talk@controlshiftlabs.com']
12
+
13
+ spec.summary = 'API Client Infrastructure'
14
+ spec.description = 'A set of low level infrastructure and reusable code for building API clients'
15
+ spec.homepage = 'https://github.com/controlshift/vertebrae'
16
+ spec.license = 'MIT'
17
+
18
+ spec.extra_rdoc_files = [
19
+ 'LICENSE.txt',
20
+ 'README.md'
20
21
  ]
21
22
 
22
23
  # Specify which files should be added to the gem when it is released.
23
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
- s.files = Dir.chdir(File.expand_path(__dir__)) do
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
27
  end
28
+ spec.require_paths = ['lib']
27
29
 
28
- s.homepage = "http://github.com/controlshift/vertebrae".freeze
29
- s.licenses = ["MIT".freeze]
30
- s.summary = "API Client Infrastructure".freeze
30
+ spec.required_ruby_version = ['>= 3.4', '< 5.0']
31
31
 
32
- if s.respond_to? :specification_version then
33
- s.specification_version = 4
34
- end
32
+ # Runtime dependencies
33
+ spec.add_runtime_dependency 'activesupport', '>= 6.1'
34
+ spec.add_runtime_dependency 'faraday', '~> 2.0'
35
+ spec.add_runtime_dependency 'faraday-mashify', '~> 1.0'
36
+ spec.add_runtime_dependency 'faraday-multipart', '~> 1.0'
37
+
38
+ # Development dependencies
39
+ spec.add_development_dependency 'bundler', '>= 2.0', '< 5.0'
40
+ spec.add_development_dependency 'rake', '~> 13.0'
41
+ spec.add_development_dependency 'rspec', '~> 3.0'
42
+ spec.add_development_dependency 'rspec-its', '~> 2.0'
43
+ spec.add_development_dependency 'rubocop', '~> 1.0'
44
+ spec.add_development_dependency 'webmock', '~> 3.0'
35
45
 
36
- s.add_runtime_dependency(%q<activesupport>.freeze, [">= 5.1.4"])
37
- s.add_runtime_dependency(%q<faraday>.freeze, ["~> 2"])
38
- s.add_runtime_dependency(%q<faraday-mashify>.freeze, [">= 0"])
39
- s.add_runtime_dependency(%q<faraday-multipart>.freeze, [">= 0"])
40
-
41
- s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
42
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
43
- s.add_development_dependency(%q<webmock>.freeze, [">= 0"])
44
- s.add_development_dependency(%q<rspec-its>.freeze, [">= 0"])
45
- s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
46
- s.add_development_dependency(%q<rubocop>.freeze, [">= 0"])
46
+ spec.metadata['rubygems_mfa_required'] = 'true'
47
47
  end
48
48
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vertebrae
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Woodhull
8
- autorequire:
8
+ - Owens Ehimen
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-23 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,143 +16,150 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.1.4
19
+ version: '6.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 5.1.4
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2'
33
+ version: '2.0'
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: '2'
40
+ version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday-mashify
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '1.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '1.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: faraday-multipart
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.0'
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: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '2.0'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '5.0'
76
79
  type: :development
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
79
82
  requirements:
80
83
  - - ">="
81
84
  - !ruby/object:Gem::Version
82
- version: '0'
85
+ version: '2.0'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '5.0'
83
89
  - !ruby/object:Gem::Dependency
84
- name: bundler
90
+ name: rake
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ">="
93
+ - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '0'
95
+ version: '13.0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ">="
100
+ - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '0'
102
+ version: '13.0'
97
103
  - !ruby/object:Gem::Dependency
98
- name: webmock
104
+ name: rspec
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ">="
107
+ - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '0'
109
+ version: '3.0'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ">="
114
+ - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: '0'
116
+ version: '3.0'
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: rspec-its
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ">="
121
+ - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: '0'
123
+ version: '2.0'
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ">="
128
+ - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: '0'
130
+ version: '2.0'
125
131
  - !ruby/object:Gem::Dependency
126
- name: juwelier
132
+ name: rubocop
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
- - - ">="
135
+ - - "~>"
130
136
  - !ruby/object:Gem::Version
131
- version: '0'
137
+ version: '1.0'
132
138
  type: :development
133
139
  prerelease: false
134
140
  version_requirements: !ruby/object:Gem::Requirement
135
141
  requirements:
136
- - - ">="
142
+ - - "~>"
137
143
  - !ruby/object:Gem::Version
138
- version: '0'
144
+ version: '1.0'
139
145
  - !ruby/object:Gem::Dependency
140
- name: rubocop
146
+ name: webmock
141
147
  requirement: !ruby/object:Gem::Requirement
142
148
  requirements:
143
- - - ">="
149
+ - - "~>"
144
150
  - !ruby/object:Gem::Version
145
- version: '0'
151
+ version: '3.0'
146
152
  type: :development
147
153
  prerelease: false
148
154
  version_requirements: !ruby/object:Gem::Requirement
149
155
  requirements:
150
- - - ">="
156
+ - - "~>"
151
157
  - !ruby/object:Gem::Version
152
- version: '0'
158
+ version: '3.0'
153
159
  description: A set of low level infrastructure and reusable code for building API
154
160
  clients
155
- email: nathan@controlshiftlabs.com
161
+ email:
162
+ - talk@controlshiftlabs.com
156
163
  executables: []
157
164
  extensions: []
158
165
  extra_rdoc_files:
@@ -164,8 +171,8 @@ files:
164
171
  - ".gitignore"
165
172
  - ".rspec"
166
173
  - ".rubocop.yml"
167
- - ".ruby-gemset"
168
174
  - ".ruby-version"
175
+ - CHANGELOG.md
169
176
  - Gemfile
170
177
  - LICENSE.txt
171
178
  - README.md
@@ -186,11 +193,11 @@ files:
186
193
  - lib/vertebrae/response_error.rb
187
194
  - lib/vertebrae/version.rb
188
195
  - vertebrae.gemspec
189
- homepage: http://github.com/controlshift/vertebrae
196
+ homepage: https://github.com/controlshift/vertebrae
190
197
  licenses:
191
198
  - MIT
192
- metadata: {}
193
- post_install_message:
199
+ metadata:
200
+ rubygems_mfa_required: 'true'
194
201
  rdoc_options: []
195
202
  require_paths:
196
203
  - lib
@@ -198,15 +205,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
198
205
  requirements:
199
206
  - - ">="
200
207
  - !ruby/object:Gem::Version
201
- version: '0'
208
+ version: '3.4'
209
+ - - "<"
210
+ - !ruby/object:Gem::Version
211
+ version: '5.0'
202
212
  required_rubygems_version: !ruby/object:Gem::Requirement
203
213
  requirements:
204
214
  - - ">="
205
215
  - !ruby/object:Gem::Version
206
216
  version: '0'
207
217
  requirements: []
208
- rubygems_version: 3.4.10
209
- signing_key:
218
+ rubygems_version: 4.0.3
210
219
  specification_version: 4
211
220
  summary: API Client Infrastructure
212
221
  test_files: []
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- vertebrae