moneybird 0.3.0 → 0.4.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: 458f743458b42d29d9da085268ff4b3200516383
4
- data.tar.gz: 427dc74688e2a695c8d77d69abffe21a28d16f14
3
+ metadata.gz: ec58b660402eefbeb290851cfff6c05e1c530450
4
+ data.tar.gz: c3181e0c093d371ec5514c05b1dcb942a7491b5d
5
5
  SHA512:
6
- metadata.gz: 5bfa0655ed46711956782b98c29d8526d46812fb82f083fe8ffb3b0371b2b37e1236d013a4fc1049e13b70cbd257fe9b6a71bcd11b18dfab8495d132b820b7a4
7
- data.tar.gz: 09f2bdc268a739238db495f6776b68db4baba5a708e731023a2dcd74b9ffd5bec54c37d386907e7cda473e3f8c3a6ec33fc51d92c823bce18786cae4551881c4
6
+ metadata.gz: fa6dbfc0163ba772bde29b234a85b3b6d7a980dc2b2e633678900323edac711835cd49ed2897bb584a9819489e15ee406996d31390e28b23ab5605e56d91fa65
7
+ data.tar.gz: 9078757aeaa5c8d6d405015e253ba5b4713568ed65b7c3fe7649ab6b4d5c820538988e1dc5120b256efdb3ebe431199b5d323ee15680625d4069a36153ed31b6
data/lib/moneybird.rb CHANGED
@@ -9,6 +9,8 @@ end
9
9
 
10
10
  require "moneybird/traits/administration_service"
11
11
  require "moneybird/traits/find_all"
12
+ require "moneybird/traits/service"
13
+ require "moneybird/traits/save"
12
14
 
13
15
  require "moneybird/service/administration"
14
16
  require "moneybird/service/contact"
@@ -43,9 +43,9 @@ module Moneybird
43
43
  perform(http)
44
44
  end
45
45
 
46
- def put(path, body=nil, headers={})
46
+ def patch(path, body=nil, headers={})
47
47
  uri = uri_for_path(path)
48
- http = Net::HTTP::Put.new(uri.request_uri, self.headers.merge(headers))
48
+ http = Net::HTTP::Patch.new(uri.request_uri, self.headers.merge(headers))
49
49
  http.body = body
50
50
  perform(http)
51
51
  end
@@ -64,7 +64,7 @@ module Moneybird
64
64
  end
65
65
 
66
66
  def administrations
67
- Moneybird::Administration::Service.new(self).all
67
+ Moneybird::Service::Administration.new(self).all
68
68
  end
69
69
 
70
70
  private
@@ -1,13 +1,20 @@
1
1
  module Moneybird
2
2
  module Resource
3
3
  attr_reader :attributes
4
- attr_accessor :errors
4
+ attr_accessor :errors, :client
5
5
 
6
- def initialize(client, attributes)
7
- @client = client
6
+ def initialize(attributes)
8
7
  self.attributes = attributes
9
8
  end
10
9
 
10
+ def persisted?
11
+ !!id
12
+ end
13
+
14
+ def path
15
+ persisted? ? "/#{id}" : ""
16
+ end
17
+
11
18
  def attributes=(attributes)
12
19
  @attributes = attributes
13
20
  attributes.each do |attribute, value|
@@ -41,6 +48,10 @@ module Moneybird
41
48
  module ClassMethods
42
49
  attr_reader :attributes, :nillable_attributes
43
50
 
51
+ def build(attributes)
52
+ new(attributes)
53
+ end
54
+
44
55
  def has_attributes(attributes)
45
56
  attr_accessor(*@attributes = attributes)
46
57
  end
@@ -13,47 +13,47 @@ module Moneybird::Resource
13
13
  )
14
14
 
15
15
  def sales_invoices
16
- Moneybird::Service::SalesInvoice.new(@client, id).all
16
+ Moneybird::Service::SalesInvoice.new(@client, id)
17
17
  end
18
18
 
19
19
  def recurring_sales_invoices
20
- Moneybird::Service::RecurringSalesInvoice.new(@client, id).all
20
+ Moneybird::Service::RecurringSalesInvoice.new(@client, id)
21
21
  end
22
22
 
23
23
  def contacts
24
- Moneybird::Service::Contact.new(@client, id).all
24
+ Moneybird::Service::Contact.new(@client, id)
25
25
  end
26
26
 
27
27
  def estimates
28
- Moneybird::Service::Estimate.new(@client, id).all
28
+ Moneybird::Service::Estimate.new(@client, id)
29
29
  end
30
30
 
31
31
  def products
32
- Moneybird::Service::Product.new(@client, id).all
32
+ Moneybird::Service::Product.new(@client, id)
33
33
  end
34
34
 
35
35
  def webhooks
36
- Moneybird::Service::Webhook.new(@client, id).all
36
+ Moneybird::Service::Webhook.new(@client, id)
37
37
  end
38
38
 
39
39
  def identities
40
- Moneybird::Service::Identity.new(@client, id).all
40
+ Moneybird::Service::Identity.new(@client, id)
41
41
  end
42
42
 
43
43
  def workflows
