octobat 2.0.23 → 2.0.27

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 815744f0c2438e26e9b7a02925d19d8a84abdbfca27b14f3916b480275b298c0
4
- data.tar.gz: 35d7fb3ecfab0651db58ca2d6d56714edb7bd9bc9f3eaef29cb7bc953f8e5714
3
+ metadata.gz: 1bca99a3a300bda82d8c7a309b0f099a1ee34466dfbe7cee55e93ed345812b48
4
+ data.tar.gz: 189ae2089b0a474acdba96ecec291bac48c9bdbb8e223368241f5ff1134ee529
5
5
  SHA512:
6
- metadata.gz: c73e7e3bb62aa742648968e0f8cdf5b694f8da8a7aba4ecd44f45d07f84893921aa4854a5217a763a200f6d87dd3d1b2563d32ec97a946df6ebf7d405254dfbf
7
- data.tar.gz: 5a99d50d763f162b436a4a6ffd7239a095abaaf36416909d8df1ead630bf11c1e12c5fe3556b6dac0573f6189d75f710be833792fbd704b65d95b457d5504031
6
+ metadata.gz: a16248e1a906edeb532862a962b947da225b5d1fa0acff055c38c70a1b22d050242256fdb3cb865738b875f4986d910e961c3ab348812d7c01fb891b96041fd4
7
+ data.tar.gz: 01e16e4fc91131bb1a13395026d171f5c45cd75d1eae4e7808e55da03adbeb93a349a64e7ac9ee3f7eac84b57521477ffbdcf826c38ae1ed6803ad0937629649
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- octobat (2.0.23)
4
+ octobat (2.0.27)
5
5
  rest-client (>= 1.4, < 4.0)
6
6
 
7
7
  GEM
@@ -10,11 +10,11 @@ GEM
10
10
  domain_name (0.5.20190701)
11
11
  unf (>= 0.0.5, < 1.0.0)
12
12
  http-accept (1.7.0)
13
- http-cookie (1.0.3)
13
+ http-cookie (1.0.4)
14
14
  domain_name (~> 0.5)
15
15
  mime-types (3.3.1)
16
16
  mime-types-data (~> 3.2015)
17
- mime-types-data (3.2020.1104)
17
+ mime-types-data (3.2021.0704)
18
18
  netrc (0.11.0)
19
19
  rest-client (2.1.0)
20
20
  http-accept (>= 1.7.0, < 2.0)
data/History.txt CHANGED
@@ -1,3 +1,21 @@
1
+ === 2.0.27 2021-05-31
2
+ * 1 minor update:
3
+ * URI.escape is deprecated
4
+
5
+ === 2.0.26 2021-05-31
6
+ * 2 major enhancements:
7
+ * Add support for Octobat Plaza endpoints
8
+ * Add persistence of the octobat_account header through requests
9
+
10
+ === 2.0.25 2020-12-24
11
+ * 2 major enhancements:
12
+ * Add support for Subscription object
13
+ * Add support for UsageItem object
14
+
15
+ === 2.0.24 2020-12-15
16
+ * 1 minor enhancements:
17
+ * Add support for Invoice#mark_uncollectible endpoint
18
+
1
19
  === 2.0.23 2020-12-03
2
20
  * 1 minor enhancements:
3
21
  * Add support for Invoice#set_payment_terms endpoint
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.23
1
+ 2.0.27
data/lib/octobat.rb CHANGED
@@ -55,10 +55,19 @@ require 'octobat/document_email_template'
55
55
  require 'octobat/exports_setting'
56
56
  require 'octobat/emails_setting'
57
57
  require 'octobat/tax_id'
58
+ require 'octobat/subscription'
59
+ require 'octobat/usage_item'
58
60
 
59
61
  require 'octobat/file_upload'
60
62
  require 'octobat/file_link'
63
+
61
64
  require 'octobat/beanie/session'
65
+
66
+ require 'octobat/plaza/account'
67
+ require 'octobat/plaza/capability'
68
+ require 'octobat/plaza/country_spec'
69
+
70
+
62
71
  require 'octobat/reporting/report_type'
63
72
  require 'octobat/reporting/report_run'
64
73
 
@@ -43,6 +43,11 @@ module Octobat
43
43
  refresh_from(response, api_key)
44
44
  end
45
45
 
46
+ def mark_uncollectible(params = {}, opts = {})
47
+ response, api_key = Octobat.request(:patch, mark_uncollectible_url, @api_key, params, opts)
48
+ refresh_from(response, api_key)
49
+ end
50
+
46
51
 
