billogram 0.3.0 → 0.3.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: 7ea9d6bb4bcbf0fc5d3b772fdaa8711ffc71c53c
4
- data.tar.gz: 3e08419d6355f7d66b6e96d90ae2864d085cc764
3
+ metadata.gz: 39e66e578b19f0e0da0568b754392205e1604bdd
4
+ data.tar.gz: 6805cedcaf8042745a4b4fd7da5458aa89dc9dfa
5
5
  SHA512:
6
- metadata.gz: 0d1f0e740c9a15aa09f086831848ec1ef8bdce74662182461506acff9b76af757e4118e34a4ab6c49349336e14cb996fc46048979194407923d6a6cee168e388
7
- data.tar.gz: 46176d7024013032388fd55f9fb98b61d354aca18ce16ea9560de4f65560eb48a0569c14daa0fa547b1e17b41a2d15ce8dc1506fa977755b37ddb87fbb6bc11d
6
+ metadata.gz: c31531e5f6b44d58b8577b9d5a4a0628d441ccf91f3d59a8ca4b34c4348056aaf5a627bdb29ca83a53f51f9684114c7e19b0b8a795593c55ec9c68c54d63fe22
7
+ data.tar.gz: 329cba8ed6a9383751a03929ac2fe4bf1613d2471feb714963ce5f7d5078b27d5443d9dfc3e58f61064d1c03abe9cd93f5cc1bf9203d5a024aefa832d1537066
data/.env.example ADDED
@@ -0,0 +1,3 @@
1
+ BILLOGRAM_BASE_URI: "https://sandbox.billogram.com/api/v2/"
2
+ BILLOGRAM_USERNAME: "6603-z0UqHDRJ"
3
+ BILLOGRAM_PASSWORD: "55e0cc0a4170f39641840dd4c8274f70"
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  *.gem
11
+ .env
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
@@ -8,7 +8,25 @@ module Billogram
8
8
  end
9
9
 
10
10
  def get(*args)
11
- self.class.get(*args)
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
@@ -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 Billogram::BadRequest
17
- when 401 then Billogram::Unauthorized
18
- when 403 then Billogram::Forbidden
19
- when 404 then Billogram::NotFound
20
- when 500 then Billogram::InternalServerError
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(response)
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
@@ -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
- parse_response(response)
18
+ build_objects(response)
19
19
  end
20
20
 
21
21
  def fetch(id)
22
22
  response = Billogram.client.get("#{endpoint}/#{id}")
23
- parse_response(response)
23
+ build_objects(response)
24
24
  end
25
25
 
26
- def parse_response(response)
27
- response.code == 200 ? build_objects(response.parsed_response['data']) : process_error(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
@@ -1,3 +1,3 @@
1
1
  module Billogram
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.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.3.0
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-19 00:00:00.000000000 Z
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"