footrest 0.5.8 → 0.6.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: 6e1edaefd5d1a604cc0bce710c44e6a8cd7757b31f32950a5de5b637755c2f31
4
- data.tar.gz: 61022350f362ef8cc04f1a8ec83c9e21645d314bac12b67984b234cd6b53570c
3
+ metadata.gz: 9ad26005a54e3b2f0b36f04bc5e23e9f1f67b8415d8a81357b6cf71f66c96c42
4
+ data.tar.gz: f78c68fbe3d73d34f0074979c027e77c50ba97b1e0631240b90e5cca5d0a695c
5
5
  SHA512:
6
- metadata.gz: d589575e6b52848baf5af15e0027111826343f6bbd596d7e1b142a0f5108618a09ad422e5720e23950f7d9743e1d6d511a551ef4d8e519cf03ec5332b8590c85
7
- data.tar.gz: 605dec8ec1e209bc6d685a70a8f18f0be7ca2baf202aa11ff7f867e7ec45a0f440b1549271a61d18629a2de0f99eedd188d8ea622a99cc134293fdb27d702b15
6
+ metadata.gz: 6558af15c808864590d8fe5e58ea63bb2112bd6dcda9ec705f8d29f03827b552227561c3a49d951b884169756c3eb5646c614af44795e037459925ba6933de99
7
+ data.tar.gz: a3cfdc52cda17871d48afbe8e2d467ca18e363d327d7eb203ef2a13c29f80957509805b5d96f892d3cd8401f246c2442ac10589da65b36f80d3465ea1e0f838e
data/Rakefile CHANGED
File without changes
data/footrest.gemspec CHANGED
@@ -25,9 +25,11 @@ Gem::Specification.new do |gem|
25
25
  gem.add_development_dependency "webmock"
26
26
  gem.add_development_dependency "pry"
27
27
  gem.add_development_dependency "byebug"
28
- gem.add_development_dependency "faraday", ">1.0.0", "< 2"
28
+ gem.add_development_dependency "appraisal", "~> 2.5"
29
+ gem.add_development_dependency "faraday", ">= 1.0", "< 3"
29
30
 
30
- gem.add_dependency "faraday", ">= 0.9.0", "< 2"
31
+ gem.add_dependency "faraday", ">= 1.0", "< 3"
32
+ gem.add_dependency "faraday-multipart", "~> 1.0"
31
33
  gem.add_dependency "activesupport", ">= 3.0.0"
32
34
 
33
35
  # Parses Link headers formatted according to RFC 5988 draft spec
File without changes
@@ -1,4 +1,5 @@
1
1
  require 'faraday'
2
+ require 'faraday/multipart'
2
3
  require 'footrest/http_error'
3
4
  require 'footrest/pagination'
4
5
  require 'footrest/follow_redirects'
@@ -14,10 +15,14 @@ module Footrest
14
15
  @connection = Faraday.new(url: config[:prefix]) do |faraday|
15
16
  faraday.request :multipart
16
17
  faraday.request :url_encoded
17
- if config[:logger] == true
18
- faraday.response :logger
19
- elsif config[:logger]
20
- faraday.use Faraday::Response::Logger, config[:logger]
18
+ if config[:logger]
19
+ logger = config[:logger] == true ? nil : config[:logger]
20
+ faraday.response :logger, logger do |formatter|
21
+ # Keep bearer tokens out of the logs. Faraday logs request headers
22
+ # by default, and dump_headers lives on the formatter in both 1.x
23
+ # and 2.x, so filter here rather than monkeypatching the logger.
24
+ formatter.filter(/(Authorization:\s*).*/i, '\1[FILTERED]')
25
+ end
21
26
  end
22
27
  faraday.use Footrest::FollowRedirects
23
28
  faraday.use Footrest::ParseJson, :content_type => /\bjson$/
File without changes
@@ -70,7 +70,7 @@ module Footrest
70
70
  end
71
71
  end
72
72
 
