fetch-api 0.3.1 → 0.3.3
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/README.md +6 -6
- data/lib/fetch/client.rb +8 -20
- data/lib/{fetch.rb → fetch/errors.rb} +0 -2
- data/lib/fetch/form_data.rb +0 -2
- data/lib/fetch/headers.rb +0 -2
- data/lib/fetch/response.rb +2 -2
- data/lib/fetch/url_search_params.rb +0 -2
- data/lib/fetch/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b10573a6b8299637e5e694f582aeca98a5f6a98f034b5995715a1047e1fd52d
|
4
|
+
data.tar.gz: 704d073756a119bea36d3a65d2528726cb8ee514e94b70172f209577d4bca3b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08f6657f264bbba58bdddda3f923c886cda73d5f853bfa3dfdea14896e35da915409a8408d2c0e08396db177f9fdc91e3807d91a241267157bbc801c914f0d93'
|
7
|
+
data.tar.gz: d8909c92cda908f4732280183f6e09317c1f51a899dabfb36aa2b5066c6bf69616ee8b3e6c4222c36936f6333743619274306b6467f7079234648e9b81c57cbb
|
data/README.md
CHANGED
@@ -45,10 +45,10 @@ res = fetch('https://example.com')
|
|
45
45
|
|
46
46
|
Options for `fetch` method:
|
47
47
|
|
48
|
-
- `method`: HTTP method (default: `
|
49
|
-
- `headers`: Request headers (default: `
|
48
|
+
- `method`: HTTP method (default: `:get`)
|
49
|
+
- `headers`: Request headers (default: `[]`)
|
50
50
|
- `body`: Request body (default: `nil`)
|
51
|
-
- `redirect`: Follow redirects (one of
|
51
|
+
- `redirect`: Follow redirects (one of `:follow`, `:error`, `:manual`, default: `:follow`)
|
52
52
|
|
53
53
|
Methods of `Fetch::Response` object:
|
54
54
|
|
@@ -65,7 +65,7 @@ Methods of `Fetch::Response` object:
|
|
65
65
|
|
66
66
|
``` ruby
|
67
67
|
res = fetch('http://example.com', **{
|
68
|
-
method:
|
68
|
+
method: :post,
|
69
69
|
|
70
70
|
headers: {
|
71
71
|
'Content-Type' => 'application/json'
|
@@ -81,7 +81,7 @@ res = fetch('http://example.com', **{
|
|
81
81
|
|
82
82
|
``` ruby
|
83
83
|
res = fetch('http://example.com', **{
|
84
|
-
method:
|
84
|
+
method: :post,
|
85
85
|
|
86
86
|
body: Fetch::URLSearchParams.new(
|
87
87
|
name: 'Alice'
|
@@ -93,7 +93,7 @@ res = fetch('http://example.com', **{
|
|
93
93
|
|
94
94
|
``` ruby
|
95
95
|
res = fetch('http://example.com', **{
|
96
|
-
method:
|
96
|
+
method: :post,
|
97
97
|
|
98
98
|
body: Fetch::FormData.build(
|
99
99
|
name: 'Alice',
|
data/lib/fetch/client.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'errors'
|
2
2
|
require_relative 'form_data'
|
3
3
|
require_relative 'headers'
|
4
4
|
require_relative 'response'
|
@@ -13,32 +13,28 @@ module Fetch
|
|
13
13
|
class Client
|
14
14
|
include Singleton
|
15
15
|
|
16
|
-
def fetch(resource, method:
|
16
|
+
def fetch(resource, method: :get, headers: [], body: nil, redirect: :follow, _redirected: false)
|
17
17
|
uri = URI.parse(resource)
|
18
18
|
req = Net::HTTP.const_get(method.capitalize).new(uri)
|
19
19
|
|
20
|
-
headers = Headers.new(headers) unless headers.is_a?(Headers)
|
21
|
-
|
22
20
|
headers.each do |k, v|
|
23
21
|
req[k] = v
|
24
22
|
end
|
25
23
|
|
26
24
|
case body
|
27
25
|
when FormData
|
28
|
-
req.set_form body.
|
26
|
+
req.set_form body.map {|k, v|
|
29
27
|
if v.is_a?(File)
|
30
28
|
[k, v, {
|
31
29
|
filename: File.basename(v.path),
|
32
|
-
content_type: Marcel::MimeType.for(v)
|
30
|
+
content_type: Marcel::MimeType.for(name: v.path)
|
33
31
|
}]
|
34
32
|
else
|
35
33
|
[k, v]
|
36
34
|
end
|
37
35
|
}, 'multipart/form-data'
|
38
36
|
when URLSearchParams
|
39
|
-
req
|
40
|
-
|
41
|
-
req.body = body.to_s
|
37
|
+
req.set_form_data body.entries
|
42
38
|
else
|
43
39
|
req.body = body
|
44
40
|
end
|
@@ -50,7 +46,7 @@ module Fetch
|
|
50
46
|
|
51
47
|
case res
|
52
48
|
when Net::HTTPRedirection
|
53
|
-
case redirect
|
49
|
+
case redirect.to_s
|
54
50
|
when 'follow'
|
55
51
|
fetch(res['Location'], method:, headers:, body:, redirect:, _redirected: true)
|
56
52
|
when 'error'
|
@@ -58,7 +54,7 @@ module Fetch
|
|
58
54
|
when 'manual'
|
59
55
|
to_response(resource, res, _redirected)
|
60
56
|
else
|
61
|
-
raise ArgumentError, "invalid redirect option: #{redirect}"
|
57
|
+
raise ArgumentError, "invalid redirect option: #{redirect.inspect}"
|
62
58
|
end
|
63
59
|
else
|
64
60
|
to_response(resource, res, _redirected)
|
@@ -68,18 +64,10 @@ module Fetch
|
|
68
64
|
private
|
69
65
|
|
70
66
|
def to_response(url, res, redirected)
|
71
|
-
headers = Headers.new
|
72
|
-
|
73
|
-
res.each do |k, vs|
|
74
|
-
vs.split(', ').each do |v|
|
75
|
-
headers.append k, v
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
67
|
Response.new(
|
80
68
|
url: ,
|
81
69
|
status: res.code.to_i,
|
82
|
-
headers: ,
|
70
|
+
headers: Headers.new(res),
|
83
71
|
body: res.body,
|
84
72
|
redirected:
|
85
73
|
)
|
data/lib/fetch/form_data.rb
CHANGED
data/lib/fetch/headers.rb
CHANGED
data/lib/fetch/response.rb
CHANGED
data/lib/fetch/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fetch-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keita Urashima
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: marcel
|
@@ -90,9 +90,9 @@ files:
|
|
90
90
|
- LICENSE.txt
|
91
91
|
- README.md
|
92
92
|
- lib/fetch-api.rb
|
93
|
-
- lib/fetch.rb
|
94
93
|
- lib/fetch/api.rb
|
95
94
|
- lib/fetch/client.rb
|
95
|
+
- lib/fetch/errors.rb
|
96
96
|
- lib/fetch/form_data.rb
|
97
97
|
- lib/fetch/headers.rb
|
98
98
|
- lib/fetch/response.rb
|