json_requester 1.1.3 → 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 +7 -1
  4. metadata +55 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4f982cccc8a4c27d2013a2c007b907c0cbf3f6aa05eff09464bba82cc6cd59f
4
- data.tar.gz: f36d85249ef2b341aeff0435da4c3398d10e8c7146f2233c7c35f11a61b588c3
3
+ metadata.gz: 7972e8a9100423878e0bef1e81ad3417638e0f449740651ee1395403b855b54a
4
+ data.tar.gz: 424e1bf4d8071f45db297d758a6056ff7ad90626fb695e129498570e579d6be1
5
5
  SHA512:
6
- metadata.gz: 02bcd235be1471113c0b0c1640bad36f308a839e7d3143a072877cd124bec70af77079093934e97ace2a85db5bcdd6d7ab2ec2029dd05dee774f9dbabcc741e2
7
- data.tar.gz: 86c13263c31f9174cb3a0ba66f0283958bc783f80c635649d28ee60b0072c2cc3b92ec931010a91a6507e1a3ecc44e6cde5217659db152ba5bbd33a11c86afbe
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
@@ -75,8 +76,12 @@ class JsonRequester
75
76
  # https://lostisland.github.io/faraday/#/customization/index?id=order-of-parameters
76
77
  Faraday::NestedParamsEncoder.sort_params = sort_params # faraday default is true
77
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
+ }
78
83
 
79
- Faraday.new(url: host, ssl: { verify: @ssl_verify }) do |faraday|
84
+ Faraday.new(options) do |faraday|
80
85
  faraday.request :multipart if @multipart # multipart form POST request
81
86
  faraday.request :url_encoded # form-encode POST params
82
87
  faraday.response :logger # log requests to $stdout
@@ -112,6 +117,7 @@ class JsonRequester
112
117
  def object_blank?(object)
113
118
  # Ref: https://github.com/rails/rails/blob/v7.1.4.2/activesupport/lib/active_support/core_ext/object/blank.rb#L18
114
119
  # active_support blank? method
120
+ return true if object.nil?
115
121
  object.respond_to?(:empty?) ? !!object.empty? : false
116
122
  end
117
123
 
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.3
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-10-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,7 +116,7 @@ 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
  - - ">="