moneybird 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dab722d83709b10c7b270ce93f7be1e2788bf0b8
4
- data.tar.gz: f1ab282131eddae6da3233621ba6fda5538389e3
3
+ metadata.gz: 4f4ecb53d09bc1ba540403d9904dd2fe6901c638
4
+ data.tar.gz: 054eddbe0ffd6cbc5c9db69436f1b385d81643e7
5
5
  SHA512:
6
- metadata.gz: 109f072481d347616421e212bff2a5f4ba77ecf4b88c85c520e5cf1ce9c81cddd47a92eba7087c0d2b8a1870c3e9c8f441a2db07e18067ee45d3825838bb64a9
7
- data.tar.gz: 9d0721e8e2af058b18b5de23694230edaaf88ddddc92e5831d52fa4f9043ff1bdaeba79de7110fa2950ad25a10f0f795aa0f6e4c2dca09f18514947bea8a32da
6
+ metadata.gz: 4e39d70f345ef056dafd921018cb615e1dc976805cacf064222b1cf0e2eebef769ac07e08e37984906decde2b734e71718ccb7a4ce6afc2e0a1e13945088fcae
7
+ data.tar.gz: 410d875bc02399096676393fa17da05cf94c1ef186e8f9fb958c7b02bf57ba535ab747a1445573ec55acc31ebdcfbbffb9f4c94ff9a463a3c5b7751b095b47cf
data/.kick ADDED
@@ -0,0 +1,17 @@
1
+ require 'set'
2
+
3
+ process do |file, flags|
4
+ test_files = Set.new
5
+ case file
6
+ when %r(^spec/.*_spec.rb$)
7
+ test_files << file
8
+ when %r(^lib/(.*).rb)
9
+ test_files << 'spec/lib/' + $1 + '_spec.rb'
10
+ end
11
+
12
+ test_files = test_files.select { |filename| File.exist?(filename) }
13
+
14
+ unless test_files.empty?
15
+ watcher.execute("rake test TEST=#{test_files.to_a.join(' ')}")
16
+ end
17
+ end
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
2
+ require "rake/testtask"
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ Rake::TestTask.new do |t|
5
+ t.libs.push 'spec'
6
+ t.test_files = FileList['spec/**/*_spec.rb']
7
+ end
5
8
 
6
- task :default => :spec
9
+ task default: :test
data/lib/moneybird.rb CHANGED
@@ -1,10 +1,32 @@
1
+ require 'uri'
1
2
  require 'json'
2
- require "moneybird/resource"
3
- require "moneybird/client"
4
- require "moneybird/contact"
5
- require "moneybird/administration"
6
- require "moneybird/sales_invoice"
7
- require "moneybird/version"
3
+ require 'net/http'
8
4
 
9
5
  module Moneybird
6
+ module Service; end;
7
+ module Traits; end;
10
8
  end
9
+
10
+ require "moneybird/traits/administration_service"
11
+ require "moneybird/traits/find_all"
12
+
13
+ require "moneybird/service/administration"
14
+ require "moneybird/service/contact"
15
+ require "moneybird/service/estimate"
16
+ require "moneybird/service/sales_invoice"
17
+ require "moneybird/service/product"
18
+
19
+ require "moneybird/client"
20
+
21
+ require "moneybird/resource"
22
+ require "moneybird/resource/contact"
23
+ require "moneybird/resource/administration"
24
+ require "moneybird/resource/product"
25
+ require "moneybird/resource/estimate"
26
+ require "moneybird/resource/workflow"
27
+ require "moneybird/resource/tax_rate"
28
+ require "moneybird/resource/webhook"
29
+ require "moneybird/resource/sales_invoice"
30
+ require "moneybird/resource/recurring_sales_invoice"
31
+
32
+ require "moneybird/version"
@@ -1,10 +1,11 @@
1
1
  module Moneybird
2
2
  class Client
3
- attr_reader :bearer, :_last_response
3
+ attr_reader :bearer_token, :_last_response
4
4
  attr_accessor :errors
