fetch-api 0.3.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4686aace90255f6eceef759fe22002292101a0cb5cac4db2be0cbdf21cf398fa
4
- data.tar.gz: 6dda2ecd4cde88807c27261f3d4eb866387b6e913e824cc0797e09618383284d
3
+ metadata.gz: a5087cd966a296311bc208ed82ba9c4eb33cb7abb1ca1474efc611acdea73982
4
+ data.tar.gz: e58cb6110ac3a0e62945f486593c95d04096c80e495935a90e3a46de13211526
5
5
  SHA512:
6
- metadata.gz: f5f6ba84be5732b1784ee0f67b4ea3b2e35a7e6b34d04c0b5808587f0d71bfc253f408bd3c7596cad79b2eddb7dbb6b794dfcf5adc34df77491a152c7a15120d
7
- data.tar.gz: 41a3bab80a11cc7f0fc432504cc73d996e1d3b4dfad72b33ccd957bf77acff5bc0bfc00f50145d2dc561366f50b61885ae976650965a1aa408f5e748009aaec2
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: `'GET'`)
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 `follow`, `error`, `manual`, default: `follow`)
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: 'POST',
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: 'POST',
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: 'POST',
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 '../fetch'
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: 'GET', headers: [], body: nil, redirect: 'follow', _redirected: false)
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
  )
@@ -1,5 +1,3 @@
1
- require_relative 'fetch/version'
2
-
3
1
  module Fetch
4
2
  class Error < StandardError; end
5
3
  class RedirectError < Error; end
data/lib/fetch/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fetch
2
- VERSION = '0.3.1'
2
+ VERSION = '0.3.2'
3
3
  end
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.1
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