unit_ruby_sdk 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e391082a9b8407e9e7ff1848ef06235d65aa3254b6c52ce5548bd4ad02534485
4
- data.tar.gz: 85d795785020ef391810521d23404e989201943ab4a41ca9ab762b1bad068612
3
+ metadata.gz: ebccfab4c5a1935e6155ab1778b6c8beb123e7a4171b14ea6fcb2617d84d9da0
4
+ data.tar.gz: 195fe66d952a385323e750b19abca9940843645252771462efbefc75dc3a1e68
5
5
  SHA512:
6
- metadata.gz: 54185c5b5bca29ededcf81ed28d193fcf72c2012206f7a4bf095f3f58d958ec52e0f1c31ea34738ec675f3dcb4e1045f339ca6bb842298a736ae4af784e7bb0e
7
- data.tar.gz: c9b2abeae465e2d34cdcb2c83f48565416fe2874ea983ced5eca080c6ee8b746675d3813e33dd5bb5fdc95d5ef01091360b4c51eedadcaf5760bb9e47d0a355a
6
+ metadata.gz: 92662a6367cb982b8fe77577b729e28139a9da4b78da5518ea99e32c064fbfede80106477569380a2b68c4816e1e2e4641b4911d38f63cd608ca8f9abb8c9dc4
7
+ data.tar.gz: a80e9f7bb02d93e24adafa4c0f1d792ad7fa9ee9bcf64a421c5d06a45366e90ed5a909fa68271ccd026c287ef2ecf4167cddf436563a6738d66a0042688602b7
data/README.md CHANGED
@@ -110,6 +110,17 @@ card = response.data
110
110
  puts card.id