5
+ attr_writer :http
5
6
 
6
- def initialize(bearer)
7
- @bearer = bearer
7
+ def initialize(bearer_token)
8
+ @bearer_token = bearer_token
8
9
  end
9
10
 
10
11
  def base_url
@@ -28,7 +29,7 @@ module Moneybird
28
29
  {
29
30
  'Accept' => 'application/json',
30
31
  'Content-Type' => 'application/json',
31
- 'Authorization' => "Bearer #{bearer}"
32
+ 'Authorization' => "Bearer #{bearer_token}"
32
33
  }
33
34
  end
34
35
 
@@ -0,0 +1,43 @@
1
+ module Moneybird::Resource
2
+ class Administration
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ name
9
+ language
10
+ currency
11
+ country
12
+ time_zone
13
+ )
14
+
15
+ def sales_invoices
16
+ Moneybird::SalesInvoice::Service.new(@client, id).all
17
+ end
18
+
19
+ def recurring_sales_invoices
20
+ Moneybird::RecurringSalesInvoice::Service.new(@client, id).all
21
+ end
22
+
23
+ def contacts
24
+ Moneybird::Contact::Service.new(@client, id).all
25
+ end
26
+
27
+ def estimates
28
+ Moneybird::Estimate::Service.new(@client, id).all
29
+ end
30
+
31
+ def products
32
+ Moneybird::Product::Service.new(@client, id).all
33
+ end
34
+
35
+ def webhooks
36
+ Moneybird::Webhook::Service.new(@client, id).all
37
+ end
38
+
39
+ def workflows
40
+ Moneybird::Workflow::Service.new(@client, id).all
41
+ end
42
+ end
43
+ end
@@ -1,4 +1,4 @@
1
- module Moneybird
1
+ module Moneybird::Resource
2
2
  class Contact
3
3
  include Moneybird::Resource
4
4
  extend Moneybird::Resource::ClassMethods
@@ -41,23 +41,6 @@ module Moneybird
41
41
  notes
42
42
  custom_fields
43
43
  )
44
-
45
- class Service
46
- attr_reader :client, :administation_id
47
-
48
- def initialize(client, administation_id)
49
- @client = client
50
- @administation_id = administation_id
51
- end
52
-
53
- def all
54
- result = client.get("#{administation_id}/contacts")
55
-
56
- JSON.parse(result.body).map do |invoice|
57
- Contact.new(self, invoice)
58
- end
59
- end
60
- end
61
44
  end
62
45
  end
63
46
 