47
52
  def cancel(params = {}, opts = {})
48
53
  response, api_key = Octobat.request(:patch, cancel_url, @api_key, params, opts)
@@ -78,6 +83,10 @@ module Octobat
78
83
  url + '/confirm'
79
84
  end
80
85
 
86
+ def mark_uncollectible_url
87
+ url + '/mark_uncollectible'
88
+ end
89
+
81
90
  def set_payment_terms_url
82
91
  url + '/set_payment_terms'
83
92
  end
@@ -24,8 +24,10 @@ module Octobat
24
24
  @api_key = opts[:api_key]
25
25
 
26
26
  @retrieve_options.merge!(opts.clone).delete(:api_key)
27
+
27
28
  @headers['Octobat-Version'] = @retrieve_options.delete('Octobat-Version') if @retrieve_options.has_key?('Octobat-Version')
28
-
29
+ @headers[:octobat_account] = @retrieve_options.delete(:octobat_account) if @retrieve_options.has_key?(:octobat_account)
30
+
29
31
  @values = {}
30
32
  # This really belongs in APIResource, but not putting it there allows us
31
33
  # to have a unified inspect method
@@ -0,0 +1,39 @@
1
+ module Octobat
2
+ module Plaza
3
+ class Account < Octobat::APIResource
4
+ extend Octobat::APIOperations::List
5
+ include Octobat::APIOperations::Create
6
+ include Octobat::APIOperations::Update
7
+
8
+ def self.url
9
+ '/plaza/accounts'
10
+ end
11
+
12
+ def activate(params = {}, opts = {})
13
+ response, api_key = Octobat.request(:patch, activate_url, @api_key, params, opts)
14
+ refresh_from(response, api_key)
15
+ end
16
+
17
+ def deactivate(params = {}, opts = {})
18
+ response, api_key = Octobat.request(:patch, deactivate_url, @api_key, params, opts)
19
+ refresh_from(response, api_key)
20
+ end
21
+
22
+ def list_capabilities(params = {}, opts = {})
23
+ Capability.list(params.merge({ :account => id }), {api_key: @api_key}.merge(opts))
24
+ end
25
+
26
+
27
+ private
28
+ def activate_url
29
+ url + '/activate'
30
+ end
31
+
32
+ def deactivate_url
33
+ url + '/deactivate'
34
+ end
35
+
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,56 @@
1
+ module Octobat
2
+ module Plaza
3
+ class Capability < Octobat::APIResource
4
+ extend Octobat::APIOperations::List
5
+
6
+ def url
7
+ !parent_obj.nil? ? parentize_url : super
8
+ end
9
+
10
+ def ask(params = {}, opts = {})
11
+ response, api_key = Octobat.request(:patch, ask_url, @api_key, params, opts)
12
+ refresh_from(response, api_key)
13
+ end
14
+
15
+ def save_url
16
+ if self[:id] == nil && self.class.respond_to?(:create)
17
+ self.relative_save_url
18
+ else
19
+ url
20
+ end
21
+ end
22
+
23
+
24
+ def parentize_url
25
+ if parent_obj.include?(:account)
26
+ "#{Account.url}/#{CGI.escape(parent_obj[:account])}/capabilities/#{CGI.escape(id)}"
27
+ else
28
+ url
29
+ end
30
+ end
31
+
32
+
33
+
34
+ def relative_save_url
35
+ if self[:account]
36
+ "#{Account.url}/#{CGI.escape(self[:account])}/capabilities"
37
+ end
38
+ end
39
+
40
+ def ask_url
41
+ "#{parentize_url}/request"
42
+ end
43
+
44
+ def self.url
45
+ if @parent_resource.include?(:account)
46
+ "#{Account.url}/#{CGI.escape(@parent_resource[:account])}/capabilities"
47
+ end
48
+ end
49
+
50
+ def self.set_parent_resource(filters)
51
+ @parent_resource = filters.select{|k, v| [:account].include?(k)}
52
+ end
53
+
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,12 @@
1
+ module Octobat
2
+ module Plaza
3
+ class CountrySpec < Octobat::APIResource
4
+ extend Octobat::APIOperations::List
5
+
6
+ def self.url
7
+ '/plaza/country_specs'
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ module Octobat
2
+ class Subscription < APIResource
3
+ extend Octobat::APIOperations::List
4
+ include Octobat::APIOperations::Create
5
+
6
+ def usage_items(params = {}, opts = {})
7
+ UsageItem.list(params.merge({ subscription: id }), { api_key: @api_key }.merge(opts))
8
+ end
9
+
10
+ end
11
+
12
+
13
+ end
@@ -0,0 +1,51 @@
1
+ module Octobat
2
+ class UsageItem < APIResource
3
+ extend Octobat::APIOperations::List
4
+ include Octobat::APIOperations::Create
5
+ include Octobat::APIOperations::Delete
6
+
7
+
8
+ def url
9
+ !parent_obj.nil? ? parentize_url : super
10
+ end
11
+
12
+
13
+ def save_url
14
+ if self[:id] == nil && self.class.respond_to?(:create)
15
+ self.relative_save_url
16
+ else
17
+ url
18
+ end
19
+ end
20
+
21
+
22
+ def parentize_url
23
+ if parent_obj.include?(:subscription)
24
+ "#{Subscription.url}/#{CGI.escape(parent_obj[:subscription])}/usage_items/#{CGI.escape(id)}"
25
+ else
26
+ url
27
+ end
28
+ end
29
+
30
+
31
+
32
+ def relative_save_url
33
+ if self[:subscription]
34
+ "#{Subscription.url}/#{CGI.escape(self[:subscription])}/usage_items"
35
+ end
36
+ end
37
+
38
+
39
+ def self.url
40
+ if @parent_resource.include?(:subscription)
41
+ "#{Subscription.url}/#{CGI.escape(@parent_resource[:subscription])}/usage_items"
42
+ end
43
+ end
44
+
45
+ def self.set_parent_resource(filters)
46
+ @parent_resource = filters.select{|k, v| [:subscription].include?(k)}
47
+ end
48
+
49
+
50
+ end
51
+ end
data/lib/octobat/util.rb CHANGED
@@ -70,9 +70,14 @@ module Octobat
70
70
  'exports_setting' => ExportsSetting,
