easybill-api 0.7.1 → 0.7.2

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: a9fbb2b594d462f64e79bb212a2c0175a6a031ab
4
- data.tar.gz: c4d555d86a682613005cc535b243653b3a6b4b2e
3
+ metadata.gz: f62664c9d8edede9217d467541ce52a50616e446
4
+ data.tar.gz: b41807b02912fb9982e826eec13f1172f6d3c0cf
5
5
  SHA512:
6
- metadata.gz: 201e827dab9e7318700b08f42862cf6771a8c118401cc033f819c06eb35923aab6786487fb2839455228da7d546e63fb1d07f04828e65680df312bf7f380df1d
7
- data.tar.gz: 84391415d0eea401203523f9267a69702ab55996eed0928db2af7576dc13b79adcf5feed31bf949b0bfd1019f77b1071065f0acf08133ca9a7e19ef4fc271e94
6
+ metadata.gz: e351285426de4a30e8b848f16e1b2623412c2f84d94fd4f3edbfa702fdd1baed742b15a296f57d92f70554b50d833cbd0283d112d49263624aaff0c2bac3ceab
7
+ data.tar.gz: 201351f72741c8b7e51d73c3925ff063d52d18832753bd39a7a834dc1e5b88abf0bbad74b25a036b5b351e175867647e0cc0c0bfb9fa479b7fda3b688e8e7dda
data/lib/easybill/api.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require "easybill/api/version"
2
2
 
3
- require "easybill/errors/errors"
3
+ require "easybill/errors"
4
4
  require "easybill/api/client"
5
+ require "easybill/api/response_handler"
5
6
  require "easybill/api/base"
6
7
  require "easybill/api/attachments"
7
8
  require "easybill/api/contacts"
@@ -16,6 +16,7 @@ module Easybill
16
16
 
17
17
  class Base
18
18
  include HTTParty
19
+ include ResponseHandler
19
20
 
