fetch-api 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f3850dbddc3e46b5c6e59efdde4538c5c94e0464e94fb3ddd615e93d48a4e4f
4
- data.tar.gz: 5783d23d208526c9f009f6ad15317a136ad22ddbb58d403cad655e7c6909034a
3
+ metadata.gz: 7c17efb152e74853bef394109a4f6012247e44e17277f22b49569249bb4ec01f
4
+ data.tar.gz: d1451560f1fc8a26a0a381d7c7fe1c69a5e0cdff9a3641706aeacea801ef724c
5
5
  SHA512:
6
- metadata.gz: 77c50b51b5e084f405e26a6222bc388e1b2843f3f856db2f4f242fe64491ec31b8dd2f00532ff7099ab915b44bcf21f5edca3ca66bb5d9a0218f0f00c26100a3
7
- data.tar.gz: bd4668f688f2a9cf06bab9eec7f471a61b8e5bd3c2d0408521f46b6b2b61e2054cf7057f71ebaf53028d20b8363f9e01586fa75bfec8d5ef7c1ad3b9e49a3d9c
6
+ metadata.gz: 480a9fba5b2d4ccb972122507dd907d2fae0ffe941d470e7bfb2f20cb39e0e81440c879d87d43192a7b67ff2673bc4e41c1c1237cbd2c8a5baeedc0ed2abcdee
7
+ data.tar.gz: b497f558eab4796ecc87a89cdfe696eb8ec68dc2b417215f1e2d0f34fa350b31965460ed2a810e50668bfa92a2c8f71329764a556141b990b4e826f44948ab80
@@ -1,13 +1,7 @@
1
- require 'forwardable'
1
+ require_relative 'multi_map'
2
2
 
3
3
  module Fetch
4
- class FormData
5
- include Enumerable
6
-
7
- extend Forwardable
8
-
9
- def_delegators :entries, :each
10
-
4
+ class FormData < MultiMap
11
5
  def self.build(enumerable)
12
6
  data = FormData.new
13
7
 
@@ -18,43 +12,14 @@ module Fetch
18
12
  data
19
13
  end
20
14
 
21
- def initialize
22
- @entries = []
23
- end
24
-
25
- attr_reader :entries
26
-
27
- def append(key, value)
28
- @entries.push [key.to_s, File === value ? value : value.to_s]
29
- end
30
-
31
- def delete(key)
32
- @entries.reject! {|k,| k == key.to_s }
33
- end
34
-
35
- def get(key)
36
- @entries.assoc(key.to_s)&.last
37
- end
38
-
39
- def get_all(key)
40
- @entries.select {|k,| k == key.to_s }.map(&:last)
41
- end
42
-
43
- def has(key)
44
- @entries.any? {|k,| k == key.to_s }
45
- end
46
-
47
- def keys
48
- @entries.map(&:first)
49
- end
15
+ private
50
16
 
51
- def set(key, value)
52
- delete key
53
- append key, value
17
+ def to_key(key)
18
+ key.to_s
54
19
  end
55
20
 
56
- def values
57
- @entries.map(&:last)
21
+ def to_value(value)
22
+ File === value ? value : value.to_s
58
23
  end
59
24
  end
60
25
  end
data/lib/fetch/headers.rb CHANGED
@@ -1,13 +1,7 @@
1
- require 'forwardable'
2
-
3
1
  module Fetch
4
2
  class Headers
5
3
  include Enumerable
6
4
 
7
- extend Forwardable
8
-
9
- def_delegators :entries, :each
10
-
11
5
  def initialize(init = [])
12
6
  @data = {}
13
7
 
@@ -47,5 +41,9 @@ module Fetch
47
41
  def values
48
42
  @data.values.map { _1.join(', ') }
49
43
  end
44
+
45
+ def each(&block)
46
+ block ? entries.each(&block) : entries.each
47
+ end
50
48
  end
51
49
  end
