moneybird 0.1.0 → 0.2.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
  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