lago-ruby-client 1.9.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lago/api/client.rb +12 -2
- data/lib/lago/api/resources/customer.rb +1 -0
- data/lib/lago/api/resources/event.rb +10 -0
- data/lib/lago/api/resources/invoice.rb +7 -0
- data/lib/lago/api/resources/organization.rb +1 -0
- data/lib/lago/api/resources/payment_request.rb +10 -0
- data/lib/lago/api/resources/plan.rb +21 -0
- data/lib/lago/api/resources/subscription.rb +29 -0
- data/lib/lago/version.rb +1 -1
- data/lib/lago-ruby-client.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a023542440c173fcf116ddf4a7b6fdfbf35a8e1cbd6c3777ebe8ccf57937a091
|
4
|
+
data.tar.gz: f760dab07b17914619072ce29f609094b8d19b80be0aa8413c772c9e3da5f575
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 912d82e80c071eb39d0b8ade98cac367bfec53598649b3a7ce480860d4d539806f0836befb6a8bf1bfcb41555045848c15c2f3e2dbdd4f203239d2f51987568e
|
7
|
+
data.tar.gz: 2cb0ba95a24dab5bff7b4e9d6755d1827f34c6486234f40ed23501d35a4699986cc4d729117fcb7901e4ebafefce83874c2a903527336c2c7d56a10d40acff66
|
data/lib/lago/api/client.rb
CHANGED
@@ -3,14 +3,17 @@
|
|
3
3
|
module Lago
|
4
4
|
module Api
|
5
5
|
BASE_URL = 'https://api.getlago.com/'
|
6
|
+
BASE_INGEST_URL = 'https://ingest.getlago.com/'
|
6
7
|
API_PATH = 'api/v1/'
|
7
8
|
|
8
9
|
class Client
|
9
|
-
attr_reader :api_key, :api_url
|
10
|
+
attr_reader :api_key, :api_url, :use_ingest_service, :ingest_api_url
|
10
11
|
|
11
|
-
def initialize(api_key: nil, api_url: nil)
|
12
|
+
def initialize(api_key: nil, api_url: nil, use_ingest_service: false, ingest_api_url: nil)
|
12
13
|
@api_key = api_key
|
13
14
|
@api_url = api_url
|
15
|
+
@use_ingest_service = use_ingest_service
|
16
|
+
@ingest_api_url = ingest_api_url
|
14
17
|
end
|
15
18
|
|
16
19
|
def base_api_url
|
@@ -19,6 +22,13 @@ module Lago
|
|
19
22
|
URI.join(base_url, Lago::Api::API_PATH)
|
20
23
|
end
|
21
24
|
|
25
|
+
def base_ingest_api_url
|
26
|
+
return base_api_url unless use_ingest_service
|
27
|
+
|
28
|
+
ingest_url = ingest_api_url.nil? ? Lago::Api::BASE_INGEST_URL : ingest_api_url
|
29
|
+
URI.join(ingest_url, Lago::Api::API_PATH)
|
30
|
+
end
|
31
|
+
|
22
32
|
def customers
|
23
33
|
Lago::Api::Resources::Customer.new(self)
|
24
34
|
end
|
@@ -72,6 +72,7 @@ module Lago
|
|
72
72
|
currency: params[:currency],
|
73
73
|
tax_codes: params[:tax_codes],
|
74
74
|
timezone: params[:timezone],
|
75
|
+
finalize_zero_amount_invoice: params[:finalize_zero_amount_invoice],
|
75
76
|
}
|
76
77
|
|
77
78
|
whitelist_billing_configuration(params[:billing_configuration]).tap do |config|
|
@@ -12,6 +12,16 @@ module Lago
|
|
12
12
|
'event'
|
13
13
|
end
|
14
14
|
|
15
|
+
def create(params)
|
16
|
+
uri = URI("#{client.base_ingest_api_url}#{api_resource}")
|
17
|
+
connection = Lago::Api::Connection.new(client.api_key, uri)
|
18
|
+
|
19
|
+
payload = whitelist_params(params)
|
20
|
+
response = connection.post(payload, uri)[root_name]
|
21
|
+
|
22
|
+
JSON.parse(response.to_json, object_class: OpenStruct)
|
23
|
+
end
|
24
|
+
|
15
25
|
def batch_create(params)
|
16
26
|
uri = URI("#{client.base_api_url}#{api_resource}/batch")
|
17
27
|
|
@@ -56,6 +56,13 @@ module Lago
|
|
56
56
|
JSON.parse(response.to_json, object_class: OpenStruct)
|
57
57
|
end
|
58
58
|
|
59
|
+
def retry(invoice_id)
|
60
|
+
path = "/api/v1/invoices/#{invoice_id}/retry"
|
61
|
+
response = connection.post({}, path)
|
62
|
+
|
63
|
+
JSON.parse(response.to_json, object_class: OpenStruct).invoice
|
64
|
+
end
|
65
|
+
|
59
66
|
def payment_url(invoice_id)
|
60
67
|
path = "/api/v1/invoices/#{invoice_id}/payment_url"
|
61
68
|
response = connection.post({}, path)['invoice_payment_details']
|
@@ -32,6 +32,7 @@ module Lago
|
|
32
32
|
email_settings: params[:email_settings],
|
33
33
|
document_numbering: params[:document_numbering],
|
34
34
|
document_number_prefix: params[:document_number_prefix],
|
35
|
+
finalize_zero_amount_invoice: params[:finalize_zero_amount_invoice],
|
35
36
|
}.compact
|
36
37
|
|
37
38
|
whitelist_billing_configuration(params[:billing_configuration]).tap do |config|
|
@@ -11,6 +11,16 @@ module Lago
|
|
11
11
|
def root_name
|
12
12
|
'payment_request'
|
13
13
|
end
|
14
|
+
|
15
|
+
def whitelist_params(params)
|
16
|
+
result_hash = {
|
17
|
+
email: params[:email],
|
18
|
+
external_customer_id: params[:external_customer_id],
|
19
|
+
lago_invoice_ids: params[:lago_invoice_ids]
|
20
|
+
}.compact
|
21
|
+
|
22
|
+
{ root_name => result_hash }
|
23
|
+
end
|
14
24
|
end
|
15
25
|
end
|
16
26
|
end
|
@@ -35,6 +35,10 @@ module Lago
|
|
35
35
|
result_hash[:minimum_commitment] = minimum_commitment
|
36
36
|
end
|
37
37
|
|
38
|
+
whitelist_usage_thresholds(params[:usage_thresholds]).tap do |usage_thresholds|
|
39
|
+
result_hash[:usage_thresholds] = usage_thresholds unless usage_thresholds.empty?
|
40
|
+
end
|
41
|
+
|
38
42
|
{ root_name => result_hash }
|
39
43
|
end
|
40
44
|
|
@@ -69,6 +73,23 @@ module Lago
|
|
69
73
|
|
70
74
|
processed_charges
|
71
75
|
end
|
76
|
+
|
77
|
+
def whitelist_usage_thresholds(usage_thresholds)
|
78
|
+
processed_usage_thresholds = []
|
79
|
+
|
80
|
+
usage_thresholds&.each do |c|
|
81
|
+
result = (c || {}).slice(
|
82
|
+
:id,
|
83
|
+
:threshold_display_name,
|
84
|
+
:amount_cents,
|
85
|
+
:recurring,
|
86
|
+
)
|
87
|
+
|
88
|
+
processed_usage_thresholds << result unless result.empty?
|
89
|
+
end
|
90
|
+
|
91
|
+
processed_usage_thresholds
|
92
|
+
end
|
72
93
|
end
|
73
94
|
end
|
74
95
|
end
|
@@ -12,6 +12,27 @@ module Lago
|
|
12
12
|
'subscription'
|
13
13
|
end
|
14
14
|
|
15
|
+
def lifetime_usage(external_subscription_id)
|
16
|
+
uri = URI(
|
17
|
+
"#{client.base_api_url}#{api_resource}/#{external_subscription_id}/lifetime_usage",
|
18
|
+
)
|
19
|
+
response = connection.get(uri, identifier: nil)
|
20
|
+
JSON.parse(response.to_json, object_class: OpenStruct).lifetime_usage
|
21
|
+
end
|
22
|
+
|
23
|
+
def update_lifetime_usage(external_subscription_id, params)
|
24
|
+
uri = URI(
|
25
|
+
"#{client.base_api_url}#{api_resource}/#{external_subscription_id}/lifetime_usage",
|
26
|
+
)
|
27
|
+
|
28
|
+
response = connection.put(
|
29
|
+
uri,
|
30
|
+
identifier: nil,
|
31
|
+
body: whitelist_lifetime_usage_params(params),
|
32
|
+
)
|
33
|
+
JSON.parse(response.to_json, object_class: OpenStruct).lifetime_usage
|
34
|
+
end
|
35
|
+
|
15
36
|
def whitelist_params(params)
|
16
37
|
{
|
17
38
|
root_name => {
|
@@ -26,6 +47,14 @@ module Lago
|
|
26
47
|
}.compact,
|
27
48
|
}
|
28
49
|
end
|
50
|
+
|
51
|
+
def whitelist_lifetime_usage_params(params)
|
52
|
+
{
|
53
|
+
lifetime_usage: {
|
54
|
+
external_historical_usage_amount_cents: params[:external_historical_usage_amount_cents],
|
55
|
+
},
|
56
|
+
}
|
57
|
+
end
|
29
58
|
end
|
30
59
|
end
|
31
60
|
end
|
data/lib/lago/version.rb
CHANGED
data/lib/lago-ruby-client.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lago-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lovro Colic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jwt
|