20
21
  HEADERS = {
21
22
  "User-Agent" => "Ruby.Easybill.Api",
@@ -33,14 +34,14 @@ module Easybill
33
34
  # Set the authorization header by providing your easybill +api_key+
34
35
 
35
36
  def authenticate(api_key)
36
- headers["authorization"] = "Bearer #{api_key}"
37
+ headers("authorization" => "Bearer #{api_key}")
37
38
  end
38
39
 
39
40
  ##
40
41
  # Fetches all resources. You can set custom +query+ parameters.
41
42
 
42
43
  def list(query: {})
43
- get resource_path, query: query
44
+ handle(get resource_path, query: query)
44
45
  end
45
46
 
46
47
  ##
@@ -48,7 +49,7 @@ module Easybill
48
49
  # api.find(id, query: {group: 1})
49
50
 
50
51
  def find(id, query: {})
51
- get "#{resource_path}/#{id}", query: query
52
+ handle(get "#{resource_path}/#{id}", query: query)
52
53
  end
53
54
 
54
55
  ##
@@ -62,7 +63,7 @@ module Easybill
62
63
  # api.create(data)
63
64
 
64
65
  def create(data)
65
- post resource_path, body: data.to_json
66
+ handle(post resource_path, body: data.to_json)
66
67
  end
67
68
 
68
69
  ##
@@ -77,7 +78,7 @@ module Easybill
77
78
  # api.update(id, data)
78
79
 
79
80
  def update(id, data)
80
- put "#{resource_path}/#{id}", body: data.to_json
81
+ handle(put "#{resource_path}/#{id}", body: data.to_json)
81
82
  end
82
83
 
83
84
  ##
@@ -85,7 +86,7 @@ module Easybill
85
86
  # api.destroy(id)
86
87
 
87
88
  def destroy(id)
88
- delete "#{resource_path}/#{id}"
89
+ handle(delete "#{resource_path}/#{id}")
89
90
  end
90
91
 
91
92
  protected
@@ -97,7 +98,7 @@ module Easybill
97
98
  request_options[:query] = query unless query.empty?
98
99
  request_options[:headers] = headers unless headers.empty?
99
100
 
100
- public_send method, path, request_options
101
+ handle(public_send method, path, request_options)
101
102
  end
102
103
 
103
104
  private
@@ -7,6 +7,8 @@ module Easybill
7
7
 
8
8
  class Client
9
9
 
10
+ ENTITIES = [:Base, :Attachments, :Contacts, :Customers, :CustomerGroups, :Documents, :DocumentPayments, :Positions, :PositionGroups, :PostBoxes, :Projects, :Tasks, :TextTemplates, :TimeTrackings].freeze
11
+
10
12
  ##
11
13
  # Create a new client instance with an +api_key+
12
14
  #
@@ -14,7 +16,10 @@ module Easybill
14
16
  # @api = Easybill::Api::Client.new("api_key")
15
17
 
16
18
  def initialize(api_key)
17
- Easybill::Api::Base.authenticate api_key
19
+ ENTITIES.each do |entity|
20
+ eval("Easybill::Api::#{entity}").authenticate api_key
21
+ end
22
+ self
18
23
  end
19
24
 
20
25
  ##
@@ -0,0 +1,29 @@
1
+ module Easybill
2
+ module Api
3
+ module ResponseHandler
4
+ def self.included(base)
5
+ base.extend(ClassMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+ def handle(response)
10
+ case response.code
11
+ when 200..299
12
+ response
13
+ when 400
14
+ raise Easybill::Errors::BadRequestError, response.message
15
+ when 401
16
+ raise Easybill::Errors::NotAuthorizedError, response.message
17
+ when 404
18
+ raise Easybill::Errors::ResourceNotFoundError, response.message
19
+ when 429
20
+ raise Easybill::Errors::RateLimitExceededError, response.message
21
+ when 500...600
22
+ raise Easybill::Errors::ServerError, "Failed with: #{response.code} #{response.message}"
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
@@ -1,5 +1,5 @@
1
1
  module Easybill
2
2
  module Api
3
- VERSION = "0.7.1"
3
+ VERSION = "0.7.2"
4
4
  end
5
5
  end
@@ -0,0 +1,16 @@
1
+ module Easybill
2
+ module Errors
3
+ class BaseError < StandardError; end
4
+
5
+ class ServerError < StandardError; end
6
+
7
+ class ClientError < BaseError; end
8
+ class RateLimitExceededError < ClientError; end
9
+ class ResourceNotFoundError < ClientError; end
10
+ class BadRequestError < ClientError; end
11
+ class NotAuthorizedError < ClientError; end
12
+
13
+ class ResourceNotCreatableError < BaseError; end
14
+ class ResourceNotUpdatableError < BaseError; end
15
+ end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easybill-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Schnetger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-01 00:00:00.000000000 Z
11
+ date: 2016-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -117,11 +117,12 @@ files:
117
117
  - lib/easybill/api/positions.rb
118
118
  - lib/easybill/api/post_boxes.rb
119
119
  - lib/easybill/api/projects.rb
120
+ - lib/easybill/api/response_handler.rb
120
121
  - lib/easybill/api/tasks.rb
121
122
  - lib/easybill/api/text_templates.rb
122
123
  - lib/easybill/api/time_trackings.rb
123
124
  - lib/easybill/api/version.rb
124
- - lib/easybill/errors/errors.rb
125
+ - lib/easybill/errors.rb
125
126
  homepage: https://www.github.com/schnika/easybill
126
127
  licenses:
127
128
  - MIT
@@ -1,11 +0,0 @@
1
- module Easybill
2
- module Errors
3
- class BaseError < StandardError; end
4
-
5
- class ApiError < BaseError; end
6
- class RateLimitExceededError < ApiError; end
7
-
8
- class ResourceNotCreatableError < BaseError; end
9
- class ResourceNotUpdatableError < BaseError; end
10
- end
11
- end