json_requester 1.1.2 → 2.0.0

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 +31 -2
  3. data/lib/json_requester.rb +19 -9
  4. metadata +56 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a0dd5080d2bec29884d6da9cf56099973847d3ba0841f296089591278ce6b84
4
- data.tar.gz: ac92413b55e07c14f48515ce0e62cfb5e990b701c8eb5ee2b3c7887cd9cdf124
3
+ metadata.gz: 7972e8a9100423878e0bef1e81ad3417638e0f449740651ee1395403b855b54a
4
+ data.tar.gz: 424e1bf4d8071f45db297d758a6056ff7ad90626fb695e129498570e579d6be1
5
5
  SHA512:
6
- metadata.gz: 8103bb5bf91b6df2ddfb88558d4c8091beaf3893ce0a24d17a4a91f8dfcc99b0e7aecd73c0b65beac5c5e7e2d21ac6de4b5fe71fe9e6dc2ac3532a31ad66289e
7
- data.tar.gz: e137988468f479c1e7a26d9a1aaacfe4e2d9935286b884fa42f6edd462e5dc283e94a2e980b9329cccc82c4e94f9ffbe5bbe2a5d140464b95a2b49f0ab57b2eb
6
+ metadata.gz: 61c9fec395d7e73015417a9dfd48d2445593da9f938286432123cf755e05a340a3c6d2b89436e473a351229c0e4220389cf18d30bbcb555967bfd1b2e96fd5e0
7
+ data.tar.gz: 7ff57c6dd3f5ba19c55fdfb269eb8f017f38cb27eb62946255806e656c333b948bc022044d45de8005b92a53f977423b7d0e7a7b423edc7a477b1bfd5e4476e6
data/README.md CHANGED
@@ -4,16 +4,25 @@
4
4
 
5
5
  ### Install
6
6
 
7
+ If you want to use faraday 1.x version, install json_requester 1.x version:
7
8
  ```bash
8
- $ gem install json_requester
9
+ $ gem install json_requester -v '~> 1.0'
10
+ ```
11
+
12
+ If you want to use faraday 2.x version, install json_requester 2.x version:
13
+ ```bash
14
+ $ gem install json_requester -v '~> 2.0'
9
15
  ```
10
16
 
11
17
  ### How to Use
12
18
 
13
19
  ```ruby
20
+ # initialize the JsonRequester class
14
21
  host = 'http://httpbingo.org'
15
22
  # `timeout` at Faraday gem default is 60 secs.
16
23
  # `user_agent` at Faraday gem default is like "Faraday v1.10.0", it would be deep_merge at Faraday default setting.
24
+ # `multipart` option enables multipart form requests (for file uploads), default is false
25
+ # `ssl_verify` controls SSL certificate verification, default is true
17
26
  requester = JsonRequester.new(host, timeout: 120, user_agent: 'My Agent 1.2')
18
27
 
19
28
  http_method = :get # :get / :post / :put / :delete
@@ -31,10 +40,30 @@ $ gem install json_requester
31
40
  # other methods: `form_send`, `multipart_form_send`
32
41
  # `sort_params` at Faraday gem default is true.
33
42
  # `content_type_charset` default is 'utf-8', this will add ; charset=utf-8 after `Content-Type` header (ex. `Content-Type=application/json; charset=utf-8`).
43
+ # `need_response_header` when set to true will include response headers in the result
34
44
  res = requester.http_send(http_method, path, params, headers, sort_params: true, content_type_charset: 'utf-8')
35
45
 
36
46
  # http response code
37
47
  puts res['status'] # 200, 404, .. etc
38
48
  # the response JSON body
39
- puts res['body'] # { foo: 'bar' }
49
+ puts res['body'] # { foo: 'bar' }
50
+
51
+ # If need_response_header is true, you can access response headers
52
+ puts res['headers'] if res.key?('headers')
53
+
54
+ # For form-encoded requests (application/x-www-form-urlencoded)
55
+ form_res = requester.form_send(:post, '/post', params, headers)
56
+
57
+ # For file uploads or multipart form requests
58
+ # First initialize with multipart: true
59
+ multipart_requester = JsonRequester.new(host, multipart: true)
60
+
61
+ # Then prepare your payload with file objects
62
+ upload_params = {
63
+ file: Faraday::Multipart::FilePart.new('path/to/file.txt', 'text/plain'),
64
+ description: 'File upload example'
65
+ }
66
+
67
+ # Send multipart request
68
+ upload_res = multipart_requester.multipart_form_send(:post, '/upload_path', upload_params, headers)
40
69
  ```
@@ -1,4 +1,5 @@
1
1
  require 'faraday'
