moneybird 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -2,3 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 2.1.2
4
4
  before_install: gem install bundler -v 1.11.2
5
+
6
+ addons:
7
+ code_climate:
8
+ repo_token: 0b8e41ecbc26637a7db4e6e9d4581c445441674f689016ab45fb5c51242b59bf
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Moneybird
1
+ # Moneybird [![Build Status](https://travis-ci.org/maartenvanvliet/moneybird.svg?branch=master)](https://travis-ci.org/maartenvanvliet/moneybird) [![Code Climate](https://codeclimate.com/github/maartenvanvliet/moneybird/badges/gpa.svg)](https://codeclimate.com/github/maartenvanvliet/moneybird) [![Test Coverage](https://codeclimate.com/github/maartenvanvliet/moneybird/badges/coverage.svg)](https://codeclimate.com/github/maartenvanvliet/moneybird/coverage)
2
2
 
3
3
  Gem to talk to the Moneybird REST API. Right now you'll need to get a 'bearer' token for the client to work, oauth2 support may added later. This gem is still under construction and any methods may still change signature without notice until 1.0 is released.
4
4
 
@@ -39,6 +39,12 @@ administration.sales_invoices.all
39
39
  # List contacts
40
40
  administration.contacts.all
41
41
 
42
+ # Find contact
43
+ administration.contacts.find(moneybird_id)
44
+
45
+ # Find contact by customer id
46
+ administration.contacts.find_by_customer_id(customer_id)
47
+
42
48
  # Create contact
43
49
  administrations.contacts.create(company_name: 'ACME', firstname: 'Foo', lastname: 'Bar')
44
50
 
@@ -47,8 +53,19 @@ contact = administration.contacts.all.first
47
53
  contact.company_name = 'Something new'
48
54
  administrations.contacts.save(contact)
49
55
 
56
+ # Delete contact
57
+ administrations.contacts.delete(contact)
58
+
50
59
  # Works similarly with other resources
51
60
 
61
+ ```
62
+ ### Webhooks
63
+
64
+ Moneybird, if so configured, sends webhooks to specified endpoints. This gem can deal with these requests.
65
+ ```ruby
66
+ webhook = Moneybird::Webhook.from_json(request.body)
67
+ sales_invoice = webhook.build_entity
68
+ sales_invoice.state
52
69
  ```
53
70
 
54
71
  ## Development
data/lib/moneybird.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'logger'
1
2
  require 'uri'
2
3
  require 'json'
3
4
  require 'net/http'
@@ -16,6 +17,7 @@ require "moneybird/traits/delete"
16
17
  require "moneybird/client"
17
18
  require "moneybird/resource"
18
19
  require "moneybird/resource/invoice/details"
20
+ require "moneybird/resource/generic/note"
19
21
  require "moneybird/webhook"
20
22
 
21
23
  resources = %w(
@@ -21,7 +21,7 @@ module Moneybird
21
21
  if respond_to?(writer = attribute.to_s + '=')
22
22
  send(writer, value)
23
23
  else
24
- raise "#{self.class} does not have an `#{attribute}' attribute"
24
+ self.class.logger.warn "#{self.class} does not have an `#{attribute}' attribute"
25
25
  end
26
26
  end
27
27
  end
@@ -47,11 +47,18 @@ module Moneybird
47
47
 
48
48
  module ClassMethods
49
49
  attr_reader :attributes, :nillable_attributes
50
+ attr_writer :logger
50
51
 
51
52
  def build(attributes)
52
53
  new(attributes)
53
54
  end
54
55
 
56
+ def logger
57
+ @logger ||= begin
58
+ logger = Logger.new(STDOUT)
59
+ end
60
+ end
61
+
55
62
  def has_attributes(attributes)
56
63
  attr_accessor(*@attributes = attributes)
57
64
  end
@@ -41,7 +41,12 @@ module Moneybird::Resource
41
41
  updated_at
42
42
  notes
43
43
  custom_fields
44
+ events
44
45
  )
46
+
47
+ def notes=(notes)
48
+ @notes ||= notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
49
+ end
45
50
  end
46
51
  end
47
52
 
@@ -39,8 +39,13 @@ module Moneybird::Resource
39
39
  custom_fields
40
40
  notes
41
41
  attachments
42
+ events
42
43
  )
43
44
 
45
+ def notes=(notes)
46
+ @notes ||= notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
47
+ end
48
+
44
49
  def contact=(attributes)
45
50
  @contact ||= Moneybird::Resource::Contact.build(attributes)
46
51
  end
@@ -0,0 +1,22 @@
1
+ module Moneybird::Resource::Generic
2
+ class Note
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ entity_id
9
+ entity_type
10
+ user_id
11
+ assignee_id
12
+ todo
13
+ note
14
+ completed_at
15
+ completed_by_id
16
+ todo_type
17
+ data
18
+ created_at
19
+ updated_at
20
+ )
21
+ end
22
+ end
@@ -17,9 +17,5 @@ module Moneybird::Resource::Invoice
17
17
  created_at
18
18
  updated_at
19
19
  )
20
-
21
- def contact=(attributes)
22
- @contact = Moneybird::Resource::Contact.build(attributes)
23
- end
24
20
  end
25
21
  end
@@ -1,6 +1,7 @@
1
1
  module Moneybird::Resource
2
2
  class RecurringSalesInvoice
3
3
  include Moneybird::Resource
4
+
4
5
  extend Moneybird::Resource::ClassMethods
5
6
 
6
7
  has_attributes %i(
@@ -33,8 +34,13 @@ module Moneybird::Resource
33
34
  details
34
35
  notes
35
36
  attachments
37
+ events
36
38
  )
37
39
 
40
+ def notes=(notes)
41
+ @notes ||= notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
42
+ end
43
+
38
44
  def contact=(attributes)
39
45
  @contact ||= Moneybird::Resource::Contact.build(attributes)
40
46
  end
@@ -37,8 +37,13 @@ module Moneybird::Resource
37
37
  updated_at
38
38
  url
39
39
  workflow_id
40
+ events
40
41
  )
41
42
 
43
+ def notes=(notes)
44
+ @notes ||= notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
45
+ end
46
+
42
47
  def contact=(attributes)
43
48
  @contact ||= Moneybird::Resource::Contact.build(attributes)
44
49
  end
@@ -1,3 +1,3 @@
1
1
  module Moneybird
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/moneybird.gemspec CHANGED
@@ -22,4 +22,5 @@ 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 "codeclimate-test-reporter"
25
26
  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.5.0
4
+ version: 0.6.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-17 00:00:00.000000000 Z
11
+ date: 2016-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: codeclimate-test-reporter
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: 'Library to interface with Moneybird API: http://developer.moneybird.com/'
42
56
  email:
43
57
  - maartenvanvliet@gmail.com
@@ -45,9 +59,11 @@ executables: []
45
59
  extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
62
+ - ".codeclimate.yml"
48
63
  - ".gitignore"
49
64
  - ".kick"
50
65
  - ".rspec"
66
+ - ".rubocop.yml"
51
67
  - ".travis.yml"
52
68
  - CODE_OF_CONDUCT.md
53
69
  - Gemfile
@@ -65,6 +81,7 @@ files:
65
81
  - lib/moneybird/resource/estimate.rb
66
82
  - lib/moneybird/resource/financial_account.rb
67
83
  - lib/moneybird/resource/financial_mutation.rb
84
+ - lib/moneybird/resource/generic/note.rb
68
85
  - lib/moneybird/resource/identity.rb
69
86
  - lib/moneybird/resource/invoice/details.rb
70
87
  - lib/moneybird/resource/ledger_account.rb