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 +4 -4
- data/Rakefile +0 -0
- data/footrest.gemspec +4 -2
- data/lib/footrest/client.rb +0 -0
- data/lib/footrest/connection.rb +9 -4
- data/lib/footrest/follow_redirects.rb +0 -0
- data/lib/footrest/http_error.rb +1 -1
- data/lib/footrest/pagination.rb +4 -1
- data/lib/footrest/parse_json.rb +2 -4
- data/lib/footrest/response_middleware.rb +0 -0
- data/lib/footrest/version.rb +1 -1
- data/lib/footrest.rb +0 -15
- data/spec/footrest/client_spec.rb +0 -0
- data/spec/footrest/http_error_spec.rb +0 -0
- data/spec/footrest/logger_spec.rb +26 -0
- data/spec/footrest/pagination_spec.rb +0 -0
- data/spec/footrest/request_spec.rb +0 -0
- data/spec/spec_helper.rb +0 -0
- metadata +43 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9ad26005a54e3b2f0b36f04bc5e23e9f1f67b8415d8a81357b6cf71f66c96c42
|
|
4
|
+
data.tar.gz: f78c68fbe3d73d34f0074979c027e77c50ba97b1e0631240b90e5cca5d0a695c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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 "
|
|
28
|
+
gem.add_development_dependency "appraisal", "~> 2.5"
|
|
29
|
+
gem.add_development_dependency "faraday", ">= 1.0", "< 3"
|
|
29
30
|
|
|
30
|
-
gem.add_dependency "faraday", ">=
|
|
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
|
data/lib/footrest/client.rb
CHANGED
|
File without changes
|
data/lib/footrest/connection.rb
CHANGED
|
@@ -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]
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
data/lib/footrest/http_error.rb
CHANGED
data/lib/footrest/pagination.rb
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
require 'faraday'
|
|
1
2
|
require 'link_header'
|
|
2
3
|
|
|
3
4
|
module Footrest
|
|
4
|
-
|
|
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=
|
data/lib/footrest/parse_json.rb
CHANGED
|
@@ -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
|
data/lib/footrest/version.rb
CHANGED
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.
|
|
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:
|
|
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
|
|
117
|
+
version: '1.0'
|
|
105
118
|
- - "<"
|
|
106
119
|
- !ruby/object:Gem::Version
|
|
107
|
-
version: '
|
|
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
|
|
127
|
+
version: '1.0'
|
|
115
128
|
- - "<"
|
|
116
129
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
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:
|
|
137
|
+
version: '1.0'
|
|
125
138
|
- - "<"
|
|
126
139
|
- !ruby/object:Gem::Version
|
|
127
|
-
version: '
|
|
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:
|
|
147
|
+
version: '1.0'
|
|
135
148
|
- - "<"
|
|
136
149
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: '
|
|
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.
|
|
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
|