lago-ruby-client 1.10.0 → 1.11.0

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: b7d714be8c838702df1fa8cfe4a8ab87cfebf2dfc8b6cecb3f92409293f2d579
4
- data.tar.gz: 611ad0fe3b6e3978090c0d84d20b54d93d7cbcfcf1dfbd315988e4590b2d6e05
3
+ metadata.gz: a023542440c173fcf116ddf4a7b6fdfbf35a8e1cbd6c3777ebe8ccf57937a091
4
+ data.tar.gz: f760dab07b17914619072ce29f609094b8d19b80be0aa8413c772c9e3da5f575
5
5
  SHA512:
6
- metadata.gz: 50b62e58757101cd210e4117dfdb64a707184baa2e17faafe9eb45b753197cd8d21f78c0e0beb59d4a0d57b4221dfd64462591de0da46bc58addf908bdd1cad0
7
- data.tar.gz: 51ca6572c5a9cffa9080a813d5921e2d7e2eb5b1ade7fded76a5256e082b0333a3f3a4be4bde23268bc972a761b0c7680bd4e15da541c8536d4e60d11700ea38
6
+ metadata.gz: 912d82e80c071eb39d0b8ade98cac367bfec53598649b3a7ce480860d4d539806f0836befb6a8bf1bfcb41555045848c15c2f3e2dbdd4f203239d2f51987568e
7
+ data.tar.gz: 2cb0ba95a24dab5bff7b4e9d6755d1827f34c6486234f40ed23501d35a4699986cc4d729117fcb7901e4ebafefce83874c2a903527336c2c7d56a10d40acff66
@@ -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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lago
4
- VERSION = '1.10.0'
4
+ VERSION = '1.11.0'
5
5
  end
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.10.0
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-09-02 00:00:00.000000000 Z
11
+ date: 2024-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt