moneybird 0.9.2 → 0.9.3

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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/lib/moneybird.rb +9 -17
  4. data/lib/moneybird/client.rb +39 -34
  5. data/lib/moneybird/http_error/authorization_required.rb +6 -0
  6. data/lib/moneybird/http_error/bad_request.rb +6 -0
  7. data/lib/moneybird/http_error/forbidden.rb +6 -0
  8. data/lib/moneybird/http_error/internal_server_error.rb +6 -0
  9. data/lib/moneybird/http_error/method_not_allowed.rb +6 -0
  10. data/lib/moneybird/http_error/not_accepted.rb +6 -0
  11. data/lib/moneybird/http_error/not_found.rb +6 -0
  12. data/lib/moneybird/http_error/payment_required.rb +6 -0
  13. data/lib/moneybird/http_error/too_many_requests.rb +6 -0
  14. data/lib/moneybird/http_error/unprocessable_entity.rb +6 -0
  15. data/lib/moneybird/middleware/error_handling.rb +25 -0
  16. data/lib/moneybird/middleware/pagination.rb +29 -0
  17. data/lib/moneybird/middleware/pagination/links.rb +17 -0
  18. data/lib/moneybird/resource.rb +0 -1
  19. data/lib/moneybird/resource/administration.rb +20 -0
  20. data/lib/moneybird/resource/contact.rb +30 -29
  21. data/lib/moneybird/resource/documents/general_document.rb +25 -0
  22. data/lib/moneybird/resource/documents/general_journal_document.rb +26 -0
  23. data/lib/moneybird/resource/documents/purchase_invoice.rb +49 -0
  24. data/lib/moneybird/resource/documents/receipt.rb +35 -0
  25. data/lib/moneybird/resource/documents/typeless_document.rb +26 -0
  26. data/lib/moneybird/resource/estimate.rb +24 -23
  27. data/lib/moneybird/resource/financial_mutation.rb +14 -12
  28. data/lib/moneybird/resource/purchase_invoice.rb +1 -0
  29. data/lib/moneybird/resource/sales_invoice.rb +1 -0
  30. data/lib/moneybird/resource/synchronization.rb +13 -0
  31. data/lib/moneybird/service/administration.rb +6 -4
  32. data/lib/moneybird/service/contact.rb +7 -8
  33. data/lib/moneybird/service/document_style.rb +2 -0
  34. data/lib/moneybird/service/documents/general_document.rb +21 -0
  35. data/lib/moneybird/service/documents/general_journal_document.rb +21 -0
  36. data/lib/moneybird/service/documents/purchase_invoice.rb +21 -0
  37. data/lib/moneybird/service/documents/receipt.rb +21 -0
  38. data/lib/moneybird/service/documents/typeless_document.rb +21 -0
  39. data/lib/moneybird/service/estimate.rb +3 -0
  40. data/lib/moneybird/service/financial_account.rb +2 -0
  41. data/lib/moneybird/service/financial_mutation.rb +3 -0
  42. data/lib/moneybird/service/identity.rb +2 -0
  43. data/lib/moneybird/service/ledger_account.rb +2 -0
  44. data/lib/moneybird/service/product.rb +2 -0
  45. data/lib/moneybird/service/purchase_invoice.rb +2 -0
  46. data/lib/moneybird/service/recurring_sales_invoice.rb +3 -0
  47. data/lib/moneybird/service/sales_invoice.rb +3 -0
  48. data/lib/moneybird/service/tax_rate.rb +2 -0
  49. data/lib/moneybird/service/webhook.rb +2 -0
  50. data/lib/moneybird/service/workflow.rb +2 -0
  51. data/lib/moneybird/traits/delete.rb +0 -6
  52. data/lib/moneybird/traits/find.rb +1 -7
  53. data/lib/moneybird/traits/find_all.rb +33 -7
  54. data/lib/moneybird/traits/save.rb +10 -27
  55. data/lib/moneybird/traits/service.rb +1 -3
  56. data/lib/moneybird/traits/synchronization.rb +11 -0
  57. data/lib/moneybird/version.rb +1 -1
  58. data/moneybird.gemspec +3 -1
  59. metadata +69 -2
@@ -6,6 +6,9 @@ module Moneybird::Service
6
6
  include Moneybird::Traits::FindAll