@@ -0,0 +1,58 @@
1
+ module Fetch
2
+ class MultiMap
3
+ include Enumerable
4
+
5
+ def initialize
6
+ @entries = []
7
+ end
8
+
9
+ attr_reader :entries
10
+
11
+ def append(key, value)
12
+ @entries.push [to_key(key), to_value(value)]
13
+ end
14
+
15
+ def delete(key)
16
+ @entries.reject! {|k,| k == to_key(key) }
17
+ end
18
+
19
+ def get(key)
20
+ @entries.assoc(to_key(key))&.last
21
+ end
22
+
23
+ def get_all(key)
24
+ @entries.select {|k,| k == to_key(key) }.map(&:last)
25
+ end
26
+
27
+ def has(key)
28
+ @entries.any? {|k,| k == to_key(key) }
29
+ end
30
+
31
+ def keys
32
+ @entries.map(&:first)
33
+ end
34
+
35
+ def set(key, value)
36
+ delete key
37
+ append key, value
38
+ end
39
+
40
+ def values
41
+ @entries.map(&:last)
42
+ end
43
+
44
+ def each(&)
45
+ @entries.each(&)
46
+ end
47
+
48
+ private
49
+
50
+ def to_key(key)
51
+ raise NotImplementedError
52
+ end
53
+
54
+ def to_value(value)
55
+ raise NotImplementedError
56
+ end
57
+ end
58
+ end
@@ -1,16 +1,11 @@
1
- require 'forwardable'
1
+ require_relative 'multi_map'
2
+
2
3
  require 'uri'
3
4
 
4
5
  module Fetch
5
- class URLSearchParams
6
- include Enumerable
7
-
8
- extend Forwardable
9
-
10
- def_delegators :entries, :each
11
-
6
+ class URLSearchParams < MultiMap
12
7
  def initialize(options = [])
13
- @entries = []
8
+ super()
14
9
 
15
10
  case options
16
11
  when String
@@ -24,47 +19,22 @@ module Fetch
24
19
  end
25
20
  end
26
21
 
27
- attr_reader :entries
28
-
29
- def append(key, value)
30
- @entries.push [key.to_s, value.to_s]
31
- end
32
-
33
- def delete(key)
34
- @entries.reject! {|k,| k == key.to_s }
35
- end
36
-
37
- def get(key)
38
- @entries.assoc(key.to_s)&.last
39
- end
40
-
41
- def get_all(key)
42
- @entries.select {|k,| k == key.to_s }.map(&:last)
43
- end
44
-
45
- def has(key)
46
- @entries.any? {|k,| k == key.to_s }
47
- end
48
-
49
- def keys
50
- @entries.map(&:first)
22
+ def sort
23
+ entries.sort_by!(&:first)
51
24
  end
52
25
 
53
- def set(key, value)
54
- delete key
55
- append key, value
26
+ def to_s
27
+ URI.encode_www_form(entries)
56
28
  end
57
29
 
58
- def sort
59
- @entries.sort_by!(&:first)
60
- end
30
+ private
61
31
 
62
- def to_s
63
- URI.encode_www_form(@entries)
32
+ def to_key(key)
33
+ key.to_s
64
34
  end
65
35
 
66
- def values
67
- @entries.map(&:last)
36
+ def to_value(value)
37
+ value.to_s
68
38
  end
69
39
  end
70
40
  end
data/lib/fetch/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fetch
2
- VERSION = '0.5.0'
2
+ VERSION = '0.5.1'
3
3
  end
@@ -1,24 +1,5 @@
1
1
  module Fetch
2
- class FormData
3
- include Enumerable[[String, String | File]]
4
-
5
- extend Forwardable
6
-
7
- attr_reader entries: Array[[String, String | File]]
8
-
2
+ class FormData < MultiMap[_ToS, String, _ToS | File, String | File]
9
3
  def self.build: (_Each[[_ToS, _ToS | File]]) -> FormData
