invoiced 1.1.0 → 2.1.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/.github/workflows/ci.yml +35 -0
- data/Gemfile +2 -2
- data/README.md +21 -5
- data/lib/invoiced/bank_account.rb +0 -1
- data/lib/invoiced/card.rb +0 -1
- data/lib/invoiced/charge.rb +12 -0
- data/lib/invoiced/credit_balance_adjustment.rb +10 -0
- data/lib/invoiced/custom_field.rb +10 -0
- data/lib/invoiced/customer_chasing_cadence.rb +10 -0
- data/lib/invoiced/email_template.rb +10 -0
- data/lib/invoiced/gl_account.rb +10 -0
- data/lib/invoiced/inbox.rb +7 -0
- data/lib/invoiced/invoice_chasing_cadence.rb +10 -0
- data/lib/invoiced/{catalog_item.rb → item.rb} +2 -2
- data/lib/invoiced/late_fee_schedule.rb +10 -0
- data/lib/invoiced/member.rb +10 -0
- data/lib/invoiced/merchant_account.rb +10 -0
- data/lib/invoiced/object.rb +5 -1
- data/lib/invoiced/{transaction.rb → payment.rb} +2 -14
- data/lib/invoiced/payment_method.rb +8 -0
- data/lib/invoiced/pdf_template.rb +10 -0
- data/lib/invoiced/refund.rb +11 -0
- data/lib/invoiced/report.rb +7 -0
- data/lib/invoiced/role.rb +10 -0
- data/lib/invoiced/sign_up_page.rb +10 -0
- data/lib/invoiced/sms_template.rb +10 -0
- data/lib/invoiced/tax_rule.rb +10 -0
- data/lib/invoiced/theme.rb +10 -0
- data/lib/invoiced/version.rb +1 -1
- data/lib/invoiced/webhook.rb +10 -0
- data/lib/invoiced.rb +48 -5
- data/test/invoiced/charge_test.rb +27 -0
- data/test/invoiced/contact_test.rb +10 -86
- data/test/invoiced/coupon_test.rb +10 -83
- data/test/invoiced/credit_balance_adjustment_test.rb +17 -0
- data/test/invoiced/credit_note_test.rb +10 -83
- data/test/invoiced/custom_field_test.rb +17 -0
- data/test/invoiced/customer_chasing_cadence_test.rb +17 -0
- data/test/invoiced/customer_test.rb +10 -83
- data/test/invoiced/email_template_test.rb +17 -0
- data/test/invoiced/estimate_test.rb +10 -83
- data/test/invoiced/event_test.rb +6 -21
- data/test/invoiced/file_test.rb +8 -47
- data/test/invoiced/gl_account_test.rb +17 -0
- data/test/invoiced/inbox_test.rb +13 -0
- data/test/invoiced/invoice_chasing_cadence_test.rb +17 -0
- data/test/invoiced/invoice_test.rb +10 -83
- data/test/invoiced/item_test.rb +17 -0
- data/test/invoiced/late_fee_schedule_test.rb +17 -0
- data/test/invoiced/line_item_test.rb +10 -86
- data/test/invoiced/member_test.rb +17 -0
- data/test/invoiced/merchant_account_test.rb +17 -0
- data/test/invoiced/note_test.rb +10 -83
- data/test/invoiced/operations/create_test.rb +22 -0
- data/test/invoiced/operations/delete_test.rb +20 -0
- data/test/invoiced/operations/endpoint_test.rb +13 -0
- data/test/invoiced/operations/list_test.rb +26 -0
- data/test/invoiced/operations/operations.rb +0 -0
- data/test/invoiced/operations/retrieve_test.rb +22 -0
- data/test/invoiced/operations/update_test.rb +29 -0
- data/test/invoiced/payment_method_test.rb +15 -0
- data/test/invoiced/payment_plan_test.rb +7 -0
- data/test/invoiced/payment_test.rb +34 -0
- data/test/invoiced/pdf_template_test.rb +17 -0
- data/test/invoiced/plan_test.rb +10 -83
- data/test/invoiced/refund_test.rb +27 -0
- data/test/invoiced/report_test.rb +14 -0
- data/test/invoiced/role_test.rb +17 -0
- data/test/invoiced/sign_up_page_test.rb +17 -0
- data/test/invoiced/sms_template_test.rb +17 -0
- data/test/invoiced/subscription_test.rb +10 -71
- data/test/invoiced/task_test.rb +10 -83
- data/test/invoiced/tax_rate_test.rb +10 -83
- data/test/invoiced/tax_rule_test.rb +17 -0
- data/test/invoiced/theme_test.rb +17 -0
- data/test/invoiced/webhook_test.rb +17 -0
- data/test/test_helper.rb +6 -0
- metadata +90 -13
- data/.travis.yml +0 -12
- data/test/invoiced/catalog_item_test.rb +0 -90
- data/test/invoiced/transaction_test.rb +0 -137
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a4b7176ca132f8c23b695c9f5ab7461400495c89370a953daef96b0e3d72ab6
|
4
|
+
data.tar.gz: 542389f7ff24edf9037fd6b380491b0a9431d8447e0f66a072f4dd2e64e0494a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05a9da20d885430266a929bd26320ff50691e14be9ba3e09bea0209645cd9196fa96a7f7867f5de36fbb7ee4e1abfda28a9912911f0330b34ea86841df4dce49
|
7
|
+
data.tar.gz: d716a1e9dfc4256469abb4ca963278f47583a8322ad9a4c0a6c00a66d6ad6b8fd84f718ce0461c7e54d90408eae947ac8941421914df8a4ef6b336762241c60a
|
@@ -0,0 +1,35 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: ["master"]
|
6
|
+
pull_request:
|
7
|
+
branches: ["master"]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
tests:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
matrix:
|
14
|
+
ruby-version:
|
15
|
+
- '2.1'
|
16
|
+
- '2.2'
|
17
|
+
- '2.3'
|
18
|
+
- '2.4'
|
19
|
+
- '2.5'
|
20
|
+
- '2.6'
|
21
|
+
- '2.7'
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
|
25
|
+
- name: Setup Ruby
|
26
|
+
uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: ${{ matrix.ruby-version }}
|
29
|
+
bundler-cache: true
|
30
|
+
|
31
|
+
- name: Tests
|
32
|
+
env:
|
33
|
+
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
34
|
+
run: |
|
35
|
+
bundle exec rake
|
data/Gemfile
CHANGED
@@ -9,7 +9,7 @@ gem 'shoulda', '~> 3.4.0', :require => false, :group => :test
|
|
9
9
|
gem 'test-unit', :require => false, :group => :test
|
10
10
|
gem 'rake', :require => false, :group => :test
|
11
11
|
gem 'coveralls', :require => false, :group => :test
|
12
|
-
gem 'simplecov', '~> 0.10
|
13
|
-
gem 'simplecov-console', '~> 0.3
|
12
|
+
gem 'simplecov', '~> 0.10', :require => false, :group => :test
|
13
|
+
gem 'simplecov-console', '~> 0.3', :require => false, :group => :test
|
14
14
|
gem 'term-ansicolor', '~> 1.3.2', :require => false, :group => :test
|
15
15
|
gem 'tins', '~> 1.6.0', :require => false, :group => :test
|
data/README.md
CHANGED
@@ -3,8 +3,9 @@ invoiced-ruby
|
|
3
3
|
|
4
4
|
This repository contains the Ruby client library for the [Invoiced](https://invoiced.com) API.
|
5
5
|
|
6
|
-
[](https://github.com/Invoiced/invoiced-php/actions/workflows/ci.yml)
|
7
7
|
[](https://coveralls.io/github/Invoiced/invoiced-ruby?branch=master)
|
8
|
+
[](https://badge.fury.io/rb/invoiced)
|
8
9
|
|
9
10
|
## Installing
|
10
11
|
|
@@ -44,10 +45,16 @@ Then, API calls can be made like this:
|
|
44
45
|
invoice = invoiced.Invoice.retrieve("{INVOICE_ID}")
|
45
46
|
|
46
47
|
# mark as paid
|
47
|
-
|
48
|
-
:invoice => invoice.id,
|
48
|
+
payment = invoiced.Payment.create(
|
49
49
|
:amount => invoice.balance,
|
50
|
-
:method => "check"
|
50
|
+
:method => "check",
|
51
|
+
:applied_to => [
|
52
|
+
{
|
53
|
+
:type => "invoice",
|
54
|
+
:invoice => invoice.id,
|
55
|
+
:amount => invoice.balance
|
56
|
+
}
|
57
|
+
])
|
51
58
|
```
|
52
59
|
|
53
60
|
If you want to use the sandbox API instead then you must set the second argument on the client to `true` like this:
|
@@ -66,4 +73,13 @@ The gem can be built with:
|
|
66
73
|
gem build invoiced.gemspec
|
67
74
|
```
|
68
75
|
|
69
|
-
The test suite can be ran with `rake test`
|
76
|
+
The test suite can be ran with `rake test`
|
77
|
+
|
78
|
+
## Deploying
|
79
|
+
|
80
|
+
The package can be uploaded to pypi with the following commands:
|
81
|
+
|
82
|
+
```
|
83
|
+
gem build invoiced.gemspec
|
84
|
+
gem push invoiced-X.Y.Z.gem
|
85
|
+
```
|
data/lib/invoiced/card.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
module Invoiced
|
2
|
+
class Charge < Object
|
3
|
+
OBJECT_NAME = 'charge'
|
4
|
+
|
5
|
+
def create(body={}, opts={})
|
6
|
+
response = @client.request(:post, endpoint(), body, opts)
|
7
|
+
|
8
|
+
payment = Payment.new(@client)
|
9
|
+
Util.convert_to_object(payment, response[:body])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Invoiced
|
2
|
+
class CreditBalanceAdjustment < Object
|
3
|
+
include Invoiced::Operations::List
|
4
|
+
include Invoiced::Operations::Create
|
5
|
+
include Invoiced::Operations::Update
|
6
|
+
include Invoiced::Operations::Delete
|
7
|
+
|
8
|
+
OBJECT_NAME = 'credit_balance_adjustment'
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Invoiced
|
2
|
+
class CustomerChasingCadence < Object
|
3
|
+
include Invoiced::Operations::List
|
4
|
+
include Invoiced::Operations::Create
|
5
|
+
include Invoiced::Operations::Update
|
6
|
+
include Invoiced::Operations::Delete
|
7
|
+
|
8
|
+
OBJECT_NAME = 'customer_chasing_cadence'
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Invoiced
|
2
|
+
class InvoiceChasingCadence < Object
|
3
|
+
include Invoiced::Operations::List
|
4
|
+
include Invoiced::Operations::Create
|
5
|
+
include Invoiced::Operations::Update
|
6
|
+
include Invoiced::Operations::Delete
|
7
|
+
|
8
|
+
OBJECT_NAME = 'invoice_chasing_cadence'
|
9
|
+
end
|
10
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Invoiced
|
2
|
-
class
|
2
|
+
class Item < Object
|
3
3
|
include Invoiced::Operations::List
|
4
4
|
include Invoiced::Operations::Create
|
5
5
|
include Invoiced::Operations::Update
|
6
6
|
include Invoiced::Operations::Delete
|
7
7
|
|
8
|
-
OBJECT_NAME = '
|
8
|
+
OBJECT_NAME = 'item'
|
9
9
|
end
|
10
10
|
end
|
data/lib/invoiced/object.rb
CHANGED
@@ -35,7 +35,11 @@ module Invoiced
|
|
35
35
|
|
36
36
|
def build_endpoint
|
37
37
|
if self.class.const_defined? "OBJECT_NAME"
|
38
|
-
|
38
|
+
if self.class::OBJECT_NAME == 'inbox'
|
39
|
+
'/inboxes'
|
40
|
+
else
|
41
|
+
'/' + self.class::OBJECT_NAME + 's'
|
42
|
+
end
|
39
43
|
else
|
40
44
|
'/objects'
|
41
45
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Invoiced
|
2
|
-
class
|
2
|
+
class Payment < Object
|
3
3
|
include Invoiced::Operations::List
|
4
4
|
include Invoiced::Operations::Create
|
5
5
|
include Invoiced::Operations::Update
|
6
6
|
include Invoiced::Operations::Delete
|
7
7
|
|
8
|
-
OBJECT_NAME = '
|
8
|
+
OBJECT_NAME = 'payment'
|
9
9
|
|
10
10
|
def send(params={}, opts={})
|
11
11
|
response = @client.request(:post, "#{self.endpoint()}/emails", params, opts)
|
@@ -14,17 +14,5 @@ module Invoiced
|
|
14
14
|
email = Email.new(@client)
|
15
15
|
Util.build_objects(email, response[:body])
|
16
16
|
end
|
17
|
-
|
18
|
-
def refund(params={}, opts={})
|
19
|
-
response = @client.request(:post, "#{self.endpoint()}/refunds", params, opts)
|
20
|
-
|
21
|
-
Util.convert_to_object(self, response[:body])
|
22
|
-
end
|
23
|
-
|
24
|
-
def initiate_charge(params={}, opts={})
|
25
|
-
response = @client.request(:post, "/charges", params, opts)
|
26
|
-
|
27
|
-
Util.convert_to_object(self, response[:body])
|
28
|
-
end
|
29
17
|
end
|
30
18
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Invoiced
|
2
|
+
class Refund < Object
|
3
|
+
OBJECT_NAME = 'refund'
|
4
|
+
|
5
|
+
def create(chargeId, body={}, opts={})
|
6
|
+
response = @client.request(:post, @endpoint_base + "/charges/#{chargeId}/refunds", body, opts)
|
7
|
+
|
8
|
+
Util.convert_to_object(self, response[:body])
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/invoiced/version.rb
CHANGED
data/lib/invoiced.rb
CHANGED
@@ -19,30 +19,52 @@ require 'invoiced/operations/update'
|
|
19
19
|
|
20
20
|
require 'invoiced/object'
|
21
21
|
require 'invoiced/payment_source_object'
|
22
|
+
|
22
23
|
require 'invoiced/attachment'
|
23
24
|
require 'invoiced/bank_account'
|
24
25
|
require 'invoiced/card'
|
25
|
-
require 'invoiced/
|
26
|
+
require 'invoiced/charge'
|
26
27
|
require 'invoiced/contact'
|
27
28
|
require 'invoiced/coupon'
|
29
|
+
require 'invoiced/credit_balance_adjustment'
|
28
30
|
require 'invoiced/credit_note'
|
31
|
+
require 'invoiced/custom_field'
|
29
32
|
require 'invoiced/customer'
|
33
|
+
require 'invoiced/customer_chasing_cadence'
|
30
34
|
require 'invoiced/email'
|
35
|
+
require 'invoiced/email_template'
|
31
36
|
require 'invoiced/estimate'
|
32
37
|
require 'invoiced/event'
|
33
38
|
require 'invoiced/file'
|
39
|
+
require 'invoiced/gl_account'
|
40
|
+
require 'invoiced/inbox'
|
34
41
|
require 'invoiced/invoice'
|
42
|
+
require 'invoiced/invoice_chasing_cadence'
|
43
|
+
require 'invoiced/item'
|
44
|
+
require 'invoiced/late_fee_schedule'
|
35
45
|
require 'invoiced/letter'
|
36
46
|
require 'invoiced/line_item'
|
47
|
+
require 'invoiced/member'
|
48
|
+
require 'invoiced/merchant_account'
|
37
49
|
require 'invoiced/note'
|
50
|
+
require 'invoiced/payment'
|
51
|
+
require 'invoiced/payment_method'
|
38
52
|
require 'invoiced/payment_plan'
|
39
53
|
require 'invoiced/payment_source'
|
54
|
+
require 'invoiced/pdf_template'
|
40
55
|
require 'invoiced/plan'
|
56
|
+
require 'invoiced/refund'
|
57
|
+
require 'invoiced/report'
|
58
|
+
require 'invoiced/role'
|
59
|
+
require 'invoiced/sign_up_page'
|
60
|
+
require 'invoiced/sms_template'
|
41
61
|
require 'invoiced/subscription'
|
42
62
|
require 'invoiced/task'
|
43
63
|
require 'invoiced/tax_rate'
|
64
|
+
require 'invoiced/tax_rule'
|
44
65
|
require 'invoiced/text_message'
|
45
|
-
require 'invoiced/
|
66
|
+
require 'invoiced/theme'
|
67
|
+
require 'invoiced/webhook'
|
46
68
|
|
47
69
|
module Invoiced
|
48
70
|
class Client
|
@@ -53,7 +75,7 @@ module Invoiced
|
|
53
75
|
ReadTimeout = 80
|
54
76
|
|
55
77
|
attr_reader :api_key, :api_url, :sandbox, :sso_key
|
56
|
-
attr_reader :
|
78
|
+
attr_reader :Charge, :Coupon, :CreditBalanceAdjustment, :CreditNote, :CustomField, :Customer, :CustomerChasingCadence, :EmailTemplate, :Estimate, :Event, :File, :GlAccount, :Inbox, :Invoice, :InvoiceChasingCadence, :Item, :LateFeeSchedule, :Member, :MerchantAccount, :Note, :Payment, :PaymentMethod, :PdfTemplate, :Plan, :Refund, :Report, :Role, :SignUpPage, :SmsTemplate, :Subscription, :Task, :TaxRate, :TaxRule, :Theme, :Webhook
|
57
79
|
|
58
80
|
def initialize(api_key, sandbox=false, sso_key=false)
|
59
81
|
@api_key = api_key
|
@@ -62,20 +84,41 @@ module Invoiced
|
|
62
84
|
@sso_key = sso_key
|
63
85
|
|
64
86
|
# Object endpoints
|
65
|
-
@
|
87
|
+
@Charge = Invoiced::Charge.new(self)
|
66
88
|
@Coupon = Invoiced::Coupon.new(self)
|
89
|
+
@CreditBalanceAdjustment = Invoiced::CreditBalanceAdjustment.new(self)
|
67
90
|
@CreditNote = Invoiced::CreditNote.new(self)
|
91
|
+
@CustomField = Invoiced::CustomField.new(self)
|
68
92
|
@Customer = Invoiced::Customer.new(self)
|
93
|
+
@CustomerChasingCadence = Invoiced::CustomerChasingCadence.new(self)
|
94
|
+
@EmailTemplate = Invoiced::EmailTemplate.new(self)
|
69
95
|
@Estimate = Invoiced::Estimate.new(self)
|
70
96
|
@Event = Invoiced::Event.new(self)
|
71
97
|
@File = Invoiced::File.new(self)
|
98
|
+
@GlAccount = Invoiced::GlAccount.new(self)
|
99
|
+
@Inbox = Invoiced::Inbox.new(self)
|
72
100
|
@Invoice = Invoiced::Invoice.new(self)
|
101
|
+
@InvoiceChasingCadence = Invoiced::InvoiceChasingCadence.new(self)
|
102
|
+
@Item = Invoiced::Item.new(self)
|
103
|
+
@LateFeeSchedule = Invoiced::LateFeeSchedule.new(self)
|
104
|
+
@Member = Invoiced::Member.new(self)
|
105
|
+
@MerchantAccount = Invoiced::MerchantAccount.new(self)
|
73
106
|
@Note = Invoiced::Note.new(self)
|
107
|
+
@Payment = Invoiced::Payment.new(self)
|
108
|
+
@PaymentMethod = Invoiced::PaymentMethod.new(self)
|
109
|
+
@PdfTemplate = Invoiced::PdfTemplate.new(self)
|
74
110
|
@Plan = Invoiced::Plan.new(self)
|
111
|
+
@Refund = Invoiced::Refund.new(self)
|
112
|
+
@Report = Invoiced::Report.new(self)
|
113
|
+
@Role = Invoiced::Role.new(self)
|
114
|
+
@SignUpPage = Invoiced::SignUpPage.new(self)
|
115
|
+
@SmsTemplate = Invoiced::SmsTemplate.new(self)
|
75
116
|
@Subscription = Invoiced::Subscription.new(self)
|
76
117
|
@Task = Invoiced::Task.new(self)
|
77
118
|
@TaxRate = Invoiced::TaxRate.new(self)
|
78
|
-
@
|
119
|
+
@TaxRule = Invoiced::TaxRule.new(self)
|
120
|
+
@Theme = Invoiced::Theme.new(self)
|
121
|
+
@Webhook = Invoiced::Webhook.new(self)
|
79
122
|
end
|
80
123
|
|
81
124
|
def request(method, endpoint, params={}, opts={})
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
2
|
+
|
3
|
+
module Invoiced
|
4
|
+
class ChargeTest < Test::Unit::TestCase
|
5
|
+
include Invoiced::Operations::EndpointTest
|
6
|
+
|
7
|
+
setup do
|
8
|
+
@objectClass = Charge
|
9
|
+
@endpoint = '/charges'
|
10
|
+
end
|
11
|
+
|
12
|
+
should "create a charge" do
|
13
|
+
mockResponse = mock('RestClient::Response')
|
14
|
+
mockResponse.stubs(:code).returns(201)
|
15
|
+
mockResponse.stubs(:body).returns('{"id":"a1b2c3","amount":100,"object":"charge"}')
|
16
|
+
mockResponse.stubs(:headers).returns({})
|
17
|
+
|
18
|
+
RestClient::Request.any_instance.expects(:execute).returns(mockResponse)
|
19
|
+
|
20
|
+
charge = Charge.new(@client, 1234)
|
21
|
+
payment = charge.create(:amount => 100, :payment_source_type => "card")
|
22
|
+
|
23
|
+
assert_instance_of(Invoiced::Payment, payment)
|
24
|
+
assert_equal(payment.id, "a1b2c3")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|