reggora 0.1.3

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9c7dd2adb2d6a516476d29998b4290c449bae3c885e7724d4da29080143f4bc3
4
+ data.tar.gz: ec86b3618fa690d53075716f48a7fed9486df20a28a423246ddecade29df0c4f
5
+ SHA512:
6
+ metadata.gz: c397f9253aeb3d27b5a2a071c4cf2a4ed2be4658b7c7fb2f4b9c447c48c04696dc76df1e78fc5c9d2d2fbbd53c43c5e6d913ab7fe7ad4b6450c57add71ed7b9b
7
+ data.tar.gz: 9c09028dbfe4c0b6db97c6db3b9bfd6586a7419587c93e8e5a6542612d9c1eef8aa1791e37e73c3c3766ec8d2107928cec19b39fbce4e8cb04f892a769716d00
@@ -0,0 +1,18 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+ require 'json'
4
+ class ApiClient
5
+ $base_api_uri = 'https://sandbox.reggora.io/'
6
+
7
+ def self.authenticate(username, password, type)
8
+ body = {:username => username, :password => password}
9
+
10
+ response = Net::HTTP.post URI("#{$base_api_uri}#{type}/auth"), body.to_json
11
+ case response
12
+ when Net::HTTPSuccess then
13
+ JSON.parse(response.read_body)
14
+ else
15
+ response.value
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'api_client'
2
+ require_relative 'requests'
3
+ class LenderApiClient
4
+
5
+ # @param [String] username
6
+ # @param [String] password
7
+ # @param [String] integration_token
8
+ def initialize(username, password, integration_token)
9
+ authorization = ApiClient.authenticate(username, password, 'lender')
10
+ @api_client = Requests.new(authorization["token"], integration_token, 'lender')
11
+ $lender_api_client = self
12
+ end
13
+
14
+ # @param [string] username
15
+ # @param [string] password
16
+ def self.authenticate(username, password)
17
+ ApiClient.authenticate(username, password, 'lender')
18
+ end
19
+
20
+ def get(url, params = {})
21
+ @api_client.get(url, params)
22
+ end
23
+
24
+ def post(url, params = {})
25
+ @api_client.post(url, params)
26
+ end
27
+
28
+ def put(url, params = {})
29
+ @api_client.put(url, params)
30
+ end
31
+
32
+ def delete(url)
33
+ @api_client.delete(url)
34
+ end
35
+
36
+ end
@@ -0,0 +1,57 @@
1
+ class Requests
2
+ def initialize(auth_token, integration_token, type)
3
+ @uri = URI("#{$base_api_uri}#{type}")
4
+ @http = Net::HTTP.new(@uri.host, @uri.port)
5
+ @http.use_ssl = true
6
+ @header = {"Content-Type" => 'application/json', "Authorization" => "Bearer #{auth_token}", "integration" => integration_token}
7
+ end
8
+
9
+ def full_uri(path)
10
+ URI("#{@uri.to_s}#{path}")
11
+ end
12
+
13
+ def get(url, params = {})
14
+ api_endpoint = full_uri url
15
+ api_endpoint.query = URI.encode_www_form(params) unless params.empty?
16
+ send_request Net::HTTP::Get.new(api_endpoint.request_uri, @header)
17
+ end
18
+
19
+ def post(url, params = {})
20
+ api_endpoint = full_uri url
21
+ request = Net::HTTP::Post.new(api_endpoint, @header)
22
+ request.body = params.to_json
23
+ send_request request
24
+ end
25
+
26
+ def put(url, params = {})
27
+ api_endpoint = full_uri url
28
+ request = Net::HTTP::Put.new(api_endpoint, @header)
29
+ request.body = params.to_json
30
+ send_request request
31
+ end
32
+
33
+ def delete(url)
34
+ api_endpoint = full_uri url
35
+ send_request Net::HTTP::Delete.new(api_endpoint, @header)
36
+ end
37
+
38
+ def send_request(request)
39
+ begin
40
+ handle_response @http.request(request)
41
+ rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPUnauthorized,
42
+ Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError, Errno::ECONNREFUSED => e
43
+ raise e.inspect
44
+ end
45
+ end
46
+
47
+ def handle_response(response)
48
+ case response
49
+ when Net::HTTPSuccess then
50
+ JSON.parse(response.read_body)
51
+ when Net::HTTPBadRequest then
52
+ raise JSON.parse(response.read_body).inspect
53
+ else
54
+ raise JSON.parse(response.read_body).inspect
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,21 @@
1
+ class Loan
2
+ def all(params = {})
3
+ $lender_api_client.get('/loans', params)
4
+ end
5
+
6
+ def find(id)
7
+ $lender_api_client.get("/loan/#{id}")
8
+ end
9
+
10
+ def create(loan_params)
11
+ $lender_api_client.post('/loan', loan_params)
12
+ end
13
+
14
+ def edit(id, loan_params)
15
+ $lender_api_client.put("/loan/#{id}", loan_params)
16
+ end
17
+
18
+ def delete(id)
19
+ $lender_api_client.delete("/loan/#{id}")
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class Order
2
+ def all(params = {})
3
+ $lender_api_client.get('/orders', params)
4
+ end
5
+
6
+ def find(id)
7
+ $lender_api_client.get("/order/#{id}")
8
+ end
9
+
10
+ def create(loan_params)
11
+ $lender_api_client.post('/order', loan_params)
12
+ end
13
+
14
+ def edit(id, loan_params)
15
+ $lender_api_client.put("/order/#{id}", loan_params)
16
+ end
17
+
18
+ def cancel(id)
19
+ $lender_api_client.delete("/order/#{id}")
20
+ end
21
+ end
data/lib/reggora.rb ADDED
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+ require_relative 'reggora/Entity/Lender/loan'
3
+ require_relative 'reggora/Entity/Lender/order'
4
+ require_relative 'reggora/Adapters/lender_api_client'
5
+ module Reggora
6
+ # class Error < StandardError; end
7
+
8
+ class Lender
9
+ def initialize(user_name, password, integration_token)
10
+ LenderApiClient.new(user_name, password, integration_token)
11
+ end
12
+ end
13
+
14
+ class Vendor
15
+ def initialize(user_name, password, integration_token)
16
+ # Todo
17
+ end
18
+ end
19
+
20
+ end
21
+
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reggora
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - fatpig
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-08-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: This library makes request to https://sandbox.reggora.io/
56
+ email:
57
+ - fatpig0416@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/reggora.rb
63
+ - lib/reggora/Adapters/api_client.rb
64
+ - lib/reggora/Adapters/lender_api_client.rb
65
+ - lib/reggora/Adapters/requests.rb
66
+ - lib/reggora/Entity/Lender/loan.rb
67
+ - lib/reggora/Entity/Lender/order.rb
68
+ homepage: https://rubygems.org/gems/raggora
69
+ licenses:
70
+ - MIT
71
+ metadata:
72
+ allowed_push_host: https://rubygems.org/gems/
73
+ homepage_uri: https://rubygems.org/gems/raggora
74
+ source_code_uri: https://github.com/0x15f/reggora-ruby
75
+ changelog_uri: https://github.com/0x15f/reggora-ruby/blob/master/CHANGELOG.md
76
+ post_install_message:
77
+ rdoc_options: []
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ requirements: []
91
+ rubygems_version: 3.0.4
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: Library for Reggora Lender/Vendor API
95
+ test_files: []