capsule_crm 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/capsule_crm.rb +3 -1
- data/lib/capsule_crm/connection.rb +2 -9
- data/lib/capsule_crm/errors.rb +48 -0
- data/lib/capsule_crm/errors/{unauthorized.rb → response_error.rb} +1 -1
- data/lib/capsule_crm/faraday/middleware/raise_error.rb +13 -0
- data/lib/capsule_crm/version.rb +1 -1
- data/spec/lib/capsule_crm/connection_spec.rb +8 -8
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c009a947688f5f89bc4b47b49423502a91523bb9
|
4
|
+
data.tar.gz: 0efb281b53de063eff58eb3ae377111fe1a1399e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b90a009a0257c2f54885f361191cbf36afce7fe0341f71b18afc4821eaca7d23a7cc095507c71447d1e533d33c301138047b6dc0b54217dd5694d78036221c2
|
7
|
+
data.tar.gz: b621f0a7989688a34e4505fb7952b8f69f26e17f6c715acd313b6a8ea4f4a3f0139334affebb8f02fa35535904b73f32fa7327e3c62e4a42bd3e94af20714751
|
data/lib/capsule_crm.rb
CHANGED
@@ -24,9 +24,10 @@ require 'capsule_crm/user'
|
|
24
24
|
require 'capsule_crm/website'
|
25
25
|
require 'capsule_crm/hash_helper'
|
26
26
|
require 'capsule_crm/results_proxy'
|
27
|
+
require 'capsule_crm/errors'
|
27
28
|
require 'capsule_crm/errors/record_invalid'
|
28
29
|
require 'capsule_crm/errors/record_not_saved'
|
29
|
-
require 'capsule_crm/errors/
|
30
|
+
require 'capsule_crm/errors/response_error'
|
30
31
|
require 'capsule_crm/contacts'
|
31
32
|
require 'capsule_crm/contactable'
|
32
33
|
require 'capsule_crm/configuration'
|
@@ -38,6 +39,7 @@ require 'capsule_crm/person'
|
|
38
39
|
require 'capsule_crm/milestone'
|
39
40
|
require 'capsule_crm/track'
|
40
41
|
require 'capsule_crm/version'
|
42
|
+
require 'capsule_crm/faraday/middleware/raise_error'
|
41
43
|
|
42
44
|
module CapsuleCRM
|
43
45
|
|
@@ -29,14 +29,6 @@ module CapsuleCRM
|
|
29
29
|
def self.request(method, path, params)
|
30
30
|
faraday.send(method, path, params) do |req|
|
31
31
|
req.headers.update default_request_headers
|
32
|
-
end.tap do |response|
|
33
|
-
check_response_status(response)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.check_response_status(response)
|
38
|
-
if response.status == 401
|
39
|
-
raise CapsuleCRM::Errors::Unauthorized.new(response)
|
40
32
|
end
|
41
33
|
end
|
42
34
|
|
@@ -67,9 +59,10 @@ module CapsuleCRM
|
|
67
59
|
end
|
68
60
|
|
69
61
|
def self.faraday
|
70
|
-
Faraday.new("https://#{subdomain}.capsulecrm.com").tap do |connection|
|
62
|
+
::Faraday.new("https://#{subdomain}.capsulecrm.com").tap do |connection|
|
71
63
|
connection.basic_auth(CapsuleCRM.configuration.api_token, '')
|
72
64
|
connection.request :json
|
65
|
+
connection.use CapsuleCRM::Faraday::Middleware::RaiseError
|
73
66
|
end
|
74
67
|
end
|
75
68
|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require_relative 'errors/response_error'
|
2
|
+
|
3
|
+
module CapsuleCRM
|
4
|
+
module Errors
|
5
|
+
BAD_REQUEST = 400
|
6
|
+
NOT_AUTHORIZED = 401
|
7
|
+
NOT_FOUND = 404
|
8
|
+
INTERNAL_SERVER_ERROR = 500
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def error_constants
|
12
|
+
self.constants.each_with_object({}) do |name, hash|
|
13
|
+
next if (code = Errors.const_get(name)).is_a?(Class)
|
14
|
+
hash[name] = code
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def class_name_for_error_name(name)
|
19
|
+
name.to_s.titleize.gsub(' ', '')
|
20
|
+
end
|
21
|
+
|
22
|
+
def class_for_error_name(name)
|
23
|
+
class_name = class_name_for_error_name(name)
|
24
|
+
if const_defined?(class_name)
|
25
|
+
CapsuleCRM::Errors.const_get(class_name)
|
26
|
+
else
|
27
|
+
CapsuleCRM::Errors::InternalServerError
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def class_for_error_code(code)
|
32
|
+
name = error_constants.select { |k, v| v == code }.keys.first
|
33
|
+
if name.present?
|
34
|
+
class_for_error_name(name)
|
35
|
+
else
|
36
|
+
CapsuleCRM::Errors::InternalServerError
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
CapsuleCRM::Errors.error_constants.each do |name, code|
|
44
|
+
klass = Class.new(CapsuleCRM::Errors::ResponseError)
|
45
|
+
klass.send(:define_method, :code) { code }
|
46
|
+
klass_name = CapsuleCRM::Errors.class_name_for_error_name(name)
|
47
|
+
CapsuleCRM::Errors.const_set(klass_name, klass)
|
48
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CapsuleCRM
|
2
|
+
module Faraday
|
3
|
+
module Middleware
|
4
|
+
class RaiseError < ::Faraday::Response::Middleware
|
5
|
+
def on_complete(env)
|
6
|
+
return if env[:status] < 400
|
7
|
+
raise CapsuleCRM::Errors.class_for_error_code(env[:status]).
|
8
|
+
new(env[:response])
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/capsule_crm/version.rb
CHANGED
@@ -25,8 +25,8 @@ describe CapsuleCRM::Connection do
|
|
25
25
|
end
|
26
26
|
subject { CapsuleCRM::Connection.get('/api/v1/foo') }
|
27
27
|
|
28
|
-
it 'should raise an
|
29
|
-
expect { subject }.to raise_error(CapsuleCRM::Errors::
|
28
|
+
it 'should raise an NotAuthorized error' do
|
29
|
+
expect { subject }.to raise_error(CapsuleCRM::Errors::NotAuthorized)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -64,8 +64,8 @@ describe CapsuleCRM::Connection do
|
|
64
64
|
stub_request(:post, /.*/).to_return(status: 401, body: '<html></html>')
|
65
65
|
end
|
66
66
|
|
67
|
-
it 'should raise an
|
68
|
-
expect { subject }.to raise_error(CapsuleCRM::Errors::
|
67
|
+
it 'should raise an NotAuthorized error' do
|
68
|
+
expect { subject }.to raise_error(CapsuleCRM::Errors::NotAuthorized)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
@@ -88,8 +88,8 @@ describe CapsuleCRM::Connection do
|
|
88
88
|
stub_request(:put, /\.*/).to_return(status: 401)
|
89
89
|
end
|
90
90
|
|
91
|
-
it 'should raise an
|
92
|
-
expect { subject }.to raise_error(CapsuleCRM::Errors::
|
91
|
+
it 'should raise an NotAuthorized error' do
|
92
|
+
expect { subject }.to raise_error(CapsuleCRM::Errors::NotAuthorized)
|
93
93
|
end
|
94
94
|
end
|
95
95
|
end
|
@@ -112,8 +112,8 @@ describe CapsuleCRM::Connection do
|
|
112
112
|
stub_request(:delete, /.*/).to_return(status: 401)
|
113
113
|
end
|
114
114
|
|
115
|
-
it 'should raise an
|
116
|
-
expect { subject }.to raise_error(CapsuleCRM::Errors::
|
115
|
+
it 'should raise an NotAuthorized error' do
|
116
|
+
expect { subject }.to raise_error(CapsuleCRM::Errors::NotAuthorized)
|
117
117
|
end
|
118
118
|
end
|
119
119
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capsule_crm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Beedle
|
@@ -271,9 +271,11 @@ files:
|
|
271
271
|
- lib/capsule_crm/currency.rb
|
272
272
|
- lib/capsule_crm/custom_field.rb
|
273
273
|
- lib/capsule_crm/email.rb
|
274
|
+
- lib/capsule_crm/errors.rb
|
274
275
|
- lib/capsule_crm/errors/record_invalid.rb
|
275
276
|
- lib/capsule_crm/errors/record_not_saved.rb
|
276
|
-
- lib/capsule_crm/errors/
|
277
|
+
- lib/capsule_crm/errors/response_error.rb
|
278
|
+
- lib/capsule_crm/faraday/middleware/raise_error.rb
|
277
279
|
- lib/capsule_crm/hash_helper.rb
|
278
280
|
- lib/capsule_crm/history.rb
|
279
281
|
- lib/capsule_crm/milestone.rb
|