fetch-api 0.3.3 → 0.3.5
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/lib/fetch/client.rb +8 -7
- data/lib/fetch/form_data.rb +3 -3
- data/lib/fetch/headers.rb +3 -3
- data/lib/fetch/response.rb +14 -2
- data/lib/fetch/url_search_params.rb +3 -3
- data/lib/fetch/version.rb +1 -1
- data/sig/fetch/api.rbs +11 -0
- data/sig/fetch/client.rbs +18 -0
- data/sig/fetch/errors.rbs +7 -0
- data/sig/fetch/form_data.rbs +22 -0
- data/sig/fetch/headers.rbs +16 -0
- data/sig/fetch/response.rbs +16 -0
- data/sig/fetch/url_search_params.rbs +20 -0
- data/sig/fetch.rbs +4 -1
- metadata +24 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2ece1d340c0de1c25cf5ff54b2faa9282e457a398b1e02e8b1254c869643e63
|
4
|
+
data.tar.gz: af89501158b402c8b5a2d5ac6961a93546b5a6caa78c8f27492ff1b0fc4b5be4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f42136117dc9ff72634fdd12774dd6bc270d3c7f58363a0b78c74e216f12b241d35f60329f3957219d79a3d6b81ffb1b73917a7788647252b42a5271056df5fb
|
7
|
+
data.tar.gz: 9902db054b692dc72bd645c7d7030ec7392369d41e70d3d27b64b19f871294749e065eae638604b23ab418133a16c0b13d444bb132aab96274327482c516ecff
|
data/lib/fetch/client.rb
CHANGED
@@ -4,8 +4,9 @@ require_relative 'headers'
|
|
4
4
|
require_relative 'response'
|
5
5
|
require_relative 'url_search_params'
|
6
6
|
|
7
|
-
require '
|
7
|
+
require 'mini_mime'
|
8
8
|
require 'net/http'
|
9
|
+
require 'net/https'
|
9
10
|
require 'singleton'
|
10
11
|
require 'uri'
|
11
12
|
|
@@ -18,7 +19,7 @@ module Fetch
|
|
18
19
|
req = Net::HTTP.const_get(method.capitalize).new(uri)
|
19
20
|
|
20
21
|
headers.each do |k, v|
|
21
|
-
req[k] = v
|
22
|
+
req[k.to_s] = v.to_s
|
22
23
|
end
|
23
24
|
|
24
25
|
case body
|
@@ -27,7 +28,7 @@ module Fetch
|
|
27
28
|
if v.is_a?(File)
|
28
29
|
[k, v, {
|
29
30
|
filename: File.basename(v.path),
|
30
|
-
content_type:
|
31
|
+
content_type: MiniMime.lookup_by_filename(v.path)&.content_type || 'application/octet-stream'
|
31
32
|
}]
|
32
33
|
else
|
33
34
|
[k, v]
|
@@ -39,7 +40,7 @@ module Fetch
|
|
39
40
|
req.body = body
|
40
41
|
end
|
41
42
|
|
42
|
-
http = Net::HTTP.new(uri.hostname, uri.port)
|
43
|
+
http = Net::HTTP.new(uri.hostname, uri.port) # steep:ignore ArgumentTypeMismatch
|
43
44
|
http.use_ssl = uri.scheme == 'https'
|
44
45
|
|
45
46
|
res = http.start { _1.request(req) }
|
@@ -48,7 +49,7 @@ module Fetch
|
|
48
49
|
when Net::HTTPRedirection
|
49
50
|
case redirect.to_s
|
50
51
|
when 'follow'
|
51
|
-
fetch(res['Location'], method:, headers:, body:, redirect:, _redirected: true)
|
52
|
+
fetch(res['Location'], method:, headers:, body:, redirect:, _redirected: true) # steep:ignore ArgumentTypeMismatch
|
52
53
|
when 'error'
|
53
54
|
raise RedirectError, "redirected to #{res['Location']}"
|
54
55
|
when 'manual'
|
@@ -65,9 +66,9 @@ module Fetch
|
|
65
66
|
|
66
67
|
def to_response(url, res, redirected)
|
67
68
|
Response.new(
|
68
|
-
url: ,
|
69
|
+
url: url.to_str,
|
69
70
|
status: res.code.to_i,
|
70
|
-
headers: Headers.new(res),
|
71
|
+
headers: Headers.new(res.each),
|
71
72
|
body: res.body,
|
72
73
|
redirected:
|
73
74
|
)
|
data/lib/fetch/form_data.rb
CHANGED
@@ -19,7 +19,7 @@ module Fetch
|
|
19
19
|
attr_reader :entries
|
20
20
|
|
21
21
|
def append(key, value)
|
22
|
-
@entries.push [key.to_s, value]
|
22
|
+
@entries.push [key.to_s, value.is_a?(File) ? value : value.to_s]
|
23
23
|
end
|
24
24
|
|
25
25
|
def delete(key)
|
@@ -51,8 +51,8 @@ module Fetch
|
|
51
51
|
@entries.map(&:last)
|
52
52
|
end
|
53
53
|
|
54
|
-
def each(&
|
55
|
-
@entries.each(&
|
54
|
+
def each(&)
|
55
|
+
@entries.each(&)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
data/lib/fetch/headers.rb
CHANGED
@@ -11,7 +11,7 @@ module Fetch
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def append(key, value)
|
14
|
-
(@data[key.to_s.downcase] ||= []) << value
|
14
|
+
(@data[key.to_s.downcase] ||= []) << value.to_s
|
15
15
|
end
|
16
16
|
|
17
17
|
def delete(key)
|
@@ -42,8 +42,8 @@ module Fetch
|
|
42
42
|
@data.values.map { _1.join(', ') }
|
43
43
|
end
|
44
44
|
|
45
|
-
def each(&
|
46
|
-
entries.each(&
|
45
|
+
def each(&)
|
46
|
+
entries.each(&)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
data/lib/fetch/response.rb
CHANGED
@@ -2,7 +2,17 @@ require 'json'
|
|
2
2
|
require 'rack/utils'
|
3
3
|
|
4
4
|
module Fetch
|
5
|
-
Response
|
5
|
+
class Response
|
6
|
+
def initialize(url:, status:, headers:, body:, redirected:)
|
7
|
+
@url = url
|
8
|
+
@status = status
|
9
|
+
@headers = headers
|
10
|
+
@body = body
|
11
|
+
@redirected = redirected
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_reader :url, :status, :headers, :body, :redirected
|
15
|
+
|
6
16
|
def ok
|
7
17
|
status.between?(200, 299)
|
8
18
|
end
|
@@ -12,7 +22,9 @@ module Fetch
|
|
12
22
|
end
|
13
23
|
|
14
24
|
def json(...)
|
25
|
+
return nil unless body
|
26
|
+
|
15
27
|
JSON.parse(body, ...)
|
16
28
|
end
|
17
|
-
|
29
|
+
end
|
18
30
|
end
|
@@ -22,7 +22,7 @@ module Fetch
|
|
22
22
|
attr_reader :entries
|
23
23
|
|
24
24
|
def append(key, value)
|
25
|
-
@entries.push [key.to_s, value]
|
25
|
+
@entries.push [key.to_s, value.to_s]
|
26
26
|
end
|
27
27
|
|
28
28
|
def delete(key)
|
@@ -62,8 +62,8 @@ module Fetch
|
|
62
62
|
@entries.map(&:last)
|
63
63
|
end
|
64
64
|
|
65
|
-
def each(&
|
66
|
-
@entries.each(&
|
65
|
+
def each(&)
|
66
|
+
@entries.each(&)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
data/lib/fetch/version.rb
CHANGED
data/sig/fetch/api.rbs
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
module Fetch
|
2
|
+
class API
|
3
|
+
def self?.fetch: (
|
4
|
+
_StringLike,
|
5
|
+
?method: String | Symbol,
|
6
|
+
?headers: Enumerable[[Object, Object]],
|
7
|
+
?body: (String | FormData | URLSearchParams)?,
|
8
|
+
?redirect: 'follow' | 'error' | 'manual' | :follow | :error | :manual,
|
9
|
+
) -> Response
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fetch
|
2
|
+
class Client
|
3
|
+
include Singleton
|
4
|
+
|
5
|
+
def fetch: (
|
6
|
+
_StringLike,
|
7
|
+
?method: String | Symbol,
|
8
|
+
?headers: Enumerable[[Object, Object]],
|
9
|
+
?body: (String | FormData | URLSearchParams)?,
|
10
|
+
?redirect: 'follow' | 'error' | 'manual' | :follow | :error | :manual,
|
11
|
+
?_redirected: bool
|
12
|
+
) -> Response
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def to_response: (_StringLike, Net::HTTPResponse, bool) -> Response
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fetch
|
2
|
+
class FormData
|
3
|
+
type value = String | File
|
4
|
+
|
5
|
+
include Enumerable[[String, value]]
|
6
|
+
|
7
|
+
attr_reader entries: Array[[String, value]]
|
8
|
+
|
9
|
+
def self.build: (Enumerable[[Object, Object]]) -> FormData
|
10
|
+
|
11
|
+
def initialize: () -> void
|
12
|
+
def append: (Object, Object) -> void
|
13
|
+
def delete: (Object) -> void
|
14
|
+
def get: (Object) -> value?
|
15
|
+
def get_all: (Object) -> Array[value]
|
16
|
+
def has: (Object) -> bool
|
17
|
+
def keys: -> Array[String]
|
18
|
+
def set: (Object, Object) -> void
|
19
|
+
def values: () -> Array[value]
|
20
|
+
def each: () { ([String, value]) -> void } -> Array[[String, value]]
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Fetch
|
2
|
+
class Headers
|
3
|
+
include Enumerable[[String, String]]
|
4
|
+
|
5
|
+
def initialize: (Enumerable[[Object, Object]]) -> void
|
6
|
+
def append: (Object, Object) -> void
|
7
|
+
def delete: (Object) -> void
|
8
|
+
def entries: () -> Array[[String, String]]
|
9
|
+
def get: (Object) -> String?
|
10
|
+
def has: (Object) -> bool
|
11
|
+
def keys: -> Array[String]
|
12
|
+
def set: (Object, Object) -> void
|
13
|
+
def values: () -> Array[String]
|
14
|
+
def each: () { ([String, String]) -> void } -> Array[[String, String]]
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Fetch
|
2
|
+
class Response
|
3
|
+
include Data::_DataClass
|
4
|
+
|
5
|
+
attr_reader url: String
|
6
|
+
attr_reader status: Integer
|
7
|
+
attr_reader headers: Headers
|
8
|
+
attr_reader body: String?
|
9
|
+
attr_reader redirected: bool
|
10
|
+
|
11
|
+
def initialize: (url: String, status: Integer, headers: Headers, body: String?, redirected: bool) -> void
|
12
|
+
def ok: () -> bool
|
13
|
+
def status_text: () -> String
|
14
|
+
def json: (json_options) -> Object?
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Fetch
|
2
|
+
class URLSearchParams
|
3
|
+
include Enumerable[[String, String]]
|
4
|
+
|
5
|
+
attr_reader entries: Array[[String, String]]
|
6
|
+
|
7
|
+
def self.build: (Enumerable[[Object, Object]]) -> FormData
|
8
|
+
|
9
|
+
def initialize: (String | Enumerable[[Object, Object]]) -> void
|
10
|
+
def append: (Object, Object) -> void
|
11
|
+
def delete: (Object) -> void
|
12
|
+
def get: (Object) -> String?
|
13
|
+
def get_all: (Object) -> Array[String]
|
14
|
+
def has: (Object) -> bool
|
15
|
+
def keys: -> Array[String]
|
16
|
+
def set: (Object, Object) -> void
|
17
|
+
def values: () -> Array[String]
|
18
|
+
def each: () { ([String, String]) -> void } -> Array[[String, String]]
|
19
|
+
end
|
20
|
+
end
|
data/sig/fetch.rbs
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.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keita Urashima
|
@@ -11,7 +11,21 @@ cert_chain: []
|
|
11
11
|
date: 2024-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mini_mime
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - ">="
|
@@ -99,6 +113,13 @@ files:
|
|
99
113
|
- lib/fetch/url_search_params.rb
|
100
114
|
- lib/fetch/version.rb
|
101
115
|
- sig/fetch.rbs
|
116
|
+
- sig/fetch/api.rbs
|
117
|
+
- sig/fetch/client.rbs
|
118
|
+
- sig/fetch/errors.rbs
|
119
|
+
- sig/fetch/form_data.rbs
|
120
|
+
- sig/fetch/headers.rbs
|
121
|
+
- sig/fetch/response.rbs
|
122
|
+
- sig/fetch/url_search_params.rbs
|
102
123
|
homepage: https://github.com/ursm/fetch-api
|
103
124
|
licenses:
|
104
125
|
- MIT
|
@@ -113,7 +134,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
134
|
requirements:
|
114
135
|
- - ">="
|
115
136
|
- !ruby/object:Gem::Version
|
116
|
-
version: 3.
|
137
|
+
version: 3.1.0
|
117
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
139
|
requirements:
|
119
140
|
- - ">="
|