moneybird 0.3.0 → 0.4.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: 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