7
7
  include Moneybird::Traits::Save
8
8
  include Moneybird::Traits::Delete
9
+ include Moneybird::Traits::Synchronization
10
+
11
+ private
9
12
 
10
13
  def resource_class
11
14
  Moneybird::Resource::Estimate
@@ -4,6 +4,8 @@ module Moneybird::Service
4
4
  include Moneybird::Traits::Service
5
5
  include Moneybird::Traits::FindAll
6
6
 
7
+ private
8
+
7
9
  def resource_class
8
10
  Moneybird::Resource::FinancialAccount
9
11
  end
@@ -3,6 +3,9 @@ module Moneybird::Service
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Synchronization
7
+
8
+ private
6
9
 
7
10
  def resource_class
8
11
  Moneybird::Resource::FinancialMutation
@@ -7,6 +7,8 @@ module Moneybird::Service
7
7
  include Moneybird::Traits::Save
8
8
  include Moneybird::Traits::Delete
9
9
 
10
+ private
11
+
10
12
  def resource_class
11
13
  Moneybird::Resource::Identity
12
14
  end
@@ -7,6 +7,8 @@ module Moneybird::Service
7
7
  include Moneybird::Traits::Save
8
8
  include Moneybird::Traits::Delete
9
9
 
10
+ private
11
+
10
12
  def resource_class
11
13
  Moneybird::Resource::LedgerAccount
12
14
  end
@@ -7,6 +7,8 @@ module Moneybird::Service
7
7
  include Moneybird::Traits::Save
8
8
  include Moneybird::Traits::Delete
9
9
 
10
+ private
11
+
10
12
  def resource_class
11
13
  Moneybird::Resource::Product
12
14
  end
@@ -7,6 +7,8 @@ module Moneybird::Service
7
7
  include Moneybird::Traits::Save
8
8
  include Moneybird::Traits::Delete
9
9
 
10
+ private
11
+
10
12
  def resource_class
11
13
  Moneybird::Resource::PurchaseInvoice
12
14
  end
@@ -6,6 +6,9 @@ module Moneybird::Service
6
6
  include Moneybird::Traits::FindAll
7
7
  include Moneybird::Traits::Save
8
8
  include Moneybird::Traits::Delete
9
+ include Moneybird::Traits::Synchronization
10
+
11
+ private
9
12
 
10
13
  def resource_class
11
14
  Moneybird::Resource::RecurringSalesInvoice
@@ -6,6 +6,9 @@ module Moneybird::Service
6
6
  include Moneybird::Traits::FindAll
7
7
  include Moneybird::Traits::Save
8
8
  include Moneybird::Traits::Delete
9
+ include Moneybird::Traits::Synchronization
10
+
11
+ private
9
12
 
10
13
  def resource_class
11
14
  Moneybird::Resource::SalesInvoice
@@ -4,6 +4,8 @@ module Moneybird::Service
4
4
  include Moneybird::Traits::Service
5
5
  include Moneybird::Traits::FindAll
6
6
 
7
+ private
8
+
7
9
  def resource_class
8
10
  Moneybird::Resource::TaxRate
9
11
  end
@@ -6,6 +6,8 @@ module Moneybird::Service
6
6
  include Moneybird::Traits::Delete
7
7
  include Moneybird::Traits::Save
8
8
 
9
+ private
10
+
9
11
  def resource_class
10
12
  Moneybird::Resource::Webhook
11
13
  end
@@ -4,6 +4,8 @@ module Moneybird::Service
4
4
  include Moneybird::Traits::Service
5
5
  include Moneybird::Traits::FindAll
6
6
 
7
+ private
8
+
7
9
  def resource_class
8
10
  Moneybird::Resource::Workflow
9
11
  end
@@ -1,14 +1,8 @@
1
1
  module Moneybird
2
2
  module Traits
3
3
  module Delete
4
- DELETE_SUCCESS_CODE = 204
5
-
6
4
  def delete(resource)
7
5
  client.delete(resource_path(resource))
8
- if client._last_response.status.to_i != DELETE_SUCCESS_CODE
9
- resource.errors = client._last_response.body
10
- return false
11
- end
12
6
  true
13
7
  end
14
8
  end
@@ -1,14 +1,8 @@
1
1
  module Moneybird
