fetch-api 0.3.0 → 0.3.2
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 +5 -5
- data/lib/fetch/client.rb +5 -15
- data/lib/{fetch.rb → fetch/errors.rb} +0 -2
- data/lib/fetch/headers.rb +13 -12
- data/lib/fetch/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5087cd966a296311bc208ed82ba9c4eb33cb7abb1ca1474efc611acdea73982
|
4
|
+
data.tar.gz: e58cb6110ac3a0e62945f486593c95d04096c80e495935a90e3a46de13211526
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b64dcee60dbe28b3700c53932ef584d900a5e112c0e2e13b8bb63627d6df3d835f4cba30beb340e15993087d482d7408a0d8dfa5ef62c47beffba08c44d8587
|
7
|
+
data.tar.gz: 676d8113e1edbe75d16389b23d24633e55fe5fd599195e989d87da2e22c248279e9d9ae272c36662e5a5dc750a28629c48c2708dd04709e007827ddf4c59d8f9
|
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: `
|
48
|
+
- `method`: HTTP method (default: `:get`)
|
49
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,12 +13,10 @@ 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
|
@@ -50,7 +48,7 @@ module Fetch
|
|
50
48
|
|
51
49
|
case res
|
52
50
|
when Net::HTTPRedirection
|
53
|
-
case redirect
|
51
|
+
case redirect.to_s
|
54
52
|
when 'follow'
|
55
53
|
fetch(res['Location'], method:, headers:, body:, redirect:, _redirected: true)
|
56
54
|
when 'error'
|
@@ -58,7 +56,7 @@ module Fetch
|
|
58
56
|
when 'manual'
|
59
57
|
to_response(resource, res, _redirected)
|
60
58
|
else
|
61
|
-
raise ArgumentError, "invalid redirect option: #{redirect}"
|
59
|
+
raise ArgumentError, "invalid redirect option: #{redirect.inspect}"
|
62
60
|
end
|
63
61
|
else
|
64
62
|
to_response(resource, res, _redirected)
|
@@ -68,18 +66,10 @@ module Fetch
|
|
68
66
|
private
|
69
67
|
|
70
68
|
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
69
|
Response.new(
|
80
70
|
url: ,
|
81
71
|
status: res.code.to_i,
|
82
|
-
headers: ,
|
72
|
+
headers: Headers.new(res),
|
83
73
|
body: res.body,
|
84
74
|
redirected:
|
85
75
|
)
|
data/lib/fetch/headers.rb
CHANGED
@@ -3,48 +3,49 @@ module Fetch
|
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
def initialize(init = [])
|
6
|
-
@
|
6
|
+
@data = {}
|
7
7
|
|
8
8
|
init.each do |k, v|
|
9
9
|
append k, v
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
attr_reader :entries
|
14
|
-
|
15
13
|
def append(key, value)
|
16
|
-
@
|
14
|
+
(@data[key.to_s.downcase] ||= []) << value
|
17
15
|
end
|
18
16
|
|
19
17
|
def delete(key)
|
20
|
-
@
|
18
|
+
@data.delete key.to_s.downcase
|
19
|
+
end
|
20
|
+
|
21
|
+
def entries
|
22
|
+
@data.map {|k, vs| [k, vs.join(', ')] }
|
21
23
|
end
|
22
24
|
|
23
25
|
def get(key)
|
24
|
-
@
|
26
|
+
@data[key.to_s.downcase]&.join(', ')
|
25
27
|
end
|
26
28
|
|
27
29
|
def has(key)
|
28
|
-
@
|
30
|
+
@data.key?(key.to_s.downcase)
|
29
31
|
end
|
30
32
|
|
31
33
|
def keys
|
32
|
-
@
|
34
|
+
@data.keys
|
33
35
|
end
|
34
36
|
|
35
37
|
def set(key, value)
|
36
|
-
|
37
|
-
append key, value
|
38
|
+
@data[key.to_s.downcase] = [value]
|
38
39
|
end
|
39
40
|
|
40
41
|
def values
|
41
|
-
@
|
42
|
+
@data.values.map { _1.join(', ') }
|
42
43
|
end
|
43
44
|
|
44
45
|
def each(&block)
|
45
46
|
return enum_for(:each) unless block_given?
|
46
47
|
|
47
|
-
|
48
|
+
entries.each(&block)
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
data/lib/fetch/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keita Urashima
|
@@ -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
|