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.
- checksums.yaml +4 -4
- data/README.md +31 -2
- data/lib/json_requester.rb +19 -9
- metadata +56 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7972e8a9100423878e0bef1e81ad3417638e0f449740651ee1395403b855b54a
|
4
|
+
data.tar.gz: 424e1bf4d8071f45db297d758a6056ff7ad90626fb695e129498570e579d6be1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
```
|
data/lib/json_requester.rb
CHANGED
@@ -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}
|
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
|
-
|
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(
|
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
|
-
|
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:
|
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:
|
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: '
|
19
|
+
version: '2.0'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
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: '
|
29
|
+
version: '2.0'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
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:
|
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.
|
126
|
+
rubygems_version: 3.5.16
|
79
127
|
signing_key:
|
80
128
|
specification_version: 4
|
81
129
|
summary: Basic Wrapper of Faraday
|