2
2
  module Traits
3
3
  module Find
4
- GET_SUCCESS_CODE = 200
5
-
6
4
  def find(id)
7
- result = client.get("#{path}/#{id}")
8
-
9
- if result.status.to_i == GET_SUCCESS_CODE
10
- build(JSON.parse(result.body))
11
- end
5
+ build client.get("#{path}/#{id}")
12
6
  end
13
7
  end
14
8
  end
@@ -1,17 +1,43 @@
1
1
  module Moneybird
2
2
  module Traits
3
3
  module FindAll
4
- GET_SUCCESS_CODE = 200
4
+ def all(params = {})
5
+ each(params).to_a
6
+ end
5
7
 
6
- def all
7
- result = client.get(path)
8
+ def each_page(params = {})
9
+ return enum_for(:each_page, params) unless block_given?
10
+ client.get_each_page(path, params).map do |resources|
11
+ yield resources.map { |resource| build resource }
12
+ end
13
+ end
8
14
 
9
- if result.status.to_i == GET_SUCCESS_CODE
10
- JSON.parse(result.body).map do |resource|
11
- build(resource)
15
+ def each(params = {})
16
+ return enum_for(:each, params) unless block_given?
17
+ each_page(params).each do |resources|
18
+ resources.each do |resource|
19
+ yield resource
12
20
  end
13
21
  end
14
22
  end
23
+
24
+ def first_page(params = {})
25
+ client.get(path, params).map do |resource|
26
+ build resource
27
+ end
28
+ end
29
+
30
+ def first(params = {})
31
+ params = { per_page: 1 }.merge params
32
+ build client.get(path, params).first
33
+ end
34
+
35
+ def map(params = {})
36
+ return enum_for(:map, params) unless block_given?
37
+ each(params).map do |resource|
38
+ yield resource
39
+ end
40
+ end
15
41
  end
16
42
  end
17
- end
43
+ end
@@ -1,45 +1,28 @@
1
1
  module Moneybird
2
2
  module Traits
3
3
  module Save
4
- CREATE_SUCCESS_CODE = 201
5
- UPDATE_SUCCESS_CODE = 200
6
-
7
4
  def resource_path(resource)
8
5
  [path, resource.path].join('')
9
6
  end
10
7
 
11
8
  def save(resource)
12
- if resource.persisted?
13
- client.patch(resource_path(resource), resource.to_json)
14
- if client._last_response.status.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.status.to_i == CREATE_SUCCESS_CODE
23
- resource.attributes = JSON.parse(client._last_response.body)
9
+ response =
10
+ if resource.persisted?
11
+ client.patch(resource_path(resource), resource.to_json)
24
12
  else
25
- resource.errors = client._last_response.body
26
- return false
13
+ client.post(resource_path(resource), resource.to_json)
27
14
  end
28
- end
29
- true
15
+ resource.attributes = response
16
+ resource
30
17
  end
31
18
 
32
19
  def create(attributes)
33
- resource = build(attributes)
34
- save(resource)
35
- resource
20
+ build(attributes).tap do |resource|
21
+ save(resource)
22
+ end
36
23
  end
37
24
 
38
- def update(attributes)
39
- resource = build(attributes)
40
- save(resource)
41
- resource
42
- end
25
+ alias update create
43
26
  end
44
27
  end
45
28
  end
@@ -2,9 +2,7 @@ module Moneybird
2
2
  module Traits
3
3
  module Service
4
4
  def build(attributes)
5
- resource = resource_class.build(attributes)
6
- resource.client = client
7
- resource
5
+ resource_class.build attributes.merge(client: client)
8
6
  end
9
7
  end
10
8
  end
@@ -0,0 +1,11 @@
1
+ module Moneybird
2
+ module Traits
3
+ module Synchronization
4
+ def synchronization(params = {})
5
+ client.get("#{path}/synchronization", params).map do |resource|
6
+ Moneybird::Resource::Synchronization.new resource
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Moneybird
2
- VERSION = "0.9.2"
2
+ VERSION = "0.9.3"
3
3
  end
@@ -21,10 +21,12 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency "activesupport", '>= 0.12'
23
23
  spec.add_dependency "faraday"
24
+ spec.add_dependency "faraday_middleware"
25
+ spec.add_dependency "link_header", "~> 0.0.8"
24
26
 