73
- class RaiseFootrestErrors < Faraday::Response::Middleware
73
+ class RaiseFootrestErrors < Faraday::Middleware
74
74
  ERROR_MAP = {
75
75
  400 => Footrest::HttpError::BadRequest,
76
76
  401 => Footrest::HttpError::Unauthorized,
@@ -1,7 +1,10 @@
1
+ require 'faraday'
1
2
  require 'link_header'
2
3
 
3
4
  module Footrest
4
- class Pagination < Faraday::Response::Middleware
5
+ # Faraday 2.x removed Faraday::Response::Middleware; the on_complete hook now
6
+ # lives on the unified Faraday::Middleware base (also present in 1.x).
7
+ class Pagination < Faraday::Middleware
5
8
  Links = Struct.new(:first, :prev, :current, :next, :last) do
6
9
  alias_method :previous, :prev
7
10
  alias_method :prevous=, :prev=
@@ -1,12 +1,10 @@
1
1
  require 'footrest/response_middleware'
2
2
 
3
+ require 'json'
4
+
3
5
  module Footrest
4
6
  # Public: Parse response bodies as JSON.
5
7
  class ParseJson < ResponseMiddleware
6
- dependency do
7
- require 'json' unless defined?(::JSON)
8
- end
9
-
10
8
  define_parser do |body|
11
9
  ::JSON.parse body unless body.strip.empty?
12
10
  end
File without changes
@@ -1,3 +1,3 @@
1
1
  module Footrest
2
- VERSION = '0.5.8' unless defined?(Footrest::VERSION)
2
+ VERSION = '0.6.0' unless defined?(Footrest::VERSION)
3
3
  end
data/lib/footrest.rb CHANGED
@@ -4,18 +4,3 @@ require 'footrest/version'
4
4
 
5
5
  module Footrest
6
6
  end
7
-
8
- module Faraday
9
- class Response::Logger < Response::Middleware
10
- private
11
-
12
- SENSITIVE_HEADERS = %w{Authorization}
13
- def dump_headers(headers)
14
- return "empty headers" unless headers
15
- headers.map { |k, v|
16
- message = "#{k}: "
17
- message << (SENSITIVE_HEADERS.include?(k) ? "[filtered]" : v.inspect)
18
- }.join("\n")
19
- end
20
- end
21
- end
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ require_relative '../spec_helper'
2
+ require 'logger'
3
+ require 'stringio'
4
+
5
+ describe "Footrest request logging" do
6
+ let(:io) { StringIO.new }
7
+ let(:client) do
8
+ Footrest::Client.new(
9
+ prefix: "http://domain.test",
10
+ token: "s3cr3t~deadbeef",
11
+ logger: ::Logger.new(io)
12
+ )
13
+ end
14
+
15
+ before do
16
+ stub_request(:get, "http://domain.test/page").
17
+ to_return(status: 200, body: "{}", headers: { content_type: "application/json" })
18
+ end
19
+
20
+ it "redacts the Authorization bearer token from the logs" do
21
+ client.get("/page")
22
+
23
+ expect(io.string).to include("Authorization: [FILTERED]")
24
+ expect(io.string).not_to include("s3cr3t~deadbeef")
25
+ end
26
+ end
File without changes
File without changes
data/spec/spec_helper.rb CHANGED
File without changes
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: footrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.8
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Duane Johnson
8
8
  - Nathan Mills
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2024-08-01 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
@@ -95,46 +94,74 @@ dependencies:
95
94
  - - ">="
96
95
  - !ruby/object:Gem::Version
97
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: appraisal
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.5'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.5'
98
111
  - !ruby/object:Gem::Dependency
99
112
  name: faraday
100
113
  requirement: !ruby/object:Gem::Requirement
101
114
  requirements:
102
- - - ">"
115
+ - - ">="
103
116
  - !ruby/object:Gem::Version
104
- version: 1.0.0
117
+ version: '1.0'
105
118
  - - "<"
106
119
  - !ruby/object:Gem::Version
107
- version: '2'
120
+ version: '3'
108
121
  type: :development
109
122
  prerelease: false
110
123
  version_requirements: !ruby/object:Gem::Requirement
111
124
  requirements:
112
- - - ">"
125
+ - - ">="
113
126
  - !ruby/object:Gem::Version
114
- version: 1.0.0
127
+ version: '1.0'
115
128
  - - "<"
116
129
  - !ruby/object:Gem::Version
117
- version: '2'
130
+ version: '3'
118
131
  - !ruby/object:Gem::Dependency
119
132
  name: faraday
120
133
  requirement: !ruby/object:Gem::Requirement
121
134
  requirements:
122
135
  - - ">="
123
136
  - !ruby/object:Gem::Version
124
- version: 0.9.0
137
+ version: '1.0'
125
138
  - - "<"
126
139
  - !ruby/object:Gem::Version
127
- version: '2'
140
+ version: '3'
128
141
  type: :runtime
129
142
  prerelease: false
130
143
  version_requirements: !ruby/object:Gem::Requirement
131
144
  requirements:
132
145
  - - ">="
133
146
  - !ruby/object:Gem::Version
134
- version: 0.9.0
147
+ version: '1.0'
135
148
  - - "<"
136
149
  - !ruby/object:Gem::Version
137
- version: '2'
150
+ version: '3'
151
+ - !ruby/object:Gem::Dependency
152
+ name: faraday-multipart
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '1.0'
158
+ type: :runtime
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '1.0'
138
165
  - !ruby/object:Gem::Dependency
139
166
  name: activesupport
140
167
  requirement: !ruby/object:Gem::Requirement
@@ -185,6 +212,7 @@ files:
185
212
  - lib/footrest/version.rb
186
213
  - spec/footrest/client_spec.rb
187
214
  - spec/footrest/http_error_spec.rb
215
+ - spec/footrest/logger_spec.rb
188
216
  - spec/footrest/pagination_spec.rb
189
217
  - spec/footrest/request_spec.rb
190
218
  - spec/spec_helper.rb
@@ -192,7 +220,6 @@ homepage: https://github.com/instructure/footrest
192
220
  licenses:
193
221
  - MIT
194
222
  metadata: {}
195
- post_install_message:
196
223
  rdoc_options: []
197
224
  require_paths:
198
225
  - lib
@@ -207,13 +234,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
234
  - !ruby/object:Gem::Version
208
235
  version: '0'
209
236
  requirements: []
210
- rubygems_version: 3.5.4
211
- signing_key:
237
+ rubygems_version: 3.6.9
212
238
  specification_version: 4
213
239
  summary: REST APIs
214
240
  test_files:
215
241
  - spec/footrest/client_spec.rb
216
242
  - spec/footrest/http_error_spec.rb
243
+ - spec/footrest/logger_spec.rb
217
244
  - spec/footrest/pagination_spec.rb
218
245
  - spec/footrest/request_spec.rb
219
246
  - spec/spec_helper.rb