json_requester 1.0.9 → 1.0.11

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +28 -8
  3. data/lib/json_requester.rb +19 -14
  4. metadata +22 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97dd6e0bf2910e13ec4badfedeed6a2e81d31c728e12e25eab181a1c8cc25ef9
4
- data.tar.gz: f93f5fa627e90339bf734b8e96367bdf6924f18c6f747625bedabd943ba97cba
3
+ metadata.gz: 9f5093495b6cc5e5ea2778c405bac7f712130a0d5a4e4b4dbd5d307606c20b98
4
+ data.tar.gz: a01404be960fc093d0637ab4890981d42a67161fea04f26151984bf661a6e48c
5
5
  SHA512:
6
- metadata.gz: 39f4cda3e36460c8f8647513823974c90211a12ac509e495a3c79188381c07eb217f2abc7d874f094d7276b1c3fe5166bf87fc15b0e3d21f4a81e828340cd629
7
- data.tar.gz: fe699ae45d3d99e81d1b15e48e6a0e0219ebf2ca8b75f144a028091664bbe9dbcf473c2a1aa294db2bc2fe3a998e6a90d2f1c0493c6a933ab91ec9a41849c141
6
+ metadata.gz: 95a2aedf37245b98f0167a7e099c5dbf650796dab009025b3075022cb5d8fe9c56ff5759b1075e7d272fcad51a43a68a33e999558d1f0e3932d099eb14bb9781
7
+ data.tar.gz: 6d32b1f828a49cb7f9fd98a6c1ea487feb74472e1cd64ec6256c4fccb4969a9389144c15d26957de2de838b162d41af0c1c4f01845a6dce4981b79eba737555a
data/README.md CHANGED
@@ -4,15 +4,35 @@
4
4
 
5
5
  ### Install
6
6
 
7
- gem install json_requester
7
+ ```bash
8
+ $ gem install json_requester
9
+ ```
8
10
 
9
11
  ### How to Use
10
12
 
11
- requester = JsonRequester.new(host)
12
- res = requester.http_send(http_method, path, params, headers)
13
- puts res['status'] # 200
14
- puts res['body'] # { foo: 'bar' }
15
- puts res['body_status'] # 'success'
13
+ ```ruby
14
+ host = 'http://httpbingo.org'
15
+ # `timeout` at Faraday gem default is 60 secs.
16
+ requester = JsonRequester.new(host, timeout: 120)
17
+
18
+ http_method = :get # :get / :post / :put / :delete
19
+ path = ''
20
+ headers = { 'Authorization' => 'Bearer token' }
16
21
 
17
- puts res['status'] # 500
18
- puts res['message'] # invalid method
22
+ # The `:get` method will use query params;
23
+ # Other HTTP methods will use JSON body to request.
24
+ params = {
25
+ key_1: 'value_1',
26
+ key_2: 'value_2'
27
+ }
28
+
29
+ # Request by using JSON body or query params, use the `http_send` method.
30
+ # other methods: `form_send`, `multipart_form_send`
31
+ # `sort_params` at Faraday gem default is true.
32
+ res = requester.http_send(http_method, path, params, headers, sort_params: true)
33
+
34
+ # http response code
35
+ puts res['status'] # 200, 404, .. etc
36
+ # the response JSON body
37
+ puts res['body'] # { foo: 'bar' }
38
+ ```
@@ -4,23 +4,24 @@ require 'json'
4
4
  class JsonRequester
5
5
  attr_reader :host, :conn
6
6
 
7
- def initialize(host, multipart: false, ssl_verify: true)
7
+ def initialize(host, multipart: false, ssl_verify: true, timeout: 60)
8
8
  @host = host
9
9
  @multipart = multipart
10
10
  @ssl_verify = ssl_verify
11
+ @timeout = timeout
11
12
  end
12
13
 
13
- def http_send(http_method, path, params={}, headers={})
14
+ def http_send(http_method, path, params={}, headers={}, sort_params: true)
14
15
  puts "send #{http_method} reqeust to #{@host} with\npath: #{path}\nparams: #{params}\nheaders: #{headers}"
15
16
  if http_method == :get
16
- normal_send(http_method, path, params, headers)
17
+ normal_send(http_method, path, params, headers, sort_params: sort_params)
17
18
  else
18
- json_send(http_method, path, params, headers)
19
+ json_send(http_method, path, params, headers, sort_params: sort_params)
19
20
  end
20
21
  end
21
22
 
22
- def normal_send(http_method, path, params={}, headers={})
23
- conn = init_conn
23
+ def normal_send(http_method, path, params={}, headers={}, sort_params: true)
24
+ conn = init_conn(sort_params: sort_params)
24
25
  res = conn.send(http_method) do |req|
25
26
  req.url path
26
27
  req.headers = headers if object_present?(headers)
@@ -31,8 +32,8 @@ class JsonRequester
31
32
  error_response(e)
32
33
  end
33
34
 
34
- def json_send(http_method, path, params={}, headers={})
35
- conn = init_conn
35
+ def json_send(http_method, path, params={}, headers={}, sort_params: true)
36
+ conn = init_conn(sort_params: sort_params)
36
37
  res = conn.send(http_method) do |req|
37
38
  req.url path
38
39
  req.headers = headers if object_present?(headers)
@@ -44,12 +45,12 @@ class JsonRequester
44
45
  error_response(e)
45
46
  end
46
47
 
47
- def form_send(http_method, path, params={}, headers={})
48
- conn = init_conn
48
+ def form_send(http_method, path, params={}, headers={}, sort_params: true)
49
+ conn = init_conn(sort_params: sort_params)
49
50
  res = conn.send(http_method) do |req|
50
51
  req.url path
51
52
  req.headers = headers if object_present?(headers)
52
- req.headers['Content-Type'] = 'application/x-www-form-urlencoded ;charset=utf-8'
53
+ req.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'
53
54
  req.body = URI.encode_www_form(params) if object_present?(params)
54
55
  end
55
56
  process_response(res)
@@ -57,8 +58,8 @@ class JsonRequester
57
58
  error_response(e)
58
59
  end
59
60
 
60
- def multipart_form_send(http_method, path, params={}, headers={})
61
- conn = init_conn
61
+ def multipart_form_send(http_method, path, params={}, headers={}, sort_params: true)
62
+ conn = init_conn(sort_params: sort_params)
62
63
  res = conn.send(http_method) do |req|
63
64
  req.url path
64
65
  req.headers = headers if object_present?(headers)
@@ -69,12 +70,16 @@ class JsonRequester
69
70
 
70
71
  private
71
72
 
72
- def init_conn
73
+ def init_conn(sort_params: true)
74
+ # https://lostisland.github.io/faraday/#/customization/index?id=order-of-parameters
75
+ Faraday::NestedParamsEncoder.sort_params = sort_params # faraday default is true
76
+
73
77
  Faraday.new(url: host, ssl: { verify: @ssl_verify }) do |faraday|
74
78
  faraday.request :multipart if @multipart # multipart form POST request
75
79
  faraday.request :url_encoded # form-encode POST params
76
80
  faraday.response :logger # log requests to $stdout
77
81
  faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
82
+ faraday.options.timeout = @timeout
78
83
  end
79
84
  end
80
85
 
metadata CHANGED
@@ -1,19 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_requester
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - JiaRou Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-18 00:00:00.000000000 Z
11
+ date: 2023-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
22
  version: 1.0.0
@@ -21,9 +24,26 @@ dependencies:
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
32
  version: 1.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: pry
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.14.1
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.14.1
27
47
  description: wrapper of faraday
28
48
  email: laura34963@kdanmobile.com
29
49
  executables: []