billogram 0.4.0 → 0.4.1

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.
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