44
- Moneybird::Service::Workflow.new(@client, id).all
44
+ Moneybird::Service::Workflow.new(@client, id)
45
45
  end
46
46
 
47
47
  def tax_rates
48
- Moneybird::Service::TaxRate.new(@client, id).all
48
+ Moneybird::Service::TaxRate.new(@client, id)
49
49
  end
50
50
 
51
51
  def financial_accounts
52
- Moneybird::Service::FinancialAccount.new(@client, id).all
52
+ Moneybird::Service::FinancialAccount.new(@client, id)
53
53
  end
54
54
 
55
55
  def financial_mutations
56
- Moneybird::Service::FinancialMutation.new(@client, id).all
56
+ Moneybird::Service::FinancialMutation.new(@client, id)
57
57
  end
58
58
  end
59
59
  end
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Service
2
2
  class Administration
3
3
  include Moneybird::Traits::FindAll
4
+ include Moneybird::Traits::Service
4
5
 
5
6
  attr_reader :client
6
7
 
@@ -1,7 +1,9 @@
1
1
  module Moneybird::Service
2
2
  class Contact
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Save
5
7
 
6
8
  def resource_class
7
9
  Moneybird::Resource::Contact
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Service
2
2
  class DocumentStyle
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
5
6
 
6
7
  def resource_class
@@ -1,7 +1,9 @@
1
1
  module Moneybird::Service
2
2
  class Estimate
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Save
5
7
 
6
8
  def resource_class
7
9
  Moneybird::Resource::Estimate
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Service
2
2
  class FinancialAccount
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
5
6
 
6
7
  def resource_class
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Service
2
2
  class FinancialMutation
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
5
6
 
6
7
  def resource_class
@@ -1,7 +1,9 @@
1
1
  module Moneybird::Service
2
2
  class Identity
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Save
5
7
 
6
8
  def resource_class
7
9
  Moneybird::Resource::Identity
@@ -1,7 +1,9 @@
1
1
  module Moneybird::Service
2
2
  class Product
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Save
5
7
 
6
8
  def resource_class
7
9
  Moneybird::Resource::Product
@@ -1,7 +1,9 @@
1
1
  module Moneybird::Service
2
2
  class RecurringSalesInvoice
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Save
5
7
 
6
8
  def resource_class
7
9
  Moneybird::Resource::RecurringSalesInvoice
@@ -1,7 +1,9 @@
1
1
  module Moneybird::Service
2
2
  class SalesInvoice
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Save
5
7
 
6
8
  def resource_class
7
9
  Moneybird::Resource::SalesInvoice
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Service
2
2
  class TaxRate
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
5
6
 
6
7
  def resource_class
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Service
2
2
  class Webhook
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
5
6
 
6
7
  def resource_class
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Service
2
2
  class Workflow
3
3
  include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
4
5
  include Moneybird::Traits::FindAll
5
6
 
6
7
  def resource_class
@@ -5,7 +5,7 @@ module Moneybird
5
5
  result = client.get(path)
6
6
 
7
7
  JSON.parse(result.body).map do |resource|
8
- resource_class.new(client, resource)
8
+ build(resource)
9
9
  end
10
10
  end
11
11
  end
@@ -0,0 +1,45 @@
1
+ module Moneybird
2
+ module Traits
3
+ module Save
4
+ CREATE_SUCCESS_CODE = 201
5
+ UPDATE_SUCCESS_CODE = 200
6
+
7
+ def resource_path(resource)
8
+ [path, resource.path].join('')
9
+ end
10
+
11
+ def save(resource)
12
+ if resource.persisted?
13
+ client.patch(resource_path(resource), resource.to_json)
14
+ if client._last_response.code.to_i == UPDATE_SUCCESS_CODE
15
+ resource.attributes = JSON.parse(client._last_response.body)
16
+ else
17
+ resource.errors = client._last_response.body
18
+ return false
19
+ end
20
+ else
21
+ client.post(resource_path(resource), resource.to_json)
22
+ if client._last_response.code.to_i == CREATE_SUCCESS_CODE
23
+ resource.attributes = JSON.parse(client._last_response.body)
24
+ else
25
+ resource.errors = client._last_response.body
26
+ return false
27
+ end
28
+ end
29
+ true
30
+ end
31
+
32
+ def create(attributes)
33
+ resource = build(attributes)
34
+ save(resource)
35
+ resource
36
+ end
37
+
38
+ def update(attributes)
39
+ resource = build(attributes)
40
+ save(resource)
41
+ resource
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,11 @@
1
+ module Moneybird
2
+ module Traits
3
+ module Service
4
+ def build(attributes)
5
+ resource = resource_class.build(attributes)
6
+ resource.client = client
7
+ resource
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Moneybird
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moneybird
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maarten van Vliet
@@ -87,6 +87,8 @@ files:
87
87
  - lib/moneybird/service/workflow.rb
88
88
  - lib/moneybird/traits/administration_service.rb
89
89
  - lib/moneybird/traits/find_all.rb
90
+ - lib/moneybird/traits/save.rb
91
+ - lib/moneybird/traits/service.rb
90
92
  - lib/moneybird/version.rb
91
93
  - moneybird.gemspec
92
94
  homepage: https://github.com/maartenvanvliet/moneybird