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