111
111
  ```
112
112
 
113
+ ### Creating a check deposit
114
+ ```ruby
115
+ response = Unit::CheckDeposit.create_deposit(
116
+ account_id: account_id,
117
+ amount: 50_000,
118
+ description: "test check deposit"
119
+ )
120
+ deposit = response.data
121
+ puts deposit.id
122
+ ```
123
+
113
124
  ### Logging Errors
114
125
 
115
126
  ```ruby
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./base_resource"
4
+ require_relative "../utils/http_helper"
5
+ require "json"
6
+ # class for creating requests for check deposits to Unit API and parsing responses
7
+ # @see https://docs.unit.co/check-deposits
8
+ module Unit
9
+ module Resource
10
+ class CheckDepositResource < Unit::Resource::BaseResource
11
+ class << self
12
+ # Create a check deposit by calling Unit's API
13
+ # @param request [CreateCheckDepositRequest]
14
+ # @return [UnitResponse, UnitError]
15
+ def create_deposit(request)
16
+ payload = request.to_json_api
17
+ response = HttpHelper.post("#{api_url}/check-deposits", body: payload, headers: headers)
18
+ response_handler(response)
19
+ end
20
+
21
+ # Get a check deposit by id by calling Unit's API
22
+ # @param params [GetRequest]
23
+ # @return [UnitResponse, UnitError]
24
+ def get(params)
25
+ payload = params.to_hash
26
+ response = HttpHelper.get("#{api_url}/check-deposits/#{params.deposit_id}", params: payload, headers: headers)
27
+ response_handler(response)
28
+ end
29
+
30
+ # Get a list of check deposits by calling Unit's API
31
+ # @param params [ListDepositRequest]
32
+ # @return [UnitResponse, UnitError]
33
+ def list(params = nil)
34
+ response = HttpHelper.get("#{api_url}/check-deposits", params: params.to_hash, headers: headers)
35
+ response_handler(response)
36
+ end
37
+
38
+ # Update a check deposit by id by calling Unit's API
39
+ # @param request [PatchCheckDepositRequest]
40
+ # @return [UnitResponse, UnitError]
41
+ def update(request)
42
+ payload = request.to_json_api
43
+ response = HttpHelper.patch("#{api_url}/check-deposits/#{request.deposit_id}", body: payload, headers: headers)
44
+ response_handler(response)
45
+ end
46
+
47
+ # Upload a check deposit image by calling Unit's API
48
+ # @param request [UploadImageRequest]
49
+ # @return [UnitResponse, UnitError]
50
+ def upload(request)
51
+ side = request.is_front_side ? "/front" : "/back"
52
+
53
+ headers_updated = headers.clone
54
+
55
+ headers_updated["Content-Type"] = "image/jpeg"
56
+
57
+ response = HttpHelper.put("#{api_url}/check-deposits/#{request.deposit_id}#{side}", body: request.file_content, headers: headers_updated)
58
+
59
+ response_handler(response)
60
+ end
61
+
62
+ # Get a check deposit image by calling Unit's API
63
+ # @param request [GetImageRequest]
64
+ # @return [UnitResponse, UnitError]
65
+ def get_image(request)
66
+ side = request.is_front_side ? "front" : "back"
67
+ response = HttpHelper.get("#{api_url}/check-deposits/#{request.deposit_id}/#{side}", headers: headers, response_type: "image")
68
+ file_response_handler(response)
69
+ end
70
+
71
+ # Confirm a check deposit by calling Unit's API
72
+ # @param deposit_id [String]
73
+ # @return [UnitResponse, UnitError]
74
+ def confirm_details(deposit_id)
75
+ response = HttpHelper.post("#{api_url}/check-deposits/#{deposit_id}/confirm", headers: headers)
76
+ response_handler(response)
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module CheckDeposit
5
+ CHECK_DEPOSIT_LIMIT = 100
6
+ CHECK_DEPOSIT_OFFSET = 0
7
+
8
+ autoload :CreateCheckDepositRequest, "unit/models/check_deposit/create_check_deposit_request"
9
+ autoload :GetRequest, "unit/models/check_deposit/get_request"
10
+ autoload :ListDepositParams, "unit/models/check_deposit/list_deposit_params"
11
+ autoload :UploadImageRequest, "unit/models/check_deposit/upload_image_request"
12
+ autoload :GetImageRequest, "unit/models/check_deposit/get_image_request"
13
+ autoload :PatchDepositRequest, "unit/models/check_deposit/patch_deposit_request"
14
+
15
+ class << self
16
+ # Create a check deposit
17
+ # @see https://docs.unit.co/check-deposits#create-check-deposit
18
+ # @param account_id [String]
19
+ # @param amount [Integer]
20
+ # @param description [String]
21
+ # @param tags [Hash] - optional
22
+ # @param idempotency_key [String] - optional
23
+ def create_deposit(account_id:, amount:, description:, tags: nil, idempotency_key: nil)
24
+ request = CreateCheckDepositRequest.new(account_id, amount, description, tags, idempotency_key)
25
+ Unit::Resource::CheckDepositResource.create_deposit(request)
26
+ end
27
+
28
+ # Get a check deposit by calling Unit's API
29
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit
30
+ # @param deposit_id [String]
31
+ # @param include [Array<String>] - optional
32
+ def get_deposit(deposit_id:, include: nil)
33
+ request = GetRequest.new(deposit_id, include)
34
+ Unit::Resource::CheckDepositResource.get(request)
35
+ end
36
+
37
+ # List check deposits
38
+ # @see https://docs.unit.co/check-deposits#list-check-deposits
39
+ # @param limit [Integer] - optional
40
+ # @param offset [Integer] - optional
41
+ # @param account_id [String] - optional
42
+ # @param customer_id [String] - optional
43
+ # @param tags [Hash] - optional
44
+ # @param sort [String] - optional
45
+ # @param include [Array<String>] - optional
46
+ def list_deposit(limit: CHECK_DEPOSIT_LIMIT, offset: CHECK_DEPOSIT_OFFSET, account_id: nil,
47
+ customer_id: nil, tags: nil, sort: nil, include: nil)
48
+ request = ListDepositParams.new(limit, offset, account_id, customer_id, tags, sort, include)
49
+ Unit::Resource::CheckDepositResource.list(request)
50
+ end
51
+
52
+ # Upload an image front side for a check deposit
53
+ # @see https://docs.unit.co/check-deposits#upload-front-side-image
54
+ # @param deposit_id [String]
55
+ # @param file_content [String]
56
+ # @param is_front_side [Boolean] - optional
57
+ def upload_image_front(deposit_id:, file_content:, is_front_side: true)
58
+ request = UploadImageRequest.new(deposit_id, file_content, is_front_side: is_front_side)
59
+ Unit::Resource::CheckDepositResource.upload(request)
60
+ end
61
+
62
+ # Upload an image back side for a check deposit
63
+ # @see https://docs.unit.co/check-deposits#upload-back-side-image
64
+ # @param deposit_id [String]
65
+ # @param file_content [String]
66
+ # @param is_front_side [Boolean] - optional
67
+ def upload_image_back(deposit_id:, file_content:, is_front_side: false)
68
+ request = UploadImageRequest.new(deposit_id, file_content, is_front_side: is_front_side)
69
+ Unit::Resource::CheckDepositResource.upload(request)
70
+ end
71
+
72
+ # Get a check deposit image front side
73
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-front-image
74
+ # @param deposit_id [String]
75
+ # @param is_front_side [Boolean] - optional
76
+ def get_image_front(deposit_id:, is_front_side: true)
77
+ request = GetImageRequest.new(deposit_id, is_front_side: is_front_side)
78
+ Unit::Resource::CheckDepositResource.get_image(request)
79
+ end
80
+
81
+ # Get a check deposit image back side
82
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-back-image
83
+ # @param deposit_id [String]
84
+ # @param is_front_side [Boolean] - optional
85
+ def get_image_back(deposit_id:, is_front_side: false)
86
+ request = GetImageRequest.new(deposit_id, is_front_side: is_front_side)
87
+ Unit::Resource::CheckDepositResource.get_image(request)
88
+ end
89
+
90
+ # Update a check deposit
91
+ # @see https://docs.unit.co/check-deposits#update-check-deposit
92
+ # @param deposit_id [String]
93
+ # @param tags [Hash] - optional
94
+ def update_deposit(deposit_id:, tags:)
95
+ request = PatchDepositRequest.new(deposit_id, tags)
96
+ Unit::Resource::CheckDepositResource.update(request)
97
+ end
98
+
99
+ # Confirm check deposit details
100
+ # @see https://docs.unit.co/check-deposits#confirm-check-deposit-details
101
+ # @param deposit_id [String]
102
+ def confirm_details(deposit_id:)
103
+ Unit::Resource::CheckDepositResource.confirm_details(deposit_id)
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create check deposit
4
+ # @see https://docs.unit.co/check-deposits#create-check-deposit
5
+ module Unit
6
+ module CheckDeposit
7
+ class CreateCheckDepositRequest
8
+ attr_reader :account_id, :amount, :description, :tags, :idempotency_key
9
+
10
+ # @param account_id [String]
11
+ # @param amount [Integer]
12
+ # @param description [String]
13
+ # @param tags [Hash] - optional
14
+ # @param idempotency_key [String] - optional
15
+ def initialize(account_id, amount, description, tags = nil, idempotency_key = nil)
16
+ @account_id = account_id
17
+ @amount = amount
18
+ @description = description
19
+ @tags = tags
20
+ @idempotency_key = idempotency_key
21
+ end
22
+
23
+ def to_json_api
24
+ payload = {
25
+ "data": {
26
+ "type": "checkDeposit",
27
+ "attributes": {
28
+ amount: amount,
29
+ description: description,
30
+ tags: tags,
31
+ idempotency_key: idempotency_key
32
+ },
33
+ "relationships": {
34
+ "account": Unit::Types::Relationship.new("account", account_id).to_hash
35
+ }
36
+ }
37
+ }
38
+ payload[:data][:attributes].compact!
39
+ payload.to_json
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to get a check deposit image
4
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-front-image
5
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-back-image
6
+ module Unit
7
+ module CheckDeposit
8
+ class GetImageRequest
9
+ attr_reader :deposit_id, :is_front_side
10
+
11
+ # @param deposit_id [String]
12
+ # @param is_front_side [Boolean] - optional
13
+ def initialize(deposit_id, is_front_side: true)
14
+ @deposit_id = deposit_id
15
+ @is_front_side = is_front_side
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to get check deposit by id
4
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit
5
+ module Unit
6
+ module CheckDeposit
7
+ class GetRequest
8
+ attr_reader :deposit_id, :include
9
+
10
+ # @param deposit_id [String]
11
+ # @param include [Array<String>] - optional
12
+ def initialize(deposit_id, include = nil)
13
+ @deposit_id = deposit_id
14
+ @include = include
15
+ end
16
+
17
+ def to_hash
18
+ { include: include&.join(",") }.compact
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to list check deposits
4
+ # @see https://docs.unit.co/check-deposits#list-check-deposits
5
+ module Unit
6
+ module CheckDeposit
7
+ class ListDepositParams
8
+ attr_reader :limit, :offset, :account_id, :customer_id, :tags, :sort, :include
9
+
10
+ # @param limit [Integer] - optional
11
+ # @param offset [Integer] - optional
12
+ # @param account_id [String] - optional
13
+ # @param customer_id [String] - optional
14
+ # @param tags [Hash] - optional
15
+ # @param sort [String] - optional
16
+ # @param include [Array<String>] - optional
17
+ def initialize(limit = CHECK_DEPOSIT_LIMIT, offset = CHECK_DEPOSIT_OFFSET, account_id = nil,
18
+ customer_id = nil, tags = nil, sort = nil, include = nil)
19
+ @limit = limit
20
+ @offset = offset
21
+ @account_id = account_id
22
+ @customer_id = customer_id
23
+ @tags = tags
24
+ @sort = sort
25
+ @include = include
26
+ end
27
+
28
+ def to_hash
29
+ params = {
30
+ "page[limit]": limit,
31
+ "page[offset]": offset,
32
+ "filter[accountId]": account_id,
33
+ "filter[customerId]": customer_id,
34
+ "filter[tags]": tags,
35
+ "sort": sort,
36
+ "include": include&.join(",")
37
+ }
38
+ params.compact
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to update check deposit
4
+ # @see https://docs.unit.co/check-deposits#update-check-deposit
5
+ module Unit
6
+ module CheckDeposit
7
+ class PatchDepositRequest
8
+ attr_reader :deposit_id, :tags
9
+
10
+ # @param deposit_id [String]
11
+ # @param tags [Hash] - optional
12
+ def initialize(deposit_id, tags)
13
+ @deposit_id = deposit_id
14
+ @tags = tags
15
+ end
16
+
17
+ def to_json_api
18
+ payload = {
19
+ data: {
20
+ type: "checkDeposit",
21
+ attributes: { tags: tags }
22
+ }
23
+ }
24
+ payload[:data][:attributes].compact!
25
+ payload.to_json
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to upload a check deposit image
4
+ # @see https://docs.unit.co/check-deposits#upload-front-side-image
5
+ # @see https://docs.unit.co/check-deposits#upload-back-side-image
6
+
7
+ module Unit
8
+ module CheckDeposit
9
+ class UploadImageRequest
10
+ attr_reader :deposit_id, :file_content, :is_front_side
11
+
12
+ # @param deposit_id [String]
13
+ # @param file_content [String]
14
+ # @param is_front_side [Boolean] - optional
15
+ def initialize(deposit_id, file_content, is_front_side: true)
16
+ @deposit_id = deposit_id
17
+ @file_content = file_content
18
+ @is_front_side = is_front_side
19
+ end
20
+ end
21
+ end
22
+ end
@@ -6,8 +6,9 @@ require "json"
6
6
 