@@ -0,0 +1,61 @@
1
+ module Moneybird::Resource
2
+ class Estimate
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ contact_id
9
+ contact
10
+ details
11
+ estimate_id
12
+ workflow_id
13
+ document_style_id
14
+ identity_id
15
+ state
16
+ estimate_date
17
+ due_date
18
+ reference
19
+ language
20
+ currency
21
+ exchange_rate
22
+ discount
23
+ original_estimate_id
24
+ show_tax
25
+ sign_online
26
+ sent_at
27
+ accepted_at
28
+ rejected_at
29
+ archived_at
30
+ created_at
31
+ updated_at
32
+ pre_text
33
+ post_text
34
+ total_price_excl_tax
35
+ total_price_excl_tax_base
36
+ total_price_incl_tax
37
+ total_price_incl_tax_base
38
+ url
39
+ custom_fields
40
+ notes
41
+ attachments
42
+ )
43
+
44
+ class Service
45
+ attr_reader :client, :administration_id
46
+
47
+ def initialize(client, administration_id)
48
+ @client = client
49
+ @administration_id = administration_id
50
+ end
51
+
52
+ def all
53
+ result = client.get("#{administration_id}/estimates")
54
+
55
+ JSON.parse(result.body).map do |invoice|
56
+ Estimate.new(self, invoice)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,35 @@
1
+ module Moneybird::Resource
2
+ class FinancialAccount
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ description
9
+ price
10
+ tax_rate_id
11
+ ledger_account_id
12
+ created_at
13
+ updated_at
14
+ )
15
+
16
+ class Service
17
+ attr_reader :client, :administration_id
18
+
19
+ def initialize(client, administration_id)
20
+ @client = client
21
+ @administration_id = administration_id
22
+ end
23
+
24
+ def all
25
+ result = client.get("#{administration_id}/financial_accounts")
26
+
27
+ JSON.parse(result.body).map do |invoice|
28
+ FinancialAccount.new(self, invoice)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+
@@ -0,0 +1,33 @@
1
+ module Moneybird::Resource
2
+ class FinancialMutation
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ description
9
+ price
10
+ tax_rate_id
11
+ ledger_account_id
12
+ created_at
13
+ updated_at
14
+ )
15
+
16
+ class Service
17
+ attr_reader :client, :administration_id
18
+
19
+ def initialize(client, administration_id)
20
+ @client = client
21
+ @administration_id = administration_id
22
+ end
23
+
24
+ def all
25
+ result = client.get("#{administration_id}/financial_mutations")
26
+
27
+ JSON.parse(result.body).map do |invoice|
28
+ FinancialMutation.new(self, invoice)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,35 @@
1
+ module Moneybird::Resource
2
+ class Identity
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ description
9
+ price
10
+ tax_rate_id
11
+ ledger_account_id
12
+ created_at
13
+ updated_at
14
+ )
15
+
16
+ class Service
17
+ attr_reader :client, :administration_id
18
+
19
+ def initialize(client, administration_id)
20
+ @client = client
21
+ @administration_id = administration_id
22
+ end
23
+
24
+ def all
25
+ result = client.get("#{administration_id}/identities")
26
+
27
+ JSON.parse(result.body).map do |invoice|
28
+ Identity.new(self, invoice)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+
@@ -0,0 +1,35 @@
1
+ module Moneybird::Resource
2
+ class Product
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ description
9
+ price
10
+ tax_rate_id
11
+ ledger_account_id
12
+ created_at
13
+ updated_at
14
+ )
15
+
16
+ class Service
17
+ attr_reader :client, :administration_id
18
+
19
+ def initialize(client, administration_id)
20
+ @client = client
21
+ @administration_id = administration_id
22
+ end
23
+
24
+ def all
25
+ result = client.get("#{administration_id}/products")
26
+
27
+ JSON.parse(result.body).map do |invoice|
28
+ Product.new(self, invoice)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+
@@ -0,0 +1,58 @@
1
+ module Moneybird::Resource
2
+ class RecurringSalesInvoice
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ contact_id
9
+ contact
10
+ workflow_id
11
+ start_date
12
+ invoice_date
13
+ last_date
14
+ active
15
+ payment_conditions
16
+ reference
17
+ language
18
+ currency
19
+ discount
20
+ first_due_interval
21
+ auto_send
22
+ sending_scheduled_at
23
+ sending_scheduled_user_id
24
+ frequency_type
25
+ frequency
26
+ created_at
27
+ updated_at
28
+ prices_are_incl_tax
29
+ total_price_excl_tax
30
+ total_price_excl_tax_base
31
+ total_price_incl_tax
32
+ total_price_incl_tax_base
33
+ details
34
+ notes
35
+ attachments
36
+ )
37
+
38
+ class Service
39
+ attr_reader :client, :administration_id
40
+
41
+ def initialize(client, administration_id)
42
+ @client = client
43
+ @administration_id = administration_id
44
+ end
45
+
46
+ def all
47
+ result = client.get("#{administration_id}/recurring_sales_invoices")
48
+
49
+ JSON.parse(result.body).map do |invoice|
50
+ RecurringSalesInvoice.new(self, invoice)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+
@@ -1,4 +1,4 @@
1
- module Moneybird
1
+ module Moneybird::Resource
2
2
  class SalesInvoice
3
3
  include Moneybird::Resource
4
4
  extend Moneybird::Resource::ClassMethods
@@ -40,15 +40,15 @@ module Moneybird
40
40
  )
