billogram 0.4.0 → 0.4.1

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: 2d7211264da1c2a244ae49fe823f3a40a2a18e98
4
- data.tar.gz: 9d66bdce3035c05061059e04fa1361d44722bb54
3
+ metadata.gz: 1e1cd468bd3eab2cb8de98ae549c52e36f1da713
4
+ data.tar.gz: 7ac88f9d37a3c31796f42736ac7721749b00832f
5
5
  SHA512:
6
- metadata.gz: 6837655055e15ddb79db3decf6e7282b5fc61135e8af8120c8c0d366b57884f0e3e426e85e5f5b07789dc4fc383e695d79be1373531974ddb868825d1cdca6d2
7
- data.tar.gz: 361595e478a07938f8ea6d94269d22da334e0eefd3b715d566a0ffeaff2e86c524c7c6cd4d2e8842734c26935e6efecd8f930b6612d5c0d7bcb31e80ae0586a0
6
+ metadata.gz: 846d964585e1c6c635391aaa1e20220c3031ce2e94335028e38630dd20df85e39be6f8179a0a2145cf4552ea0b8fd4cf8d79273b71137f2eada9c2a667499cb7
7
+ data.tar.gz: 254c14107ceff556a081b7d03b8331fb8e1307269c7ea6db9d7916256f4a6d671ee0d4a91ec4c015c63d15b292c6e9eaea1009eff5c6c5180a3b93c03a521cf6
data/lib/billogram.rb CHANGED
@@ -4,6 +4,7 @@ require "billogram/error"
4
4
  require "billogram/relation"
5
5
  require "billogram/relation_builder"
6
6
  require "billogram/resource"
7
+ require "billogram/request"
7
8
  require "billogram/resources/address"
8
9
  require "billogram/resources/bookkeeping"
9
10
  require "billogram/resources/callbacks"
@@ -24,8 +25,6 @@ require "billogram/resources/settings"
24
25
  require "billogram/resources/tax"
25
26
  require "billogram/version"
26
27
 
27
- require "billogram/inflections"
28
-
29
28
  module Billogram
30
29
  class << self
31
30
  attr_accessor :username, :password, :base_uri
@@ -8,12 +8,7 @@ module Billogram
8
8
  class InternalServerError < Error; end
9
9
 
10
10
  def self.from_response(response)
11
- status = response.response.code.to_i
12
- body = response.body.to_s
13
- headers = response.headers
14
- message = error_message(response)
15
-
16
- if klass = case status
11
+ if klass = case response.code.to_i
17
12
  when 400 then BadRequest
18
13
  when 401 then Unauthorized
19
14
  when 403 then Forbidden
@@ -21,15 +16,7 @@ module Billogram
21
16
  when 500 then InternalServerError
22
17
  else Billogram::Error
23
18
  end
24
- klass.new(message)
25
- end
26
- end
27
-
28
- private
29
-
30
- def self.error_message(response)
31
- if data = response["data"]
32
- data.fetch("message", "")
19
+ klass.new(response["data"]["message"])
33
20
  end
34
21
  end
35
22
  end
@@ -0,0 +1,26 @@
1
+ module Billogram
2
+ class Request
3
+ attr_reader :url, :type, :params
4
+
5
+ def initialize(type, url, params = {})
6
+ @url = url
7
+ @type = type
8
+ @params = params
9
+ end
10
+
11
+ def content
12
+ case type
13
+ when :post, :put
14
+ { body: params.to_json }
15
+ when :get
16
+ { query: params }
17
+ when :delete
18
+ {}
19
+ end
20
+ end
21
+
22
+ def execute
23
+ Billogram.client.send(type, url, content)
24
+ end
25
+ end
26
+ end
@@ -2,7 +2,7 @@ require "active_support/core_ext/string/inflections.rb"
2
2
 
3
3
  module Billogram
4
4
  class Resource
5
- DEFAULT_OPTIONS = { page: 1, page_size: 50 }
5
+ DEFAULT_SEARCH_OPTIONS = { page: 1, page_size: 50 }
6
6
 
7
7
  class << self
8
8
  def relations
@@ -15,24 +15,24 @@ module Billogram
15
15
  end
16
16
 
17
17
  def search(options = {})
18
- query = DEFAULT_OPTIONS.merge(options)
19
- perform_request("#{endpoint}", :get, query)
18
+ query = DEFAULT_SEARCH_OPTIONS.merge(options)
19
+ perform_request(:get, "#{endpoint}", query)
20
20
  end