2
+ require 'faraday/multipart'
2
3
  require 'json'
3
4
 
4
5
  class JsonRequester
@@ -13,7 +14,7 @@ class JsonRequester
13
14
  end
14
15
 
15
16
  def http_send(http_method, path, params={}, headers={}, sort_params: true, need_response_header: false, content_type_charset: 'utf-8')
16
- puts "send #{http_method} reqeust to #{@host} with\npath: #{path}\nparams: #{params}\nheaders: #{headers}"
17
+ puts "send #{http_method} request to #{@host} with\npath: #{path}\nparams: #{params}\nheaders: #{headers}"
17
18
  if http_method == :get
18
19
  normal_send(http_method, path, params, headers, sort_params: sort_params, need_response_header: need_response_header)
19
20
  else
@@ -38,11 +39,7 @@ class JsonRequester
38
39
  res = conn.send(http_method) do |req|
39
40
  req.url path
40
41
  req.headers = headers if object_present?(headers)
41
- if content_type_charset.present?
42
- req.headers['Content-Type'] = "application/json;charset=#{content_type_charset}"
43
- else
44
- req.headers['Content-Type'] = 'application/json'
45
- end
42
+ req.headers['Content-Type'] = object_present?(content_type_charset) ? "application/json;charset=#{content_type_charset}" : 'application/json'
46
43
  req.body = params.to_json if object_present?(params)
47
44
  end
48
45
  process_response(res, need_response_header: need_response_header)
@@ -79,8 +76,12 @@ class JsonRequester
79
76
  # https://lostisland.github.io/faraday/#/customization/index?id=order-of-parameters
80
77
  Faraday::NestedParamsEncoder.sort_params = sort_params # faraday default is true
81
78
  Faraday.default_connection_options = { headers: { user_agent: @user_agent } } unless @user_agent.empty?
79
+ options = {
80
+ url: host,
81
+ ssl: { verify: @ssl_verify }
82
+ }
82
83
 
83
- Faraday.new(url: host, ssl: { verify: @ssl_verify }) do |faraday|
84
+ Faraday.new(options) do |faraday|
84
85
  faraday.request :multipart if @multipart # multipart form POST request
85
86
  faraday.request :url_encoded # form-encode POST params
86
87
  faraday.response :logger # log requests to $stdout
@@ -104,11 +105,20 @@ class JsonRequester
104
105
  end
105
106
 
106
107
  def error_response(err)
107
- {'status' => 500, 'message' => "#{err.class.name}: #{err.message}"}
108
+ { 'status' => 500, 'message' => "#{err.class.name}: #{err.message}" }
108
109
  end
109
110
 
110
111
  def object_present?(object)
111
- !(object.nil? || object.empty?)
112
+ # Ref: https://github.com/rails/rails/blob/v7.1.4.2/activesupport/lib/active_support/core_ext/object/blank.rb#L25
113
+ # active_support present? method
114
+ !object_blank?(object)
115
+ end
116
+
117
+ def object_blank?(object)
118
+ # Ref: https://github.com/rails/rails/blob/v7.1.4.2/activesupport/lib/active_support/core_ext/object/blank.rb#L18
119
+ # active_support blank? method
120
+ return true if object.nil?
121
+ object.respond_to?(:empty?) ? !!object.empty? : false
112
122
  end
113
123
 
114
124
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_requester
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JiaRou Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-28 00:00:00.000000000 Z
11
+ date: 2025-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,20 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '2.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.10.3
22
+ version: 2.0.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '1.10'
29
+ version: '2.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.10.3
32
+ version: 2.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: faraday-multipart
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.1.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 1.1.0
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: pry
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -44,6 +58,40 @@ dependencies:
44
58
  - - "~>"
45
59
  - !ruby/object:Gem::Version
46
60
  version: 0.14.2
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: webmock
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.25'
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 3.25.1
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '3.25'
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 3.25.1
47
95
  description: wrapper of faraday
48
96
  email: laura34963@kdanmobile.com
49
97
  executables: []
@@ -68,14 +116,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
68
116
  requirements:
69
117
  - - ">="
70
118
  - !ruby/object:Gem::Version
71
- version: 2.5.1
119
+ version: 3.0.0
72
120
  required_rubygems_version: !ruby/object:Gem::Requirement
73
121
  requirements:
74
122
  - - ">="
75
123
  - !ruby/object:Gem::Version
76
124
  version: '0'
77
125
  requirements: []
78
- rubygems_version: 3.4.10
126
+ rubygems_version: 3.5.16
79
127
  signing_key:
80
128
  specification_version: 4
81
129
  summary: Basic Wrapper of Faraday