billogram 0.3.0 → 0.3.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 +4 -4
- data/.env.example +3 -0
- data/.gitignore +1 -0
- data/billogram.gemspec +2 -0
- data/lib/billogram/client.rb +19 -1
- data/lib/billogram/error.rb +15 -6
- data/lib/billogram/resource.rb +22 -8
- data/lib/billogram/version.rb +1 -1
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39e66e578b19f0e0da0568b754392205e1604bdd
|
4
|
+
data.tar.gz: 6805cedcaf8042745a4b4fd7da5458aa89dc9dfa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c31531e5f6b44d58b8577b9d5a4a0628d441ccf91f3d59a8ca4b34c4348056aaf5a627bdb29ca83a53f51f9684114c7e19b0b8a795593c55ec9c68c54d63fe22
|
7
|
+
data.tar.gz: 329cba8ed6a9383751a03929ac2fe4bf1613d2471feb714963ce5f7d5078b27d5443d9dfc3e58f61064d1c03abe9cd93f5cc1bf9203d5a024aefa832d1537066
|
data/.env.example
ADDED
data/.gitignore
CHANGED
data/billogram.gemspec
CHANGED
@@ -21,5 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.10"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
23
|
spec.add_development_dependency "rspec", "~> 3.0"
|
24
|
+
spec.add_development_dependency "webmock", "~> 1.21"
|
25
|
+
spec.add_development_dependency "dotenv", "~> 2.0"
|
24
26
|
spec.add_dependency "httparty", "~> 0.13"
|
25
27
|
end
|
data/lib/billogram/client.rb
CHANGED
@@ -8,7 +8,25 @@ module Billogram
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def get(*args)
|
11
|
-
|
11
|
+
handle_request(:get, *args)
|
12
|
+
end
|
13
|
+
|
14
|
+
def post(*args)
|
15
|
+
handle_request(:post, *args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def put(*args)
|
19
|
+
handle_request(:put, *args)
|
20
|
+
end
|
21
|
+
|
22
|
+
def delete(*args)
|
23
|
+
handle_request(:delete, *args)
|
24
|
+
end
|
25
|
+
|
26
|
+
def handle_request(method, *args)
|
27
|
+
response = self.class.send(method, *args)
|
28
|
+
return response.parsed_response["data"] if response.code == 200
|
29
|
+
raise Billogram::Error.from_response(response)
|
12
30
|
end
|
13
31
|
end
|
14
32
|
end
|
data/lib/billogram/error.rb
CHANGED
@@ -11,16 +11,25 @@ module Billogram
|
|
11
11
|
status = response.response.code.to_i
|
12
12
|
body = response.body.to_s
|
13
13
|
headers = response.headers
|
14
|
+
message = error_message(response)
|
14
15
|
|
15
16
|
if klass = case status
|
16
|
-
when 400 then
|
17
|
-
when 401 then
|
18
|
-
when 403 then
|
19
|
-
when 404 then
|
20
|
-
when 500 then
|
17
|
+
when 400 then BadRequest
|
18
|
+
when 401 then Unauthorized
|
19
|
+
when 403 then Forbidden
|
20
|
+
when 404 then NotFound
|
21
|
+
when 500 then InternalServerError
|
21
22
|
else Billogram::Error
|
22
23
|
end
|
23
|
-
klass.new(
|
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", "")
|
24
33
|
end
|
25
34
|
end
|
26
35
|
end
|
data/lib/billogram/resource.rb
CHANGED
@@ -15,16 +15,26 @@ module Billogram
|
|
15
15
|
def search(options = {})
|
16
16
|
query = DEFAULT_OPTIONS.merge(options)
|
17
17
|
response = Billogram.client.get("#{endpoint}", {query: query})
|
18
|
-
|
18
|
+
build_objects(response)
|
19
19
|
end
|
20
20
|
|
21
21
|
def fetch(id)
|
22
22
|
response = Billogram.client.get("#{endpoint}/#{id}")
|
23
|
-
|
23
|
+
build_objects(response)
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
27
|
-
response
|
26
|
+
def create(attributes)
|
27
|
+
response = Billogram.client.post("#{endpoint}", {body: attributes.to_json})
|
28
|
+
build_objects(response)
|
29
|
+
end
|
30
|
+
|
31
|
+
def update(id, attributes)
|
32
|
+
response = Billogram.client.put("#{endpoint}/#{id}", {body: attributes.to_json})
|
33
|
+
build_objects(response)
|
34
|
+
end
|
35
|
+
|
36
|
+
def delete(id)
|
37
|
+
Billogram.client.put("#{endpoint}/#{id}")
|
28
38
|
end
|
29
39
|
|
30
40
|
def relation(relation_name, relation_type = :one)
|
@@ -39,10 +49,6 @@ module Billogram
|
|
39
49
|
else data
|
40
50
|
end
|
41
51
|
end
|
42
|
-
|
43
|
-
def process_error(response)
|
44
|
-
raise Billogram::Error.from_response(response)
|
45
|
-
end
|
46
52
|
end
|
47
53
|
|
48
54
|
def initialize(attributes = {})
|
@@ -52,5 +58,13 @@ module Billogram
|
|
52
58
|
|
53
59
|
RelationBuilder.new(self, attributes).call
|
54
60
|
end
|
61
|
+
|
62
|
+
def update(attributes)
|
63
|
+
self.class.update(id, attributes)
|
64
|
+
end
|
65
|
+
|
66
|
+
def delete
|
67
|
+
self.class.delete(id)
|
68
|
+
end
|
55
69
|
end
|
56
70
|
end
|
data/lib/billogram/version.rb
CHANGED
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.3.
|
4
|
+
version: 0.3.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-08-
|
11
|
+
date: 2015-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.21'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.21'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: dotenv
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: httparty
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,6 +101,7 @@ executables: []
|
|
73
101
|
extensions: []
|
74
102
|
extra_rdoc_files: []
|
75
103
|
files:
|
104
|
+
- ".env.example"
|
76
105
|
- ".gitignore"
|
77
106
|
- ".rspec"
|
78
107
|
- ".travis.yml"
|