21
21
 
22
22
  def fetch(id = nil)
23
- perform_request("#{endpoint}/#{id}", :get)
23
+ perform_request(:get, "#{endpoint}/#{id}")
24
24
  end
25
25
 
26
26
  def create(attributes)
27
- perform_request("#{endpoint}", :post, attributes)
27
+ perform_request(:post, "#{endpoint}", attributes)
28
28
  end
29
29
 
30
30
  def update(id, attributes)
31
- perform_request("#{endpoint}/#{id}", :put, attributes)
31
+ perform_request(:put, "#{endpoint}/#{id}", attributes)
32
32
  end
33
33
 
34
34
  def delete(id)
35
- Billogram.client.put("#{endpoint}/#{id}")
35
+ perform_request(:delete, "#{endpoint}/#{id}")
36
36
  end
37
37
 
38
38
  def relation(name, type, class_override: nil)
@@ -48,17 +48,9 @@ module Billogram
48
48
  end
49
49
  end
50
50
 
51
- def perform_request(url, type, params = {})
52
- case type
53
- when :post, :put
54
- query = { body: params.to_json }
55
- when :get
56
- query = { query: params }
57
- else nil
58
- end
59
-
60
- response = Billogram.client.send(type, url, query)
61
- build_objects(response) unless type == :delete
51
+ def perform_request(type, url, params = {})
52
+ response = Request.new(type, url, params).execute
53
+ build_objects(response)
62
54
  end
63
55
  end
64
56
 
@@ -78,10 +70,6 @@ module Billogram
78
70
  self.class.delete(id)
79
71
  end
80
72
 
81
- def perform_request(*args)
82
- self.class.perform_request(*args)
83
- end
84
-
85
73
  def endpoint
86
74
  self.class.endpoint
87
75
  end
@@ -3,8 +3,11 @@ module Billogram
3
3
  attr_accessor :customer_no, :name, :notes, :org_no, :vat_no, :created_at,
4
4
  :updated_at, :company_type
5
5
 
6
+ alias_method :id, :customer_no
7
+
6
8
  relation :address, :one
7
9
  relation :contact, :one
8
10
  relation :delivery_address, :one, class_override: "Address"
11
+
9
12
  end
10
13
  end
@@ -1,7 +1,6 @@
1
1
  module Billogram
2
2
  class Invoice < Resource
3
3
  endpoint 'billogram'
4
-
5
4
  attr_accessor :id, :invoice_no, :ocr_number, :invoice_date, :due_date, :due_days,
6
5
  :invoice_fee, :invoice_fee_vat, :reminder_fee, :interest_rate,
7
6
  :interest_fee, :currency, :delivery_method, :state, :url, :flags,
@@ -18,6 +17,9 @@ module Billogram
18
17
  relation :items, :many
19
18
  relation :events, :many
20
19
 
20
+ extend Forwardable
21
+ delegate perform_request: self
22
+
21
23
  def sell
22
24
  perform_request(command_path(:sell), :post)
23
25
  end
@@ -2,6 +2,8 @@ module Billogram
2
2
  class Item < Resource
3
3
  attr_accessor :item_no, :title, :description, :price, :vat, :unit, :created_at, :updated_at
4
4
 
5
+ alias_method :id, :item_no
6
+
5
7
  relation :bookkeeping, :one
6
8
  relation :regional_sweden, :one
7
9
  end
@@ -1,5 +1,6 @@
1
1
  module Billogram
2
2
  class RegionalSweden < Resource
3
- attr_accessor :rotavdrag, :rotavdrag_personal_number, :rotavdrag_description, :reversed_vat
3
+ attr_accessor :rotavdrag, :rotavdrag_personal_number, :rotavdrag_description,
4
+ :reversed_vat, :rotavdrag_account
4
5
  end
5
6
  end
@@ -1,3 +1,3 @@
1
1
  module Billogram
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: billogram
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Birman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-04 00:00:00.000000000 Z
11
+ date: 2015-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -145,6 +145,7 @@ files:
145
145
  - lib/billogram/error.rb
146
146
  - lib/billogram/relation.rb
147
147
  - lib/billogram/relation_builder.rb
148
+ - lib/billogram/request.rb
148
149
  - lib/billogram/resource.rb
149
150
  - lib/billogram/resources/address.rb
150
151
  - lib/billogram/resources/bookkeeping.rb