7
7
  module HttpHelper
8
8
  VALUES = [:"filter[searchRadius]"].freeze
9
- def self.get(url, headers:, params: nil)
10
- make_request(Net::HTTP::Get, url, headers, params: params)
9
+ RESPONSE_TYPES = %w[delete image].freeze
10
+ def self.get(url, headers:, params: nil, response_type: nil)
11
+ make_request(Net::HTTP::Get, url, headers, params: params, response_type: response_type)
11
12
  end
12
13
 
13
14
  def self.post(url, headers:, body: nil)
@@ -22,11 +23,11 @@ module HttpHelper
22
23
  make_request(Net::HTTP::Patch, url, headers, body: body)
23
24
  end
24
25
 
25
- def self.delete(url, headers:, body: nil)
26
- make_request(Net::HTTP::Delete, url, headers, body: body)
26
+ def self.delete(url, headers:, body: nil, response_type: nil)
27
+ make_request(Net::HTTP::Delete, url, headers, body: body, response_type: response_type)
27
28
  end
28
29
 
29
- def self.make_request(net_http, url, headers, body: nil, params: nil)
30
+ def self.make_request(net_http, url, headers, body: nil, params: nil, response_type: nil)
30
31
  uri = params.nil? ? URI(url) : URI("#{url}?#{encode(params)}")
