easybill-api 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +41 -5
- data/lib/easybill/api/base.rb +52 -1
- data/lib/easybill/api/client.rb +52 -1
- data/lib/easybill/api/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9fbb2b594d462f64e79bb212a2c0175a6a031ab
|
4
|
+
data.tar.gz: c4d555d86a682613005cc535b243653b3a6b4b2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 201e827dab9e7318700b08f42862cf6771a8c118401cc033f819c06eb35923aab6786487fb2839455228da7d546e63fb1d07f04828e65680df312bf7f380df1d
|
7
|
+
data.tar.gz: 84391415d0eea401203523f9267a69702ab55996eed0928db2af7576dc13b79adcf5feed31bf949b0bfd1019f77b1071065f0acf08133ca9a7e19ef4fc271e94
|
data/README.md
CHANGED
@@ -20,21 +20,57 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
24
23
|
Initialize a new api client:
|
25
24
|
|
26
25
|
```
|
27
26
|
@api = Easybill::Api.new(<YOUR API TOKEN>)
|
28
27
|
```
|
29
28
|
|
29
|
+
Example calls based on the `customers` resource:
|
30
|
+
|
31
|
+
```
|
32
|
+
# Fetch all customers
|
33
|
+
|
34
|
+
customers = @api.customers.list["items"]
|
35
|
+
```
|
36
|
+
|
37
|
+
```
|
38
|
+
# Fetch one customers
|
39
|
+
|
40
|
+
customer = @api.customers.find(<ID>)
|
41
|
+
fist_name = response["first_name"]
|
42
|
+
```
|
43
|
+
|
30
44
|
```
|
31
|
-
|
32
|
-
|
45
|
+
# Create a customer
|
46
|
+
|
47
|
+
customer_hash = {
|
48
|
+
first_name: "fabio",
|
49
|
+
last_name: "lorenzo",
|
50
|
+
...
|
51
|
+
}
|
52
|
+
|
53
|
+
customer = @api.customers.create(customer_hash)
|
54
|
+
# => 201 created
|
33
55
|
```
|
34
56
|
|
35
57
|
```
|
36
|
-
|
37
|
-
|
58
|
+
# Update a customer
|
59
|
+
|
60
|
+
update_customer_hash = {
|
61
|
+
country: "UK",
|
62
|
+
...
|
63
|
+
}
|
64
|
+
|
65
|
+
customer = @api.customers.update(<ID>, update_customer_hash)
|
66
|
+
# => 200 ok
|
67
|
+
```
|
68
|
+
|
69
|
+
```
|
70
|
+
# Delete a customer
|
71
|
+
|
72
|
+
@api.customers.destroy(<ID>)
|
73
|
+
# => 204 deleted
|
38
74
|
```
|
39
75
|
|
40
76
|
## Development
|
data/lib/easybill/api/base.rb
CHANGED
@@ -2,6 +2,18 @@ require 'httparty'
|
|
2
2
|
|
3
3
|
module Easybill
|
4
4
|
module Api
|
5
|
+
|
6
|
+
##
|
7
|
+
# The base class for all Easybill entities.
|
8
|
+
# Set the authorization header before using it via `.authenticate`
|
9
|
+
#
|
10
|
+
# Sets the default headers:
|
11
|
+
# "User-Agent" => "Ruby.Easybill.Api",
|
12
|
+
# "Accept" => "application/json",
|
13
|
+
# "Content-Type" => "application/json"
|
14
|
+
#
|
15
|
+
# Provides the basic interface. Such as list, find, create, update, destroy
|
16
|
+
|
5
17
|
class Base
|
6
18
|
include HTTParty
|
7
19
|
|
@@ -16,30 +28,68 @@ module Easybill
|
|
16
28
|
format :json
|
17
29
|
|
18
30
|
class << self
|
19
|
-
|
31
|
+
|
32
|
+
##
|
33
|
+
# Set the authorization header by providing your easybill +api_key+
|
34
|
+
|
35
|
+
def authenticate(api_key)
|
20
36
|
headers["authorization"] = "Bearer #{api_key}"
|
21
37
|
end
|
22
38
|
|
39
|
+
##
|
40
|
+
# Fetches all resources. You can set custom +query+ parameters.
|
41
|
+
|
23
42
|
def list(query: {})
|
24
43
|
get resource_path, query: query
|
25
44
|
end
|
26
45
|
|
46
|
+
##
|
47
|
+
# Fetches a resource by its +id+. You can set custom +query+ parameters.
|
48
|
+
# api.find(id, query: {group: 1})
|
49
|
+
|
27
50
|
def find(id, query: {})
|
28
51
|
get "#{resource_path}/#{id}", query: query
|
29
52
|
end
|
30
53
|
|
54
|
+
##
|
55
|
+
# Creates a resource. Provide the +data+ as a hash.
|
56
|
+
# e.g.
|
57
|
+
# data = {
|
58
|
+
# first_name: "Lars",
|
59
|
+
# last_name: "Bar",
|
60
|
+
# ...
|
61
|
+
# }
|
62
|
+
# api.create(data)
|
63
|
+
|
31
64
|
def create(data)
|
32
65
|
post resource_path, body: data.to_json
|
33
66
|
end
|
34
67
|
|
68
|
+
##
|
69
|
+
# Updates a resource. Provide the +id+ and +data+.
|
70
|
+
# e.g.
|
71
|
+
# id = 123456
|
72
|
+
# data = {
|
73
|
+
# first_name: "Lars",
|
74
|
+
# last_name: "Bar",
|
75
|
+
# ...
|
76
|
+
# }
|
77
|
+
# api.update(id, data)
|
78
|
+
|
35
79
|
def update(id, data)
|
36
80
|
put "#{resource_path}/#{id}", body: data.to_json
|
37
81
|
end
|
38
82
|
|
83
|
+
##
|
84
|
+
# Destroys a resource. Provide the +id+.
|
85
|
+
# api.destroy(id)
|
86
|
+
|
39
87
|
def destroy(id)
|
40
88
|
delete "#{resource_path}/#{id}"
|
41
89
|
end
|
42
90
|
|
91
|
+
protected
|
92
|
+
|
43
93
|
def custom(method:, path:, query: {}, data: {}, headers: {})
|
44
94
|
request_options = {}
|
45
95
|
|
@@ -60,6 +110,7 @@ module Easybill
|
|
60
110
|
"#{base_path}/#{dasherize(self.name.split("::").last)}"
|
61
111
|
end
|
62
112
|
|
113
|
+
# TODO-schnika: move this out of here Oo
|
63
114
|
def dasherize(camel_cased_word)
|
64
115
|
camel_cased_word.to_s.gsub(/::/, '/').
|
65
116
|
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
data/lib/easybill/api/client.rb
CHANGED
@@ -1,58 +1,109 @@
|
|
1
1
|
module Easybill
|
2
2
|
module Api
|
3
|
+
|
4
|
+
##
|
5
|
+
# This class represents the client object.
|
6
|
+
# Use this class to initialize you api client
|
7
|
+
|
3
8
|
class Client
|
9
|
+
|
10
|
+
##
|
11
|
+
# Create a new client instance with an +api_key+
|
12
|
+
#
|
13
|
+
# Create or use your generated easybill +api_key+ here
|
14
|
+
# @api = Easybill::Api::Client.new("api_key")
|
15
|
+
|
4
16
|
def initialize(api_key)
|
5
|
-
Easybill::Api::Base.authenticate
|
17
|
+
Easybill::Api::Base.authenticate api_key
|
6
18
|
end
|
7
19
|
|
20
|
+
##
|
21
|
+
# Returns a Easybill::Api::Attachments class
|
22
|
+
|
8
23
|
def attachments
|
9
24
|
Easybill::Api::Attachments
|
10
25
|
end
|
11
26
|
|
27
|
+
##
|
28
|
+
# Returns a Easybill::Api::Contacts class
|
29
|
+
|
12
30
|
def contacts
|
13
31
|
Easybill::Api::Contacts
|
14
32
|
end
|
15
33
|
|
34
|
+
##
|
35
|
+
# Returns a Easybill::Api::CustomerGroups class
|
36
|
+
|
16
37
|
def customer_groups
|
17
38
|
Easybill::Api::CustomerGroups
|
18
39
|
end
|
19
40
|
|
41
|
+
##
|
42
|
+
# Returns a Easybill::Api::Customers class
|
43
|
+
|
20
44
|
def customers
|
21
45
|
Easybill::Api::Customers
|
22
46
|
end
|
23
47
|
|
48
|
+
##
|
49
|
+
# Returns a Easybill::Api::DocumentPayments class
|
50
|
+
|
24
51
|
def document_payments
|
25
52
|
Easybill::Api::DocumentPayments
|
26
53
|
end
|
27
54
|
|
55
|
+
##
|
56
|
+
# Returns a Easybill::Api::Documents class
|
57
|
+
|
28
58
|
def documents
|
29
59
|
Easybill::Api::Documents
|
30
60
|
end
|
31
61
|
|
62
|
+
##
|
63
|
+
# Returns a Easybill::Api::PositionGroups class
|
64
|
+
|
32
65
|
def position_groups
|
33
66
|
Easybill::Api::PositionGroups
|
34
67
|
end
|
35
68
|
|
69
|
+
##
|
70
|
+
# Returns a Easybill::Api::Positions class
|
71
|
+
|
36
72
|
def positions
|
37
73
|
Easybill::Api::Positions
|
38
74
|
end
|
39
75
|
|
76
|
+
##
|
77
|
+
# Returns a Easybill::Api::PostBoxes class
|
78
|
+
|
40
79
|
def post_boxes
|
41
80
|
Easybill::Api::PostBoxes
|
42
81
|
end
|
43
82
|
|
83
|
+
##
|
84
|
+
# Returns a Easybill::Api::Projects class
|
85
|
+
|
44
86
|
def projects
|
45
87
|
Easybill::Api::Projects
|
46
88
|
end
|
47
89
|
|
90
|
+
##
|
91
|
+
# Returns a Easybill::Api::Tasks class
|
92
|
+
|
48
93
|
def tasks
|
49
94
|
Easybill::Api::Tasks
|
50
95
|
end
|
51
96
|
|
97
|
+
##
|
98
|
+
# Returns a Easybill::Api::TextTemplates class
|
99
|
+
|
52
100
|
def text_templates
|
53
101
|
Easybill::Api::TextTemplates
|
54
102
|
end
|
55
103
|
|
104
|
+
##
|
105
|
+
# Returns a Easybill::Api::TimeTrackings class
|
106
|
+
|
56
107
|
def time_trackings
|
57
108
|
Easybill::Api::TimeTrackings
|
58
109
|
end
|
data/lib/easybill/api/version.rb
CHANGED