yield-sdk 0.5.1 → 0.7.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/.rubocop.yml +51 -0
- data/README.md +25 -10
- data/Rakefile +11 -2
- data/Steepfile +20 -0
- data/docs/index.md +12 -0
- data/docs/modules/customer.md +64 -0
- data/docs/modules/order.md +93 -0
- data/docs/modules/self.md +48 -0
- data/lib/yield/sdk/api/api_client.rb +54 -37
- data/lib/yield/sdk/api/api_error.rb +39 -0
- data/lib/yield/sdk/api/api_error_details.rb +9 -0
- data/lib/yield/sdk/api/api_result.rb +23 -6
- data/lib/yield/sdk/base_client.rb +6 -3
- data/lib/yield/sdk/client.rb +7 -4
- data/lib/yield/sdk/modules/customer/customer_base_client.rb +27 -0
- data/lib/yield/sdk/modules/customer/customer_client.rb +19 -0
- data/lib/yield/sdk/modules/customer/payloads/customer_credit_line_info.rb +22 -0
- data/lib/yield/sdk/modules/customer/payloads/customer_list_payload.rb +20 -0
- data/lib/yield/sdk/modules/customer/payloads/customer_row.rb +28 -0
- data/lib/yield/sdk/modules/order/order_base_client.rb +4 -1
- data/lib/yield/sdk/modules/order/payloads/order.rb +21 -11
- data/lib/yield/sdk/modules/order/payloads/order_create_payload.rb +1 -1
- data/lib/yield/sdk/modules/order/payloads/order_customer_info.rb +11 -5
- data/lib/yield/sdk/modules/order/payloads/order_status.rb +1 -1
- data/lib/yield/sdk/modules/self/payloads/self_info.rb +9 -5
- data/lib/yield/sdk/modules/self/payloads/self_organization_info.rb +9 -5
- data/lib/yield/sdk/types/cursor_payload.rb +19 -0
- data/lib/yield/sdk/types/money.rb +6 -3
- data/lib/yield/sdk/types/money_payload.rb +7 -3
- data/lib/yield/sdk/types/page.rb +51 -0
- data/lib/yield/sdk/utils/type_utils.rb +71 -0
- data/lib/yield/sdk/version.rb +3 -3
- data/lib/yield/sdk.rb +2 -1
- data/sig/vendor/faraday.rbs +23 -0
- data/sig/yield/sdk/api/api_client.rbs +26 -0
- data/sig/yield/sdk/api/api_error.rbs +13 -0
- data/sig/yield/sdk/api/api_error_details.rbs +14 -0
- data/sig/yield/sdk/api/api_result.rbs +19 -0
- data/sig/yield/sdk/base_client.rbs +13 -0
- data/sig/yield/sdk/client.rbs +13 -0
- data/sig/yield/sdk/modules/customer/customer_base_client.rbs +11 -0
- data/sig/yield/sdk/modules/customer/customer_client.rbs +11 -0
- data/sig/yield/sdk/modules/customer/payloads/customer_credit_line_info.rbs +13 -0
- data/sig/yield/sdk/modules/customer/payloads/customer_list_payload.rbs +16 -0
- data/sig/yield/sdk/modules/customer/payloads/customer_row.rbs +16 -0
- data/sig/yield/sdk/modules/order/payloads/order.rbs +30 -0
- data/sig/yield/sdk/modules/order/payloads/order_create_payload.rbs +15 -0
- data/sig/yield/sdk/modules/order/payloads/order_customer_info.rbs +15 -0
- data/sig/yield/sdk/modules/order/payloads/order_status.rbs +10 -0
- data/sig/yield/sdk/modules/order/self_base_client.rbs +12 -0
- data/sig/yield/sdk/modules/order/self_client.rbs +12 -0
- data/sig/yield/sdk/modules/self/payloads/self_info.rbs +14 -0
- data/sig/yield/sdk/modules/self/payloads/self_organization_info.rbs +14 -0
- data/sig/yield/sdk/modules/self/self_base_client.rbs +11 -0
- data/sig/yield/sdk/modules/self/self_client.rbs +11 -0
- data/sig/yield/sdk/types/cursor_payload.rbs +14 -0
- data/sig/yield/sdk/types/money.rbs +12 -0
- data/sig/yield/sdk/types/money_payload.rbs +15 -0
- data/sig/yield/sdk/types/page.rbs +20 -0
- data/sig/yield/sdk/utils/type_utils.rbs +26 -0
- data/sig/yield/sdk/version.rbs +8 -0
- data/sig/yield/sdk.rbs +0 -2
- metadata +66 -7
- data/.standard.yml +0 -3
- data/lib/yield/sdk/utils.rb +0 -36
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "uri"
|
4
|
+
|
5
|
+
require_relative "../../api/api_client"
|
6
|
+
require_relative "../../types/page"
|
7
|
+
require_relative "payloads/customer_row"
|
8
|
+
require_relative "payloads/customer_list_payload"
|
9
|
+
|
10
|
+
module Yield
|
11
|
+
module SDK
|
12
|
+
module Customer
|
13
|
+
class BaseClient
|
14
|
+
def initialize(api_client)
|
15
|
+
@api = api_client
|
16
|
+
end
|
17
|
+
|
18
|
+
def list(params = nil)
|
19
|
+
payload = params.nil? ? nil : CustomerListPayload.build(params)
|
20
|
+
response = @api.run_query("/customer/list", payload)
|
21
|
+
|
22
|
+
API::Client.process_response(response, &Page.build_with(&CustomerRow.method(:from_payload)))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "customer_base_client"
|
4
|
+
|
5
|
+
module Yield
|
6
|
+
module SDK
|
7
|
+
module Customer
|
8
|
+
class Client
|
9
|
+
def initialize(base_client)
|
10
|
+
@base = base_client
|
11
|
+
end
|
12
|
+
|
13
|
+
def list(params = nil)
|
14
|
+
@base.list(params).data
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../../types/money"
|
4
|
+
require_relative "../../../utils/type_utils"
|
5
|
+
|
6
|
+
module Yield
|
7
|
+
module SDK
|
8
|
+
module Customer
|
9
|
+
CustomerCreditLineInfo = Data.define(
|
10
|
+
:credit_limit,
|
11
|
+
:amount_available,
|
12
|
+
) do
|
13
|
+
def self.from_payload(payload)
|
14
|
+
new(
|
15
|
+
credit_limit: Money.from_payload(TypeUtils.expect_string(payload[:credit_limit])),
|
16
|
+
amount_available: Money.from_payload(TypeUtils.expect_string(payload[:amount_available])),
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../../types/cursor_payload"
|
4
|
+
|
5
|
+
module Yield
|
6
|
+
module SDK
|
7
|
+
module Customer
|
8
|
+
class CustomerListPayload
|
9
|
+
def self.build(params)
|
10
|
+
{
|
11
|
+
limit: params[:limit],
|
12
|
+
after: params[:after].nil? ? nil : CursorPayload.build(params[:after]),
|
13
|
+
customer_code: params[:customer_code],
|
14
|
+
extra_system_id: params[:extra_system_id],
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../../utils/type_utils"
|
4
|
+
require_relative "customer_credit_line_info"
|
5
|
+
|
6
|
+
module Yield
|
7
|
+
module SDK
|
8
|
+
module Customer
|
9
|
+
CustomerRow = Data.define(
|
10
|
+
:id,
|
11
|
+
:registered_name,
|
12
|
+
:trade_name,
|
13
|
+
:customer_code,
|
14
|
+
:credit_line,
|
15
|
+
) do
|
16
|
+
def self.from_payload(payload)
|
17
|
+
new(
|
18
|
+
id: TypeUtils.expect_string(payload[:id]),
|
19
|
+
registered_name: TypeUtils.expect_string(payload[:registered_name]),
|
20
|
+
trade_name: payload[:trade_name].nil? ? nil : TypeUtils.expect_string(payload[:trade_name]),
|
21
|
+
customer_code: payload[:customer_code].nil? ? nil : TypeUtils.expect_string(payload[:customer_code]),
|
22
|
+
credit_line: payload[:credit_line].nil? ? nil : CustomerCreditLineInfo.from_payload(TypeUtils.expect_record(payload[:credit_line])),
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "uri"
|
4
|
+
|
3
5
|
require_relative "../../api/api_client"
|
4
6
|
require_relative "payloads/order"
|
5
7
|
require_relative "payloads/order_create_payload"
|
@@ -13,7 +15,8 @@ module Yield
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def fetch(id)
|
16
|
-
|
18
|
+
encoded_id = URI.encode_uri_component(id)
|
19
|
+
response = @api.run_query("/order/fetch/#{encoded_id}")
|
17
20
|
|
18
21
|
API::Client.process_response(response, &Order.method(:from_payload))
|
19
22
|
end
|
@@ -3,25 +3,35 @@
|
|
3
3
|
require "date"
|
4
4
|
|
5
5
|
require_relative "../../../types/money"
|
6
|
-
require_relative "../../../utils"
|
6
|
+
require_relative "../../../utils/type_utils"
|
7
7
|
require_relative "order_customer_info"
|
8
8
|
require_relative "order_status"
|
9
9
|
|
10
10
|
module Yield
|
11
11
|
module SDK
|
12
12
|
module Order
|
13
|
-
|
13
|
+
Order = Data.define(
|
14
|
+
:id,
|
15
|
+
:order_number,
|
16
|
+
:status,
|
17
|
+
:customer,
|
18
|
+
:date,
|
19
|
+
:total_amount,
|
20
|
+
:note,
|
21
|
+
:payment_link,
|
22
|
+
:creation_time,
|
23
|
+
) do
|
14
24
|
def self.from_payload(payload)
|
15
25
|
new(
|
16
|
-
id:
|
17
|
-
order_number:
|
18
|
-
status:
|
19
|
-
customer: payload[:customer].nil? ? nil : OrderCustomerInfo.from_payload(
|
20
|
-
date:
|
21
|
-
total_amount: Money.from_payload(
|
22
|
-
note: payload[:note].nil? ? nil :
|
23
|
-
payment_link: payload[:payment_link].nil? ? nil :
|
24
|
-
creation_time:
|
26
|
+
id: TypeUtils.expect_string(payload[:id]),
|
27
|
+
order_number: TypeUtils.expect_string(payload[:order_number]),
|
28
|
+
status: TypeUtils.expect_variant(OrderStatus::ALL, payload[:status]),
|
29
|
+
customer: payload[:customer].nil? ? nil : OrderCustomerInfo.from_payload(TypeUtils.expect_record(payload[:customer])),
|
30
|
+
date: TypeUtils.expect_date(TypeUtils.expect_string(payload[:date])),
|
31
|
+
total_amount: Money.from_payload(TypeUtils.expect_string(payload[:total_amount])),
|
32
|
+
note: payload[:note].nil? ? nil : TypeUtils.expect_string(payload[:note]),
|
33
|
+
payment_link: payload[:payment_link].nil? ? nil : TypeUtils.expect_string(payload[:payment_link]),
|
34
|
+
creation_time: TypeUtils.expect_time(TypeUtils.expect_string(payload[:creation_time])),
|
25
35
|
)
|
26
36
|
end
|
27
37
|
end
|
@@ -1,16 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "../../../utils"
|
3
|
+
require_relative "../../../utils/type_utils"
|
4
4
|
|
5
5
|
module Yield
|
6
6
|
module SDK
|
7
7
|
module Order
|
8
|
-
|
8
|
+
OrderCustomerInfo = Data.define(
|
9
|
+
:id,
|
10
|
+
:registered_name,
|
11
|
+
:trade_name,
|
12
|
+
:customer_code,
|
13
|
+
) do
|
9
14
|
def self.from_payload(payload)
|
10
15
|
new(
|
11
|
-
id:
|
12
|
-
registered_name:
|
13
|
-
trade_name: payload[:trade_name].nil? ? nil :
|
16
|
+
id: TypeUtils.expect_string(payload[:id]),
|
17
|
+
registered_name: TypeUtils.expect_string(payload[:registered_name]),
|
18
|
+
trade_name: payload[:trade_name].nil? ? nil : TypeUtils.expect_string(payload[:trade_name]),
|
19
|
+
customer_code: payload[:customer_code].nil? ? nil : TypeUtils.expect_string(payload[:customer_code]),
|
14
20
|
)
|
15
21
|
end
|
16
22
|
end
|
@@ -1,17 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "../../../utils"
|
3
|
+
require_relative "../../../utils/type_utils"
|
4
4
|
require_relative "self_organization_info"
|
5
5
|
|
6
6
|
module Yield
|
7
7
|
module SDK
|
8
8
|
module Self
|
9
|
-
|
9
|
+
SelfInfo = Data.define(
|
10
|
+
:id,
|
11
|
+
:name,
|
12
|
+
:organization,
|
13
|
+
) do
|
10
14
|
def self.from_payload(payload)
|
11
15
|
new(
|
12
|
-
id:
|
13
|
-
name:
|
14
|
-
organization: SelfOrganizationInfo.from_payload(
|
16
|
+
id: TypeUtils.expect_string(payload[:id]),
|
17
|
+
name: TypeUtils.expect_string(payload[:name]),
|
18
|
+
organization: SelfOrganizationInfo.from_payload(TypeUtils.expect_record(payload[:organization])),
|
15
19
|
)
|
16
20
|
end
|
17
21
|
end
|
@@ -1,16 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "../../../utils"
|
3
|
+
require_relative "../../../utils/type_utils"
|
4
4
|
|
5
5
|
module Yield
|
6
6
|
module SDK
|
7
7
|
module Self
|
8
|
-
|
8
|
+
SelfOrganizationInfo = Data.define(
|
9
|
+
:id,
|
10
|
+
:registered_name,
|
11
|
+
:trade_name,
|
12
|
+
) do
|
9
13
|
def self.from_payload(payload)
|
10
14
|
new(
|
11
|
-
id:
|
12
|
-
registered_name:
|
13
|
-
trade_name: payload[:trade_name].nil? ? nil :
|
15
|
+
id: TypeUtils.expect_string(payload[:id]),
|
16
|
+
registered_name: TypeUtils.expect_string(payload[:registered_name]),
|
17
|
+
trade_name: payload[:trade_name].nil? ? nil : TypeUtils.expect_string(payload[:trade_name]),
|
14
18
|
)
|
15
19
|
end
|
16
20
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "page"
|
4
|
+
|
5
|
+
module Yield
|
6
|
+
module SDK
|
7
|
+
class CursorPayload
|
8
|
+
def self.build(cursor)
|
9
|
+
if cursor.is_a?(String)
|
10
|
+
cursor
|
11
|
+
elsif cursor.is_a?(Page)
|
12
|
+
cursor.last&.id
|
13
|
+
else
|
14
|
+
cursor.id
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -4,12 +4,15 @@ require "bigdecimal"
|
|
4
4
|
|
5
5
|
module Yield
|
6
6
|
module SDK
|
7
|
-
|
7
|
+
Money = Data.define(:currency_code, :value) do
|
8
8
|
def self.from_payload(payload)
|
9
9
|
m = payload.match(/^([A-Z]{3}) (-?\d+(?:\.\d+)?)$/)
|
10
|
-
raise ArgumentError, "Invalid money: #{payload}" if m.nil?
|
10
|
+
raise ArgumentError, "Invalid money: \"#{payload}\"" if m.nil?
|
11
11
|
|
12
|
-
|
12
|
+
# Defined for type-checking reasons
|
13
|
+
m1 = m[1] # : String
|
14
|
+
m2 = m[2] # : String
|
15
|
+
new(currency_code: m1.to_sym, value: BigDecimal(m2))
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
@@ -4,9 +4,13 @@ module Yield
|
|
4
4
|
module SDK
|
5
5
|
class MoneyPayload
|
6
6
|
def self.build(money)
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
if money.is_a?(String)
|
8
|
+
money
|
9
|
+
elsif money.is_a?(Array)
|
10
|
+
"#{money[0]} #{money[1].to_s("F")}"
|
11
|
+
else
|
12
|
+
"#{money.currency_code} #{money.value.to_s("F")}"
|
13
|
+
end
|
10
14
|
end
|
11
15
|
end
|
12
16
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../utils/type_utils"
|
4
|
+
|
5
|
+
module Yield
|
6
|
+
module SDK
|
7
|
+
class Page
|
8
|
+
include Enumerable
|
9
|
+
|
10
|
+
attr_accessor :has_more
|
11
|
+
|
12
|
+
def initialize(items:, has_more:)
|
13
|
+
@items = items
|
14
|
+
@has_more = has_more
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.build_with(&from_payload_block)
|
18
|
+
lambda { |payload|
|
19
|
+
Page.new(
|
20
|
+
items: TypeUtils.expect_record_list(payload[:items]).map(&from_payload_block),
|
21
|
+
has_more: TypeUtils.expect_boolean(payload[:has_more]),
|
22
|
+
)
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_a
|
27
|
+
@items.dup
|
28
|
+
end
|
29
|
+
|
30
|
+
def size
|
31
|
+
@items.size
|
32
|
+
end
|
33
|
+
|
34
|
+
def length
|
35
|
+
size
|
36
|
+
end
|
37
|
+
|
38
|
+
def [](index)
|
39
|
+
@items[index]
|
40
|
+
end
|
41
|
+
|
42
|
+
def last
|
43
|
+
@items.last
|
44
|
+
end
|
45
|
+
|
46
|
+
def each(&block)
|
47
|
+
@items.each(&block)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "date"
|
4
|
+
require "time"
|
5
|
+
|
6
|
+
module Yield
|
7
|
+
module SDK
|
8
|
+
module TypeUtils
|
9
|
+
module_function
|
10
|
+
|
11
|
+
def expect_boolean(data)
|
12
|
+
raise TypeError, "Expected bool, got #{data.class}" unless data == true || data == false
|
13
|
+
|
14
|
+
data # : bool
|
15
|
+
end
|
16
|
+
|
17
|
+
def expect_integer(data)
|
18
|
+
raise TypeError, "Expected Integer, got #{data.class}" unless data.is_a?(Integer)
|
19
|
+
|
20
|
+
data
|
21
|
+
end
|
22
|
+
|
23
|
+
def expect_string(data)
|
24
|
+
raise TypeError, "Expected String, got #{data.class}" unless data.is_a?(String)
|
25
|
+
|
26
|
+
data
|
27
|
+
end
|
28
|
+
|
29
|
+
def expect_date(data)
|
30
|
+
raise TypeError, "Expected String, got #{data.class}" unless data.is_a?(String)
|
31
|
+
|
32
|
+
m = data.match(/^(\d{4})-(\d{2})-(\d{2})$/)
|
33
|
+
raise ArgumentError, "Invalid date: \"#{data}\"" if m.nil?
|
34
|
+
|
35
|
+
Date.new(m[1].to_i, m[2].to_i, m[3].to_i)
|
36
|
+
end
|
37
|
+
|
38
|
+
def expect_time(data)
|
39
|
+
raise TypeError, "Expected String, got #{data.class}" unless data.is_a?(String)
|
40
|
+
|
41
|
+
Time.strptime(data, "%FT%T.%L%Z")
|
42
|
+
end
|
43
|
+
|
44
|
+
def expect_variant(variants, data) # steep:ignore MethodBodyTypeMismatch
|
45
|
+
raise TypeError, "Expected String, got #{data.class}" unless data.is_a?(String)
|
46
|
+
|
47
|
+
symbol = data.downcase.to_sym
|
48
|
+
|
49
|
+
raise ArgumentError, "Invalid variant: \"#{data}\"" unless variants.include?(symbol) # steep:ignore ArgumentTypeMismatch
|
50
|
+
|
51
|
+
symbol
|
52
|
+
end
|
53
|
+
|
54
|
+
def expect_record(data)
|
55
|
+
raise TypeError, "Expected Hash, got #{data.class}" unless data.is_a?(Hash)
|
56
|
+
|
57
|
+
data
|
58
|
+
end
|
59
|
+
|
60
|
+
def expect_list(data)
|
61
|
+
raise TypeError, "Expected Array, got #{data.class}" unless data.is_a?(Array)
|
62
|
+
|
63
|
+
data
|
64
|
+
end
|
65
|
+
|
66
|
+
def expect_record_list(data)
|
67
|
+
expect_list(data).map(&method(:expect_record))
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/yield/sdk/version.rb
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
module Yield
|
4
4
|
module SDK
|
5
|
-
VERSION = "0.
|
5
|
+
VERSION = "0.7.0"
|
6
6
|
|
7
7
|
module_function
|
8
8
|
|
9
9
|
def client_version
|
10
|
-
|
11
|
-
runtime_version = "#{RUBY_ENGINE} #{
|
10
|
+
m = RUBY_ENGINE_VERSION.match(/^\d+(\.\d+)?/)
|
11
|
+
runtime_version = m.nil? ? RUBY_ENGINE : "#{RUBY_ENGINE} #{m[0]}"
|
12
12
|
|
13
13
|
"Yield-SDK-Ruby/#{VERSION} (#{runtime_version})"
|
14
14
|
end
|
data/lib/yield/sdk.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Ideally we should use RBS collections, but it's very incomplete and full of untyped:
|
2
|
+
# https://github.com/ruby/gem_rbs_collection/blob/main/gems/faraday/2.5/faraday.rbs
|
3
|
+
# Even the yard docs offer better specs:
|
4
|
+
# https://gemdocs.org/gems/faraday/2.13.1/
|
5
|
+
# We could contribute back, but it's much easier to scope this based on our actual usage.
|
6
|
+
|
7
|
+
class Faraday::Connection
|
8
|
+
def run_request: (:get | :post method, String url, String? body, Hash[String, String]? headers) -> Faraday::Response
|
9
|
+
end
|
10
|
+
|
11
|
+
class Faraday::Response
|
12
|
+
attr_reader status: Integer
|
13
|
+
attr_reader body: String
|
14
|
+
attr_reader headers: Hash[String, String]
|
15
|
+
|
16
|
+
def success?: () -> bool
|
17
|
+
def []: (String) -> String?
|
18
|
+
end
|
19
|
+
|
20
|
+
module Faraday
|
21
|
+
def self.new: (?String) -> Faraday::Connection
|
22
|
+
| (?String) { (Faraday::Connection) -> void } -> Faraday::Connection
|
23
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Yield
|
2
|
+
module SDK
|
3
|
+
module API
|
4
|
+
class Client
|
5
|
+
def initialize: (String api_key, ?base_url: String?, ?conn: Faraday::Connection?) -> void
|
6
|
+
|
7
|
+
def self.extract_api_key: (String) -> [String, String]
|
8
|
+
def self.build_signature: (String hmac_key, String timestamp, String path, ?String? body) -> String
|
9
|
+
def self.process_response: [R] (Faraday::Response response) { (Hash[Symbol, Object]) -> R } -> Result[R]
|
10
|
+
|
11
|
+
def run_query: (String, ?Hash[Symbol, String | Integer | nil]?) -> Faraday::Response
|
12
|
+
def run_command: (String, Object) -> Faraday::Response
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
@base_url: String
|
17
|
+
@api_key_token: String
|
18
|
+
@api_key_hmac_key: String
|
19
|
+
@conn: Faraday::Connection
|
20
|
+
@client_version: String
|
21
|
+
|
22
|
+
def call_endpoint: (:get | :post, String, Object?) -> Faraday::Response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Yield
|
2
|
+
module SDK
|
3
|
+
module API
|
4
|
+
class Error < StandardError
|
5
|
+
attr_reader status_code: Integer
|
6
|
+
attr_reader request_id: String?
|
7
|
+
attr_reader details: ErrorDetails
|
8
|
+
|
9
|
+
def initialize: (Integer, String?, ErrorDetails) -> void
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Yield
|
2
|
+
module SDK
|
3
|
+
module API
|
4
|
+
class ErrorDetails
|
5
|
+
attr_reader type: String
|
6
|
+
attr_reader body: Hash[String, Object]?
|
7
|
+
attr_reader exception: StandardError?
|
8
|
+
|
9
|
+
def initialize: (String, Hash[String, Object]?, StandardError?) -> void
|
10
|
+
| (type: String, body: Hash[String, Object]?, exception: StandardError?) -> void
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Yield
|
2
|
+
module SDK
|
3
|
+
module API
|
4
|
+
class Result[T]
|
5
|
+
attr_reader status_code: Integer
|
6
|
+
attr_reader request_id: String?
|
7
|
+
attr_reader data: T
|
8
|
+
attr_reader error: ErrorDetails?
|
9
|
+
|
10
|
+
def initialize: (status_code: Integer, request_id: String?, data: T, error: ErrorDetails?) -> void
|
11
|
+
|
12
|
+
def self.success: [D] (Integer, String?, D) -> Result[D]
|
13
|
+
def self.failure: (Integer, String?, String, Hash[String, Object]?, StandardError?) -> Result[untyped]
|
14
|
+
|
15
|
+
def ok?: -> bool
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Yield
|
2
|
+
module SDK
|
3
|
+
class BaseClient
|
4
|
+
attr_reader api: API::Client
|
5
|
+
|
6
|
+
attr_reader customer: Customer::BaseClient
|
7
|
+
attr_reader order: Order::BaseClient
|
8
|
+
attr_reader self: Self::BaseClient
|
9
|
+
|
10
|
+
def initialize: (String api_key, ?base_url: String?, ?conn: Faraday::Connection?) -> void
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Yield
|
2
|
+
module SDK
|
3
|
+
class Client
|
4
|
+
attr_reader base: BaseClient
|
5
|
+
|
6
|
+
attr_reader customer: Customer::Client
|
7
|
+
attr_reader order: Order::Client
|
8
|
+
attr_reader self: Self::Client
|
9
|
+
|
10
|
+
def initialize: (String api_key, ?base_url: String?, ?conn: Faraday::Connection?) -> void
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|