25
27
  spec.add_development_dependency "bundler", "~> 1.11"
26
28
  spec.add_development_dependency "rake", "~> 10.0"
27
29
  spec.add_development_dependency "codeclimate-test-reporter"
28
30
  spec.add_development_dependency "minitest"
29
-
31
+ spec.add_development_dependency "webmock", "~> 3.1"
30
32
  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.9.2
4
+ version: 0.9.3
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: 2017-11-05 00:00:00.000000000 Z
11
+ date: 2017-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday_middleware
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: link_header
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.8
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.8
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +122,20 @@ dependencies:
94
122
  - - ">="
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.1'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.1'
97
139
  description: 'Library to interface with Moneybird API: http://developer.moneybird.com/'
98
140
  email:
99
141
  - maartenvanvliet@gmail.com
@@ -116,10 +158,28 @@ files:
116
158
  - bin/setup
117
159
  - lib/moneybird.rb
118
160
  - lib/moneybird/client.rb
161
+ - lib/moneybird/http_error/authorization_required.rb
162
+ - lib/moneybird/http_error/bad_request.rb
163
+ - lib/moneybird/http_error/forbidden.rb
164
+ - lib/moneybird/http_error/internal_server_error.rb
165
+ - lib/moneybird/http_error/method_not_allowed.rb
166
+ - lib/moneybird/http_error/not_accepted.rb
167
+ - lib/moneybird/http_error/not_found.rb
168
+ - lib/moneybird/http_error/payment_required.rb
169
+ - lib/moneybird/http_error/too_many_requests.rb
170
+ - lib/moneybird/http_error/unprocessable_entity.rb
171
+ - lib/moneybird/middleware/error_handling.rb
172
+ - lib/moneybird/middleware/pagination.rb
173
+ - lib/moneybird/middleware/pagination/links.rb
119
174
  - lib/moneybird/resource.rb
120
175
  - lib/moneybird/resource/administration.rb
121
176
  - lib/moneybird/resource/contact.rb
122
177
  - lib/moneybird/resource/document_style.rb
178
+ - lib/moneybird/resource/documents/general_document.rb
179
+ - lib/moneybird/resource/documents/general_journal_document.rb
180
+ - lib/moneybird/resource/documents/purchase_invoice.rb
181
+ - lib/moneybird/resource/documents/receipt.rb
182
+ - lib/moneybird/resource/documents/typeless_document.rb
123
183
  - lib/moneybird/resource/estimate.rb
124
184
  - lib/moneybird/resource/financial_account.rb
125
185
  - lib/moneybird/resource/financial_mutation.rb
@@ -133,12 +193,18 @@ files:
133
193
  - lib/moneybird/resource/purchase_invoice.rb
134
194
  - lib/moneybird/resource/recurring_sales_invoice.rb
135
195
  - lib/moneybird/resource/sales_invoice.rb
196
+ - lib/moneybird/resource/synchronization.rb
136
197
  - lib/moneybird/resource/tax_rate.rb
137
198
  - lib/moneybird/resource/webhook.rb
138
199
  - lib/moneybird/resource/workflow.rb
139
200
  - lib/moneybird/service/administration.rb
140
201
  - lib/moneybird/service/contact.rb
141
202
  - lib/moneybird/service/document_style.rb
203
+ - lib/moneybird/service/documents/general_document.rb
204
+ - lib/moneybird/service/documents/general_journal_document.rb
205
+ - lib/moneybird/service/documents/purchase_invoice.rb
206
+ - lib/moneybird/service/documents/receipt.rb
207
+ - lib/moneybird/service/documents/typeless_document.rb
142
208
  - lib/moneybird/service/estimate.rb
143
209
  - lib/moneybird/service/financial_account.rb
144
210
  - lib/moneybird/service/financial_mutation.rb
@@ -157,6 +223,7 @@ files:
157
223
  - lib/moneybird/traits/find_all.rb
158
224
  - lib/moneybird/traits/save.rb
159
225
  - lib/moneybird/traits/service.rb
226
+ - lib/moneybird/traits/synchronization.rb
160
227
  - lib/moneybird/version.rb
161
228
  - lib/moneybird/webhook.rb
162
229
  - moneybird.gemspec