41
41
 
42
42
  class Service
43
- attr_reader :client, :administation_id
43
+ attr_reader :client, :administration_id
44
44
 
45
- def initialize(client, administation_id)
45
+ def initialize(client, administration_id)
46
46
  @client = client
47
- @administation_id = administation_id
47
+ @administration_id = administration_id
48
48
  end
49
49
 
50
50
  def all
51
- result = client.get("#{administation_id}/sales_invoices")
51
+ result = client.get("#{administration_id}/sales_invoices")
52
52
 
53
53
  JSON.parse(result.body).map do |invoice|
54
54
  SalesInvoice.new(self, invoice)
@@ -0,0 +1,34 @@
1
+ module Moneybird::Resource
2
+ class TaxRate
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ name
9
+ percentage
10
+ tax_rate_type
11
+ show_tax
12
+ active
13
+ created_at
14
+ updated_at
15
+ )
16
+
17
+ class Service
18
+ attr_reader :client, :administration_id
19
+
20
+ def initialize(client, administration_id)
21
+ @client = client
22
+ @administration_id = administration_id
23
+ end
24
+
25
+ def all
26
+ result = client.get("#{administration_id}/tax_rates")
27
+
28
+ JSON.parse(result.body).map do |invoice|
29
+ TaxRate.new(self, invoice)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,32 @@
1
+ module Moneybird::Resource
2
+ class Webhook
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ url
9
+ last_http_status
10
+ last_http_body
11
+ )
12
+
13
+ class Service
14
+ attr_reader :client, :administration_id
15
+
16
+ def initialize(client, administration_id)
17
+ @client = client
18
+ @administration_id = administration_id
19
+ end
20
+
21
+ def all
22
+ result = client.get("#{administration_id}/webhooks")
23
+
24
+ JSON.parse(result.body).map do |invoice|
25
+ Webhook.new(self, invoice)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+
@@ -0,0 +1,38 @@
1
+ module Moneybird::Resource
2
+ class Workflow
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ type
9
+ name
10
+ default
11
+ currency
12
+ language
13
+ active
14
+ prices_are_incl_tax
15
+ created_at
16
+ updated_at
17
+ )
18
+
19
+ class Service
20
+ attr_reader :client, :administration_id
21
+
22
+ def initialize(client, administration_id)
23
+ @client = client
24
+ @administration_id = administration_id
25
+ end
26
+
27
+ def all
28
+ result = client.get("#{administration_id}/workflows")
29
+
30
+ JSON.parse(result.body).map do |invoice|
31
+ Workflow.new(self, invoice)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+
@@ -0,0 +1,19 @@
1
+ module Moneybird::Service
2
+ class Administration
3
+ include Moneybird::Traits::FindAll
4
+
5
+ attr_reader :client
6
+
7
+ def initialize(client)
8
+ @client = client
9
+ end
10
+
11
+ def resource_class
12
+ Moneybird::Resource::Administration
13
+ end
14
+
15
+ def path
16
+ '/administrations'
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ module Moneybird::Service
2
+ class Contact
3
+ include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::FindAll
5
+
6
+ def resource_class
7
+ Moneybird::Resource::Contact
8
+ end
9
+
10
+ def path
11
+ "#{administration_id}/contacts"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Moneybird::Service
2
+ class Estimate
3
+ include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::FindAll
5
+
6
+ def resource_class
7
+ Moneybird::Resource::Estimate
8
+ end
9
+
10
+ def path
11
+ "#{administration_id}/estimates"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Moneybird::Service
2
+ class Product
3
+ include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::FindAll
5
+
6
+ def resource_class
7
+ Moneybird::Resource::Product
8
+ end
9
+
10
+ def path
11
+ "#{administration_id}/products"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Moneybird::Service
2
+ class SalesInvoice
3
+ include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::FindAll
5
+
6
+ def resource_class
7
+ Moneybird::Resource::SalesInvoice
8
+ end
9
+
10
+ def path
11
+ "#{administration_id}/sales_invoices"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ module Moneybird
2
+ module Traits
3
+ module AdministrationService
4
+ attr_reader :client, :administration_id
5
+
6
+ def initialize(client, administration_id)
7
+ @client = client
8
+ @administration_id = administration_id
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ module Moneybird
2
+ module Traits
3
+ module FindAll
4
+ def all
5
+ result = client.get(path)
6
+
7
+ JSON.parse(result.body).map do |resource|
8
+ resource_class.new(client, resource)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module Moneybird
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/moneybird.gemspec CHANGED
@@ -22,5 +22,4 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.11"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.4"
26
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moneybird
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maarten van Vliet
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-15 00:00:00.000000000 Z
11
+ date: 2016-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.4'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.4'
55
41
  description: 'Library to interface with Moneybird API: http://developer.moneybird.com/'