10
-
11
- def initialize: () -> void
12
- def append: (_ToS, _ToS | File) -> void
13
- def delete: (_ToS) -> void
14
- def get: (_ToS) -> (String | File)?
15
- def get_all: (_ToS) -> Array[String | File]
16
- def has: (_ToS) -> bool
17
- def keys: -> Array[String]
18
- def set: (_ToS, _ToS | File) -> void
19
- def values: () -> Array[String | File]
20
-
21
- def each: () { ([String, String | File]) -> void } -> Array[[String, String | File]]
22
- | () -> Enumerator[[String, String | File], Array[[String, String | File]]]
23
4
  end
24
5
  end
@@ -2,8 +2,6 @@ module Fetch
2
2
  class Headers
3
3
  include Enumerable[[String, String]]
4
4
 
5
- extend Forwardable
6
-
7
5
  def initialize: (_Each[[_ToS, _ToS]]) -> void
8
6
  def append: (_ToS, _ToS) -> void
9
7
  def delete: (_ToS) -> void
@@ -0,0 +1,23 @@
1
+ module Fetch
2
+ class MultiMap[KIN, KOUT, VIN, VOUT]
3
+ include Enumerable[[KOUT, VOUT]]
4
+
5
+ def initialize: () -> void
6
+ def append: (KIN, VIN) -> void
7
+ def delete: (KIN) -> void
8
+ def get: (KIN) -> VOUT?
9
+ def get_all: (KIN) -> Array[VOUT]
10
+ def has: (KIN) -> bool
11
+ def keys: -> Array[KOUT]
12
+ def set: (KIN, VIN) -> void
13
+ def values: () -> Array[VOUT]
14
+
15
+ def each: () { ([KOUT, VOUT]) -> void } -> Array[[KOUT, VOUT]]
16
+ | () -> Enumerator[[KOUT, VOUT], Array[[KOUT, VOUT]]]
17
+
18
+ private
19
+
20
+ def to_key: (KIN) -> KOUT
21
+ def to_value: (VIN) -> VOUT
22
+ end
23
+ end
@@ -1,24 +1,7 @@
1
1
  module Fetch
2
- class URLSearchParams
3
- include Enumerable[[String, String]]
4
-
5
- extend Forwardable
6
-
7
- attr_reader entries: Array[[String, String]]
8
-
9
- def self.build: (_Each[[_ToS, _ToS]]) -> FormData
10
-
2
+ class URLSearchParams < MultiMap[_ToS, String, _ToS, String]
11
3
  def initialize: (String | _Each[[_ToS, _ToS]]) -> void
12
- def append: (_ToS, _ToS) -> void
13
- def delete: (_ToS) -> void
14
- def get: (_ToS) -> String?
15
- def get_all: (_ToS) -> Array[String]
16
- def has: (_ToS) -> bool
17
- def keys: -> Array[String]
18
- def set: (_ToS, _ToS) -> void
19
- def values: () -> Array[String]
20
-
21
- def each: () { ([String, String]) -> void } -> Array[[String, String]]
22
- | () -> Enumerator[[String, String], Array[[String, String]]]
4
+ def sort: () -> void
5
+ def to_s: () -> String
23
6
  end
24
7
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fetch-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
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 00:00:00.000000000 Z
11
+ date: 2024-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: forwardable
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
13
  - !ruby/object:Gem::Dependency
28
14
  name: json
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +112,7 @@ files:
126
112
  - lib/fetch/errors.rb
127
113
  - lib/fetch/form_data.rb
128
114
  - lib/fetch/headers.rb
115
+ - lib/fetch/multi_map.rb
129
116
  - lib/fetch/response.rb
130
117
  - lib/fetch/url_search_params.rb
131
118
  - lib/fetch/version.rb
@@ -137,6 +124,7 @@ files:
137
124
  - sig/fetch/errors.rbs
138
125
  - sig/fetch/form_data.rbs
139
126
  - sig/fetch/headers.rbs
127
+ - sig/fetch/multi_map.rbs
140
128
  - sig/fetch/response.rbs
141
129
  - sig/fetch/url_search_params.rbs
142
130
  - sig/fetch/version.rbs