71
71
  'document' => Document,
72
72
  'emails_setting' => EmailsSetting,
73
+ 'subscription' => Subscription,
74
+ 'usage_item' => UsageItem,
73
75
  'file' => FileUpload,
74
76
  'file_link' => FileLink,
75
77
  'beanie.session' => Beanie::Session,
78
+ 'plaza.account' => Plaza::Account,
79
+ 'plaza.capability' => Plaza::Capability,
80
+ 'plaza.country_spec' => Plaza::CountrySpec,
76
81
  'reporting.report_type' => Reporting::ReportType,
77
82
  'reporting.report_run' => Reporting::ReportRun
78
83
  }
@@ -122,7 +127,7 @@ module Octobat
122
127
  end
123
128
 
124
129
  def self.url_encode(key)
125
- URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
130
+ URI.encode_www_form_component(key.to_s)
126
131
  end
127
132
 
128
133
  def self.flatten_params(params, parent_key=nil)
@@ -1,3 +1,3 @@
1
1
  module Octobat
2
- VERSION = '2.0.23'
2
+ VERSION = '2.0.27'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octobat
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.23
4
+ version: 2.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gaultier Laperche
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-03 00:00:00.000000000 Z
11
+ date: 2021-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -94,6 +94,9 @@ files:
94
94
  - lib/octobat/payment_recipient_reference.rb
95
95
  - lib/octobat/payment_source.rb
96
96
  - lib/octobat/payout.rb
97
+ - lib/octobat/plaza/account.rb
98
+ - lib/octobat/plaza/capability.rb
99
+ - lib/octobat/plaza/country_spec.rb
97
100
  - lib/octobat/product.rb
98
101
  - lib/octobat/proforma_invoice.rb
99
102
  - lib/octobat/purchase_item.rb
@@ -101,12 +104,14 @@ files:
101
104
  - lib/octobat/reporting/report_type.rb
102
105
  - lib/octobat/self_billing_invoice.rb
103
106
  - lib/octobat/singleton_api_resource.rb
107
+ - lib/octobat/subscription.rb
104
108
  - lib/octobat/supplier.rb
105
109
  - lib/octobat/tax_evidence.rb
106
110
  - lib/octobat/tax_evidence_request.rb
107
111
  - lib/octobat/tax_id.rb
108
112
  - lib/octobat/tax_region_setting.rb
109
113
  - lib/octobat/transaction.rb
114
+ - lib/octobat/usage_item.rb
110
115
  - lib/octobat/util.rb
111
116
  - lib/octobat/version.rb
112
117
  - octobat.gemspec