moneybird 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
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