json_requester 0.1.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 +7 -0
  2. data/README.md +11 -0
  3. data/lib/json_requester.rb +72 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 53a9ef445b7220bf673bb9ba292d10d749bf487991fa785be223767d48061aa6
4
+ data.tar.gz: f8943433d455d141aa2c87498d5c5fae44b0a9a62bc3a1945e0224de4cf95e22
5
+ SHA512:
6
+ metadata.gz: 152468b23940aba15216bdedeb535c2a9353655b5ba7f0d6b5df67370f9401be2b37cd90f39e4c10eb2235beda604ee757255d20f419674607ed262bd117d756
7
+ data.tar.gz: 26ca1dabffac19d11ab9a4f4f06522f3d6a66d92edf9e6924d3c8d9ccb0a339dab17eb2932ed38a78bf8e700497e87565392c5f30f93d0236c7b3081ad4516d5
data/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # JsonRequester
2
+
3
+ ### A Wrapper of Faraday Gem
4
+
5
+ ### How to Use
6
+
7
+ * init requester
8
+ `requester = JsonRequester.new([host])`
9
+
10
+ * http request
11
+ `requester.http_send([http_method], [path], [params], [headers])`
@@ -0,0 +1,72 @@
1
+ require 'faraday'
2
+ require 'json'
3
+
4
+ class JsonRequester
5
+ attr_reader :host, :conn
6
+
7
+ def initialize(host)
8
+ @host = host
9
+ @conn = init_conn
10
+ end
11
+
12
+ def http_send(http_method, path, params={}, headers={})
13
+ if http_method == :get
14
+ normal_send(http_method, path, params, headers)
15
+ else
16
+ json_send(http_method, path, params, headers)
17
+ end
18
+ end
19
+
20
+ def normal_send(http_method, path, params={}, headers={})
21
+ res = @conn.send(http_method) do |req|
22
+ req.url path
23
+ req.params = params if object_present?(params)
24
+ req.headers = headers if object_present?(headers)
25
+ end
26
+ process_response(res)
27
+ rescue => e
28
+ error_response(e)
29
+ end
30
+
31
+ def json_send(http_method, path, params={}, headers={})
32
+ res = @conn.send(http_method) do |req|
33
+ req.url path
34
+ req.headers = headers if object_present?(headers)
35
+ req.headers['Content-Type'] = 'application/json'
36
+ req.body = params.to_json if object_present?(params)
37
+ end
38
+ process_response(res)
39
+ rescue => e
40
+ error_response(e)
41
+ end
42
+
43
+ private
44
+
45
+ def init_conn
46
+ Faraday.new(url: host) do |faraday|
47
+ faraday.request :url_encoded # form-encode POST params
48
+ faraday.response :logger # log requests to $stdout
49
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
50
+ end
51
+ end
52
+
53
+ def process_response(response)
54
+ result = {'status' => response.status}
55
+ begin
56
+ body = JSON.parse(response.body)
57
+ body = body.is_a?(Hash) ? body : {'body' => body}
58
+ body['body_status'] = body.delete('status') unless body['status'].is_a?(Integer)
59
+ rescue
60
+ body = {'body' => response.body}
61
+ end
62
+ result.merge(body)
63
+ end
64
+
65
+ def error_response(err)
66
+ {'status' => 500, 'message' => "#{err.class.name}: #{err.message}"}
67
+ end
68
+
69
+ def object_present?(object)
70
+ !(object.nil? || object.empty?)
71
+ end
72
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: json_requester
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - JiaRou Lee
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-07-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: wrapper of faraday
14
+ email: laura34963@kdanmobile.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files:
18
+ - README.md
19
+ files:
20
+ - README.md
21
+ - lib/json_requester.rb
22
+ homepage: https://github.com/laura34963/json_requester
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options:
28
+ - "--charset=UTF-8"
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 2.5.1
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubygems_version: 3.0.1
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Basic Wrapper of Faraday
46
+ test_files: []