31
32
  host = uri.host.to_s
32
33
  port = uri.port
@@ -36,13 +37,13 @@ module HttpHelper
36
37
  request = net_http.new uri, headers
37
38
  request.body = body unless body.nil?
38
39
  response = http.request request
39
- response.body = response_check(response)
40
+ response.body = response_check(response, response_type)
40
41
  response
41
42
  end
42
43
  end
43
44
 
44
- def self.response_check(response)
45
- if response.body.include?("html") || response.body.include?("PDF")
45
+ def self.response_check(response, response_type = nil)
46
+ if RESPONSE_TYPES.include?(response_type) || response.body.include?("html") || response.body.include?("PDF")
46
47
  response.body
47
48
  else
48
49
  JSON.parse(response.body)
data/lib/unit/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Unit
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.2"
5
5
  end
data/lib/unit_ruby_sdk.rb CHANGED
@@ -12,6 +12,7 @@ module Unit
12
12
  autoload :Card, "unit/models/card/card"
13
13
  autoload :Statement, "unit/models/statement/statement"
14
14
  autoload :AtmLocation, "unit/models/atm_location/atm_location"
15
+ autoload :CheckDeposit, "unit/models/check_deposit/check_deposit"
15
16
  module Resource
16
17
  autoload :ApplicationResource, "unit/api_resources/application_resource"
