chargebee 1.4.5 → 1.4.6
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.
- data/CHANGELOG.md +20 -0
- data/chargebee.gemspec +3 -3
- data/lib/chargebee.rb +2 -2
- data/lib/chargebee/errors.rb +43 -0
- data/lib/chargebee/rest.rb +23 -21
- data/spec/chargebee_spec.rb +2 -12
- data/spec/sample_response.rb +0 -9
- metadata +52 -57
- data/lib/chargebee/api_error.rb +0 -23
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
### v1.4.6 (2014-09-16)
|
2
|
+
* * *
|
3
|
+
|
4
|
+
**Error Model**:
|
5
|
+
|
6
|
+
New simpler model for error handling has been implemented. Please see below api document for more details
|
7
|
+
|
8
|
+
https://apidocs.chargebee.com/docs/api?lang=ruby#error_handling
|
9
|
+
|
10
|
+
The following attributes in APIError have been deprecated.
|
11
|
+
* error_code (Use api_error_code instead).
|
12
|
+
* http_code (Use http_status_code instead).
|
13
|
+
* http_body
|
14
|
+
|
15
|
+
The changes are backward compatible. Ensure that your error handling code is tested after you upgrade to this version.
|
16
|
+
|
17
|
+
**APIs Updated**:
|
18
|
+
|
19
|
+
Shipping Address support added to *create subscription for a customer* api call.
|
20
|
+
|
1
21
|
### v1.4.5 (2014-08-28)
|
2
22
|
* * *
|
3
23
|
* Customer id can be passed to the checkout new subscription operation.
|
data/chargebee.gemspec
CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.rubygems_version = '1.3.5'
|
5
5
|
|
6
6
|
s.name = 'chargebee'
|
7
|
-
s.version = '1.4.
|
8
|
-
s.date = '2014-
|
7
|
+
s.version = '1.4.6'
|
8
|
+
s.date = '2014-09-16'
|
9
9
|
|
10
10
|
s.summary = "Ruby client for Chargebee API."
|
11
11
|
s.description = "Subscription Billing - Simple. Secure. Affordable. More details at www.chargebee.com."
|
@@ -34,8 +34,8 @@ Gem::Specification.new do |s|
|
|
34
34
|
Rakefile
|
35
35
|
chargebee.gemspec
|
36
36
|
lib/chargebee.rb
|
37
|
-
lib/chargebee/api_error.rb
|
38
37
|
lib/chargebee/environment.rb
|
38
|
+
lib/chargebee/errors.rb
|
39
39
|
lib/chargebee/list_result.rb
|
40
40
|
lib/chargebee/models/addon.rb
|
41
41
|
lib/chargebee/models/address.rb
|
data/lib/chargebee.rb
CHANGED
@@ -5,7 +5,7 @@ require File.dirname(__FILE__) + '/chargebee/request'
|
|
5
5
|
require File.dirname(__FILE__) + '/chargebee/result'
|
6
6
|
require File.dirname(__FILE__) + '/chargebee/list_result'
|
7
7
|
|
8
|
-
require File.dirname(__FILE__) + '/chargebee/
|
8
|
+
require File.dirname(__FILE__) + '/chargebee/errors'
|
9
9
|
|
10
10
|
require File.dirname(__FILE__) + '/chargebee/models/model'
|
11
11
|
require File.dirname(__FILE__) + '/chargebee/models/subscription'
|
@@ -27,7 +27,7 @@ require File.dirname(__FILE__) + '/chargebee/models/download'
|
|
27
27
|
|
28
28
|
module ChargeBee
|
29
29
|
|
30
|
-
VERSION = '1.4.
|
30
|
+
VERSION = '1.4.6'
|
31
31
|
|
32
32
|
@@default_env = nil
|
33
33
|
@@verify_ca_certs = true
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module ChargeBee
|
2
|
+
|
3
|
+
class Error < StandardError
|
4
|
+
attr_reader :original_error
|
5
|
+
|
6
|
+
def initialize(message=nil,original_error = nil)
|
7
|
+
super message
|
8
|
+
@original_error = original_error
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class IOError < Error; end
|
13
|
+
|
14
|
+
class APIError < Error
|
15
|
+
|
16
|
+
attr_reader :http_status_code, :message, :type, :api_error_code, :param, :json_obj,
|
17
|
+
#Deprecated attributes
|
18
|
+
:http_code, :http_body, :error_code
|
19
|
+
|
20
|
+
def initialize(http_code=nil, json_obj = nil)
|
21
|
+
super json_obj[:message]
|
22
|
+
@json_obj = json_obj
|
23
|
+
@http_status_code = http_code
|
24
|
+
@type = json_obj[:type]
|
25
|
+
@api_error_code = json_obj[:api_error_code]
|
26
|
+
@param = json_obj[:param]
|
27
|
+
|
28
|
+
#Deprecated attributes
|
29
|
+
@error_code = json_obj[:error_code]
|
30
|
+
@http_code = http_code
|
31
|
+
@http_body = json_obj.to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
class OperationFailedError < APIError; end
|
38
|
+
|
39
|
+
class InvalidRequestError < APIError; end
|
40
|
+
|
41
|
+
class PaymentError < APIError; end
|
42
|
+
|
43
|
+
end
|
data/lib/chargebee/rest.rb
CHANGED
@@ -5,7 +5,7 @@ module ChargeBee
|
|
5
5
|
module Rest
|
6
6
|
|
7
7
|
def self.request(method, url, env, params=nil)
|
8
|
-
raise
|
8
|
+
raise Error.new('No environment configured.') unless env
|
9
9
|
api_key = env.api_key
|
10
10
|
headers = {}
|
11
11
|
|
@@ -44,46 +44,48 @@ module ChargeBee
|
|
44
44
|
|
45
45
|
begin
|
46
46
|
response = RestClient::Request.execute(opts)
|
47
|
-
rescue
|
48
|
-
|
49
|
-
when SocketError
|
50
|
-
raise APIError.new("Error while connecting to chargebee. If you see this repeatedly, contact us at support@chargebee.com")
|
51
|
-
when RestClient::ExceptionWithResponse
|
52
|
-
if rcode = e.http_code and rbody = e.http_body
|
47
|
+
rescue RestClient::ExceptionWithResponse => e
|
48
|
+
if rcode = e.http_code and rbody = e.http_body
|
53
49
|
raise handle_for_error(e, rcode, rbody)
|
54
|
-
else
|
55
|
-
raise APIError.new(e.message)
|
56
|
-
end
|
57
|
-
when RestClient::Exception
|
58
|
-
raise APIError.new("Unexpected error received: #{e.message}", e.http_code, e.http_body)
|
59
50
|
else
|
60
|
-
|
51
|
+
raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
|
61
52
|
end
|
53
|
+
rescue Exception => e
|
54
|
+
raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
|
62
55
|
end
|
63
56
|
rbody = response.body
|
64
57
|
rcode = response.code
|
65
58
|
begin
|
66
59
|
resp = JSON.parse(rbody)
|
67
|
-
rescue
|
68
|
-
raise
|
60
|
+
rescue Exception => e
|
61
|
+
raise Error.new("Response not in JSON format. Probably not a ChargeBee response \n #{rbody.inspect}",e)
|
69
62
|
end
|
70
|
-
|
71
63
|
resp = Util.symbolize_keys(resp)
|
72
64
|
resp
|
73
65
|
end
|
74
66
|
|
75
67
|
def self.handle_for_error(e, rcode=nil, rbody=nil)
|
76
68
|
if(rcode == 204)
|
77
|
-
raise
|
69
|
+
raise Error.new("No response returned by the chargebee api. The http status code is #{rcode}")
|
78
70
|
end
|
79
71
|
begin
|
80
72
|
error_obj = JSON.parse(rbody)
|
81
73
|
error_obj = Util.symbolize_keys(error_obj)
|
82
|
-
rescue
|
83
|
-
raise
|
74
|
+
rescue Exception => e
|
75
|
+
raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
|
76
|
+
end
|
77
|
+
type = error_obj[:type]
|
78
|
+
if("payment" == type)
|
79
|
+
raise PaymentError.new(rcode, error_obj)
|
80
|
+
elsif("operation_failed" == type)
|
81
|
+
raise OperationFailedError.new(rcode, error_obj)
|
82
|
+
elsif("invalid_request" == type)
|
83
|
+
raise InvalidRequestError.new(rcode, error_obj)
|
84
|
+
else
|
85
|
+
raise APIError.new(rcode, error_obj)
|
84
86
|
end
|
85
|
-
|
87
|
+
|
86
88
|
end
|
87
89
|
|
88
90
|
end
|
89
|
-
end
|
91
|
+
end
|
data/spec/chargebee_spec.rb
CHANGED
@@ -27,9 +27,9 @@ describe "chargebee" do
|
|
27
27
|
"id"=>"sub_KyVq7DNSNM7CSD",
|
28
28
|
"plan_id"=>"free",
|
29
29
|
"addons[id][0]"=>"monitor",
|
30
|
-
"addons[quantity][0]"=>2,
|
30
|
+
"addons[quantity][0]"=>"2",
|
31
31
|
"addons[id][1]"=>"ssl",
|
32
|
-
"addon_ids[0"=>"addon_one",
|
32
|
+
"addon_ids[0]"=>"addon_one",
|
33
33
|
"addon_ids[1]"=>"addon_two",
|
34
34
|
"card[first_name]"=>"Rajaraman",
|
35
35
|
"card[last_name]"=>"Santhanam",
|
@@ -95,15 +95,5 @@ describe "chargebee" do
|
|
95
95
|
s.id.should eq('sample_subscription')
|
96
96
|
end
|
97
97
|
|
98
|
-
it "should raise APIError when error response is received" do
|
99
|
-
response = mock_response(sample_error, 400)
|
100
|
-
begin
|
101
|
-
@request.expects(:execute).once.raises(RestClient::ExceptionWithResponse.new(response, 400))
|
102
|
-
ChargeBee::Subscription.create({:id => "invalid_subscription"})
|
103
|
-
rescue ChargeBee::APIError => e
|
104
|
-
e.http_code.should eq(400)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
98
|
end
|
109
99
|
|
data/spec/sample_response.rb
CHANGED
metadata
CHANGED
@@ -1,82 +1,79 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: chargebee
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.6
|
4
5
|
prerelease:
|
5
|
-
version: 1.4.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Rajaraman S
|
9
9
|
- Thiyagarajan T
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2014-09-16 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: json_pure
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &9519980 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
19
|
+
requirements:
|
22
20
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.5'
|
25
23
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rest-client
|
29
24
|
prerelease: false
|
30
|
-
|
25
|
+
version_requirements: *9519980
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rest-client
|
28
|
+
requirement: &9519220 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
|
-
requirements:
|
30
|
+
requirements:
|
33
31
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.4'
|
36
34
|
type: :runtime
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: rpsec
|
40
35
|
prerelease: false
|
41
|
-
|
36
|
+
version_requirements: *9519220
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rpsec
|
39
|
+
requirement: &9518120 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
|
-
requirements:
|
41
|
+
requirements:
|
44
42
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
43
|
+
- !ruby/object:Gem::Version
|
46
44
|
version: 2.9.0
|
47
45
|
type: :development
|
48
|
-
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: mocha
|
51
46
|
prerelease: false
|
52
|
-
|
47
|
+
version_requirements: *9518120
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: mocha
|
50
|
+
requirement: &9516880 !ruby/object:Gem::Requirement
|
53
51
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version:
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
58
56
|
type: :development
|
59
|
-
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *9516880
|
60
59
|
description: Subscription Billing - Simple. Secure. Affordable. More details at www.chargebee.com.
|
61
|
-
email:
|
60
|
+
email:
|
62
61
|
- rr@chargebee.com
|
63
62
|
- thiyagu@chargebee.com
|
64
63
|
executables: []
|
65
|
-
|
66
64
|
extensions: []
|
67
|
-
|
68
|
-
extra_rdoc_files:
|
65
|
+
extra_rdoc_files:
|
69
66
|
- README.rdoc
|
70
67
|
- LICENSE
|
71
|
-
files:
|
68
|
+
files:
|
72
69
|
- CHANGELOG.md
|
73
70
|
- LICENSE
|
74
71
|
- README.rdoc
|
75
72
|
- Rakefile
|
76
73
|
- chargebee.gemspec
|
77
74
|
- lib/chargebee.rb
|
78
|
-
- lib/chargebee/api_error.rb
|
79
75
|
- lib/chargebee/environment.rb
|
76
|
+
- lib/chargebee/errors.rb
|
80
77
|
- lib/chargebee/list_result.rb
|
81
78
|
- lib/chargebee/models/addon.rb
|
82
79
|
- lib/chargebee/models/address.rb
|
@@ -106,32 +103,30 @@ files:
|
|
106
103
|
- spec/spec_helper.rb
|
107
104
|
homepage: https://apidocs.chargebee.com/api/docs?lang=ruby
|
108
105
|
licenses: []
|
109
|
-
|
110
106
|
post_install_message:
|
111
|
-
rdoc_options:
|
107
|
+
rdoc_options:
|
112
108
|
- --charset=UTF-8
|
113
|
-
require_paths:
|
109
|
+
require_paths:
|
114
110
|
- lib
|
115
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
112
|
none: false
|
117
|
-
requirements:
|
118
|
-
- -
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version:
|
121
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ! '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
118
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version:
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
127
123
|
requirements: []
|
128
|
-
|
129
124
|
rubyforge_project:
|
130
|
-
rubygems_version: 1.8.
|
125
|
+
rubygems_version: 1.8.10
|
131
126
|
signing_key:
|
132
127
|
specification_version: 2
|
133
128
|
summary: Ruby client for Chargebee API.
|
134
|
-
test_files:
|
129
|
+
test_files:
|
135
130
|
- spec/chargebee/list_result_spec.rb
|
136
131
|
- spec/chargebee_spec.rb
|
137
132
|
- spec/sample_response.rb
|
data/lib/chargebee/api_error.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module ChargeBee
|
2
|
-
class APIError < StandardError
|
3
|
-
|
4
|
-
attr_reader :message, :http_code, :http_body, :json_obj, :error_code, :param
|
5
|
-
|
6
|
-
def initialize(message=nil, http_code=nil, http_body=nil, json_obj = nil)
|
7
|
-
@message = message
|
8
|
-
@http_code = http_code
|
9
|
-
@http_body = http_body
|
10
|
-
@json_obj = json_obj
|
11
|
-
if(json_obj != nil)
|
12
|
-
@error_code = json_obj[:error_code]
|
13
|
-
@param = json_obj[:param]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def to_s
|
18
|
-
hc = @http_code.nil? ? "" : "(Http Code #{@http_code}) "
|
19
|
-
"#{hc}#{@message}"
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|