56
42
  email:
57
43
  - maartenvanvliet@gmail.com
@@ -60,6 +46,7 @@ extensions: []
60
46
  extra_rdoc_files: []
61
47
  files:
62
48
  - ".gitignore"
49
+ - ".kick"
63
50
  - ".rspec"
64
51
  - ".travis.yml"
65
52
  - CODE_OF_CONDUCT.md
@@ -70,11 +57,27 @@ files:
70
57
  - bin/console
71
58
  - bin/setup
72
59
  - lib/moneybird.rb
73
- - lib/moneybird/administration.rb
74
60
  - lib/moneybird/client.rb
75
- - lib/moneybird/contact.rb
76
61
  - lib/moneybird/resource.rb
77
- - lib/moneybird/sales_invoice.rb
62
+ - lib/moneybird/resource/administration.rb
63
+ - lib/moneybird/resource/contact.rb
64
+ - lib/moneybird/resource/estimate.rb
65
+ - lib/moneybird/resource/financial_account.rb
66
+ - lib/moneybird/resource/financial_mutation.rb
67
+ - lib/moneybird/resource/identity.rb
68
+ - lib/moneybird/resource/product.rb
69
+ - lib/moneybird/resource/recurring_sales_invoice.rb
70
+ - lib/moneybird/resource/sales_invoice.rb
71
+ - lib/moneybird/resource/tax_rate.rb
72
+ - lib/moneybird/resource/webhook.rb
73
+ - lib/moneybird/resource/workflow.rb
74
+ - lib/moneybird/service/administration.rb
75
+ - lib/moneybird/service/contact.rb
76
+ - lib/moneybird/service/estimate.rb
77
+ - lib/moneybird/service/product.rb
78
+ - lib/moneybird/service/sales_invoice.rb
79
+ - lib/moneybird/traits/administration_service.rb
80
+ - lib/moneybird/traits/find_all.rb
78
81
  - lib/moneybird/version.rb
79
82
  - moneybird.gemspec
80
83
  homepage: https://github.com/maartenvanvliet/moneybird
@@ -102,3 +105,4 @@ signing_key:
102
105
  specification_version: 4
103
106
  summary: Library to interface with Moneybird API
104
107
  test_files: []
108
+ has_rdoc:
@@ -1,39 +0,0 @@
1
- module Moneybird
2
- class Administration
3
- include Moneybird::Resource
4
- extend Moneybird::Resource::ClassMethods
5
-
6
- has_attributes %i(
7
- id
8
- name
9
- language
10
- currency
11
- country
12
- time_zone
13
- )
14
-
15
- def sales_invoices
16
- Moneybird::SalesInvoice::Service.new(@client, id).all
17
- end
18
-
19
- def contacts
20
- Moneybird::Contact::Service.new(@client, id).all
21
- end
22
-
23
- class Service
24
- attr_reader :client
25
-
26
- def initialize(client)
27
- @client = client
28
- end
29
-
30
- def all
31
- result = client.get('/administrations')
32
-
33
- JSON.parse(result.body).map do |administration|
34
- Administration.new(client, administration)
35
- end
36
- end
37
- end
38
- end
39
- end