17
18
  autoload :CustomerResource, "unit/api_resources/customer_resource"
@@ -22,6 +23,7 @@ module Unit
22
23
  autoload :CardResource, "unit/api_resources/card_resource"
23
24
  autoload :StatementResource, "unit/api_resources/statement_resource"
24
25
  autoload :AtmLocationResource, "unit/api_resources/atm_location_resource"
26
+ autoload :CheckDepositResource, "unit/api_resources/check_deposit_resource"
25
27
  end
26
28
 
27
29
  module Types
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unit_ruby_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Unit
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-22 00:00:00.000000000 Z
11
+ date: 2023-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_bot_rails
@@ -100,6 +100,7 @@ files:
100
100
  - lib/unit/api_resources/atm_location_resource.rb
101
101
  - lib/unit/api_resources/base_resource.rb
102
102
  - lib/unit/api_resources/card_resource.rb
103
+ - lib/unit/api_resources/check_deposit_resource.rb
103
104
  - lib/unit/api_resources/customer_resource.rb
104
105
  - lib/unit/api_resources/payment_resource.rb
105
106
  - lib/unit/api_resources/statement_resource.rb
@@ -136,6 +137,13 @@ files:
136
137
  - lib/unit/models/card/create_individual_virtual_card_request.rb
137
138
  - lib/unit/models/card/list_card_params.rb
138
139
  - lib/unit/models/card/replace_card_request.rb
140
+ - lib/unit/models/check_deposit/check_deposit.rb
141
+ - lib/unit/models/check_deposit/create_check_deposit_request.rb
142
+ - lib/unit/models/check_deposit/get_image_request.rb
143
+ - lib/unit/models/check_deposit/get_request.rb
144
+ - lib/unit/models/check_deposit/list_deposit_params.rb
145
+ - lib/unit/models/check_deposit/patch_deposit_request.rb
146
+ - lib/unit/models/check_deposit/upload_image_request.rb
139
147
  - lib/unit/models/customer/add_authorized_users_request.rb
140
148
  - lib/unit/models/customer/archive_customer_request.rb
141
149
  - lib/unit/models/customer/customer.rb