webpay 2.4.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -2
- data/Rakefile +0 -6
- data/lib/webpay/account.rb +19 -24
- data/lib/webpay/api_resource.rb +5 -0
- data/lib/webpay/charge.rb +48 -27
- data/lib/webpay/customer.rb +56 -91
- data/lib/webpay/data_types.rb +2069 -0
- data/lib/webpay/error.rb +68 -0
- data/lib/webpay/event.rb +19 -16
- data/lib/webpay/recursion.rb +47 -46
- data/lib/webpay/shop.rb +37 -68
- data/lib/webpay/token.rb +19 -10
- data/lib/webpay.rb +114 -77
- data/webpay.gemspec +6 -13
- metadata +16 -179
- data/.rspec +0 -2
- data/.travis.yml +0 -12
- data/LICENSE.txt +0 -22
- data/README.md +0 -52
- data/gemfiles/no_doc_gems +0 -14
- data/lib/data/ca-certificates.crt +0 -3829
- data/lib/webpay/card.rb +0 -13
- data/lib/webpay/client.rb +0 -81
- data/lib/webpay/deleted_entity.rb +0 -8
- data/lib/webpay/entity.rb +0 -71
- data/lib/webpay/entity_list.rb +0 -25
- data/lib/webpay/fee.rb +0 -13
- data/lib/webpay/operations.rb +0 -49
- data/lib/webpay/response_converter.rb +0 -57
- data/lib/webpay/version.rb +0 -5
- data/lib/webpay/webpay_error.rb +0 -126
- data/spec/resources/account/delete.txt +0 -15
- data/spec/resources/account/retrieve.txt +0 -23
- data/spec/resources/charges/all.txt +0 -139
- data/spec/resources/charges/capture.txt +0 -49
- data/spec/resources/charges/create_with_card.txt +0 -49
- data/spec/resources/charges/create_with_customer.txt +0 -49
- data/spec/resources/charges/refund.txt +0 -57
- data/spec/resources/charges/retrieve.txt +0 -49
- data/spec/resources/charges/retrieve_not_captured.txt +0 -42
- data/spec/resources/customers/all.txt +0 -76
- data/spec/resources/customers/create.txt +0 -31
- data/spec/resources/customers/delete.txt +0 -16
- data/spec/resources/customers/retrieve.txt +0 -63
- data/spec/resources/customers/retrieve_deleted.txt +0 -16
- data/spec/resources/customers/update.txt +0 -31
- data/spec/resources/errors/bad_request.txt +0 -18
- data/spec/resources/errors/broken_json.txt +0 -16
- data/spec/resources/errors/card_error.txt +0 -19
- data/spec/resources/errors/not_found.txt +0 -18
- data/spec/resources/errors/not_found_ja.txt +0 -20
- data/spec/resources/errors/unauthorized.txt +0 -16
- data/spec/resources/errors/unknown_api_error.txt +0 -17
- data/spec/resources/events/all_with_type.txt +0 -164
- data/spec/resources/events/retrieve.txt +0 -41
- data/spec/resources/recursions/all.txt +0 -61
- data/spec/resources/recursions/create.txt +0 -26
- data/spec/resources/recursions/delete.txt +0 -16
- data/spec/resources/recursions/resume.txt +0 -26
- data/spec/resources/recursions/retrieve.txt +0 -26
- data/spec/resources/recursions/retrieve_deleted.txt +0 -16
- data/spec/resources/recursions/retrieve_suspended.txt +0 -26
- data/spec/resources/shops/all.txt +0 -122
- data/spec/resources/shops/create.txt +0 -54
- data/spec/resources/shops/retrieve.txt +0 -54
- data/spec/resources/shops/update.txt +0 -55
- data/spec/resources/tokens/create.txt +0 -30
- data/spec/resources/tokens/retrieve.txt +0 -30
- data/spec/spec_helper.rb +0 -37
- data/spec/webpay/account_spec.rb +0 -24
- data/spec/webpay/charge_spec.rb +0 -143
- data/spec/webpay/customer_spec.rb +0 -109
- data/spec/webpay/event_spec.rb +0 -30
- data/spec/webpay/recursion_spec.rb +0 -93
- data/spec/webpay/shop_spec.rb +0 -121
- data/spec/webpay/token_spec.rb +0 -33
- data/spec/webpay/webpay_error_spec.rb +0 -64
- data/spec/webpay_spec.rb +0 -40
data/lib/webpay/error.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
class WebPay
|
2
|
+
class ApiError < StandardError
|
3
|
+
end
|
4
|
+
|
5
|
+
class InvalidRequestError < ApiError
|
6
|
+
attr_reader :bad_value
|
7
|
+
|
8
|
+
def initialize(message, bad_value)
|
9
|
+
super(message)
|
10
|
+
@bad_value = bad_value
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class InvalidResponseError < ApiError
|
15
|
+
end
|
16
|
+
|
17
|
+
class ApiConnectionError < ApiError
|
18
|
+
attr_reader :cause
|
19
|
+
|
20
|
+
def self.in_request(cause)
|
21
|
+
self.new("API request failed with #{cause}", cause)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.invalid_json(cause)
|
25
|
+
self.new("Server responded invalid JSON string", cause)
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize(message, cause)
|
29
|
+
@cause = cause
|
30
|
+
super(message)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module ErrorResponse
|
35
|
+
class InvalidRequestError < WebPay::ApiError
|
36
|
+
attr_reader :status, :data
|
37
|
+
def initialize(status, raw_data)
|
38
|
+
@status = status
|
39
|
+
@data = WebPay::ErrorData.new(raw_data)
|
40
|
+
super(sprintf('%s: %s', 'InvalidRequestError', data.error.message))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
class AuthenticationError < WebPay::ApiError
|
44
|
+
attr_reader :status, :data
|
45
|
+
def initialize(status, raw_data)
|
46
|
+
@status = status
|
47
|
+
@data = WebPay::ErrorData.new(raw_data)
|
48
|
+
super(sprintf('%s: %s', 'AuthenticationError', data.error.message))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
class CardError < WebPay::ApiError
|
52
|
+
attr_reader :status, :data
|
53
|
+
def initialize(status, raw_data)
|
54
|
+
@status = status
|
55
|
+
@data = WebPay::ErrorData.new(raw_data)
|
56
|
+
super(sprintf('%s: %s', 'CardError', data.error.message))
|
57
|
+
end
|
58
|
+
end
|
59
|
+
class ApiError < WebPay::ApiError
|
60
|
+
attr_reader :status, :data
|
61
|
+
def initialize(status, raw_data)
|
62
|
+
@status = status
|
63
|
+
@data = WebPay::ErrorData.new(raw_data)
|
64
|
+
super(sprintf('%s: %s', 'ApiError', data.error.message))
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/webpay/event.rb
CHANGED
@@ -1,19 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
1
|
+
class WebPay::Event < WebPay::ApiResource
|
2
|
+
# Retrieve an event object by event id.
|
3
|
+
#
|
4
|
+
# @param params [EventIdRequest|Hash] Parameters to API call
|
5
|
+
# @return [EventResponse]
|
6
|
+
def retrieve(params = {})
|
7
|
+
req = WebPay::EventIdRequest.create(params)
|
8
|
+
raw_response = @client.request(:get, 'events/:id', req)
|
9
|
+
WebPay::EventResponse.new(raw_response)
|
10
|
+
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
# List events filtered by params
|
13
|
+
#
|
14
|
+
# @param params [ListRequestWithEventType|Hash] Parameters to API call
|
15
|
+
# @return [EventResponseList]
|
16
|
+
def all(params = {})
|
17
|
+
req = WebPay::ListRequestWithEventType.create(params)
|
18
|
+
raw_response = @client.request(:get, 'events', req)
|
19
|
+
WebPay::EventResponseList.new(raw_response)
|
18
20
|
end
|
21
|
+
|
19
22
|
end
|
data/lib/webpay/recursion.rb
CHANGED
@@ -1,52 +1,53 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
# @return [Entity] WebPay::Recursion or WebPay::DeletedEntity. <code>deleted?</code> is to classify.
|
14
|
-
def self.retrieve(id)
|
15
|
-
id = id.to_s
|
16
|
-
if id.strip == ''
|
17
|
-
raise InvalidRequestError.invalid_id(id)
|
18
|
-
end
|
19
|
-
response = WebPay.client.get([path, id].join('/'))
|
20
|
-
if response['deleted']
|
21
|
-
DeletedEntity.new(response)
|
22
|
-
else
|
23
|
-
convert(response)
|
24
|
-
end
|
25
|
-
end
|
1
|
+
class WebPay::Recursion < WebPay::ApiResource
|
2
|
+
# Create a recursion object with given parameters.
|
3
|
+
#
|
4
|
+
# @param params [RecursionRequestCreate|Hash] Parameters to API call
|
5
|
+
# @return [RecursionResponse]
|
6
|
+
def create(params = {})
|
7
|
+
req = WebPay::RecursionRequestCreate.create(params)
|
8
|
+
raw_response = @client.request(:post, 'recursions', req)
|
9
|
+
WebPay::RecursionResponse.new(raw_response)
|
10
|
+
end
|
26
11
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
12
|
+
# Retrieve a recursion object by recursion id.
|
13
|
+
# If the recursion is already deleted, "deleted" attribute becomes true.
|
14
|
+
#
|
15
|
+
# @param params [RecursionIdRequest|Hash] Parameters to API call
|
16
|
+
# @return [RecursionResponse]
|
17
|
+
def retrieve(params = {})
|
18
|
+
req = WebPay::RecursionIdRequest.create(params)
|
19
|
+
raw_response = @client.request(:get, 'recursions/:id', req)
|
20
|
+
WebPay::RecursionResponse.new(raw_response)
|
21
|
+
end
|
31
22
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
23
|
+
# Resume a suspended recursion
|
24
|
+
#
|
25
|
+
# @param params [RecursionRequestResume|Hash] Parameters to API call
|
26
|
+
# @return [RecursionResponse]
|
27
|
+
def resume(params = {})
|
28
|
+
req = WebPay::RecursionRequestResume.create(params)
|
29
|
+
raw_response = @client.request(:post, 'recursions/:id/resume', req)
|
30
|
+
WebPay::RecursionResponse.new(raw_response)
|
31
|
+
end
|
37
32
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
33
|
+
# Delete an existing recursion
|
34
|
+
#
|
35
|
+
# @param params [RecursionIdRequest|Hash] Parameters to API call
|
36
|
+
# @return [RecursionResponse]
|
37
|
+
def delete(params = {})
|
38
|
+
req = WebPay::RecursionIdRequest.create(params)
|
39
|
+
raw_response = @client.request(:delete, 'recursions/:id', req)
|
40
|
+
WebPay::RecursionResponse.new(raw_response)
|
41
|
+
end
|
45
42
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
43
|
+
# List recursions filtered by params
|
44
|
+
#
|
45
|
+
# @param params [ListRequestWithCustomerAndSuspended|Hash] Parameters to API call
|
46
|
+
# @return [RecursionResponseList]
|
47
|
+
def all(params = {})
|
48
|
+
req = WebPay::ListRequestWithCustomerAndSuspended.create(params)
|
49
|
+
raw_response = @client.request(:get, 'recursions', req)
|
50
|
+
WebPay::RecursionResponseList.new(raw_response)
|
51
51
|
end
|
52
|
+
|
52
53
|
end
|
data/lib/webpay/shop.rb
CHANGED
@@ -1,73 +1,42 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
# @return [String] Relative path to API root
|
12
|
-
# @api private
|
13
|
-
def self.path
|
14
|
-
'/shops'
|
15
|
-
end
|
16
|
-
|
17
|
-
# @api private
|
18
|
-
def initialize(attributes)
|
19
|
-
@read_attributes = {}
|
20
|
-
super(attributes)
|
21
|
-
end
|
22
|
-
|
23
|
-
# <code>object['key']=</code> is wrapper for <code>object.key =</code>.
|
24
|
-
# Method call style is recommended.
|
25
|
-
# @return [Object] Given value
|
26
|
-
def []=(key, value)
|
27
|
-
send("#{key}=", value)
|
28
|
-
end
|
29
|
-
|
30
|
-
# <code>object['key']</code> is wrapper for <code>object.key</code>.
|
31
|
-
# Method call style is recommended.
|
32
|
-
# @return [Object] The attribute's value
|
33
|
-
def [](key)
|
34
|
-
send(key)
|
35
|
-
end
|
36
|
-
|
37
|
-
[:description, :details].each do |attr|
|
38
|
-
define_method("#{attr}=") do |value|
|
39
|
-
@read_attributes[attr.to_s] = value
|
40
|
-
end
|
41
|
-
define_method("#{attr}") do
|
42
|
-
obj = @attributes[attr.to_s]
|
43
|
-
copyable = !(obj == nil || obj == true || obj == false || obj.is_a?(Symbol) || obj.is_a?(Integer))
|
44
|
-
@read_attributes[attr.to_s] ||= copyable ? obj.dup : obj
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Return a hash similar to the response from API.
|
49
|
-
# If an attribute's value is updated, the updated value is used.
|
50
|
-
# @return [Hash] a hash similar to the response from API
|
51
|
-
def to_hash
|
52
|
-
Hash[@attributes.merge(@read_attributes).map { |k, v| [k, v.is_a?(Entity) ? v.to_hash : v] }]
|
53
|
-
end
|
1
|
+
class WebPay::Shop < WebPay::ApiResource
|
2
|
+
# Create a shop object with given parameters.
|
3
|
+
#
|
4
|
+
# @param params [ShopRequestCreate|Hash] Parameters to API call
|
5
|
+
# @return [ShopResponse]
|
6
|
+
def create(params = {})
|
7
|
+
req = WebPay::ShopRequestCreate.create(params)
|
8
|
+
raw_response = @client.request(:post, 'shops', req)
|
9
|
+
WebPay::ShopResponse.new(raw_response)
|
10
|
+
end
|
54
11
|
|
55
|
-
|
12
|
+
# Retrieve a shop object by shop id.
|
13
|
+
#
|
14
|
+
# @param params [ShopIdRequest|Hash] Parameters to API call
|
15
|
+
# @return [ShopResponse]
|
16
|
+
def retrieve(params = {})
|
17
|
+
req = WebPay::ShopIdRequest.create(params)
|
18
|
+
raw_response = @client.request(:get, 'shops/:id', req)
|
19
|
+
WebPay::ShopResponse.new(raw_response)
|
20
|
+
end
|
56
21
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
22
|
+
# Update an existing shop with specified parameters
|
23
|
+
#
|
24
|
+
# @param params [ShopRequestUpdate|Hash] Parameters to API call
|
25
|
+
# @return [ShopResponse]
|
26
|
+
def update(params = {})
|
27
|
+
req = WebPay::ShopRequestUpdate.create(params)
|
28
|
+
raw_response = @client.request(:post, 'shops/:id', req)
|
29
|
+
WebPay::ShopResponse.new(raw_response)
|
30
|
+
end
|
66
31
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
32
|
+
# List shops filtered by params
|
33
|
+
#
|
34
|
+
# @param params [ListRequestWithLive|Hash] Parameters to API call
|
35
|
+
# @return [ShopResponseList]
|
36
|
+
def all(params = {})
|
37
|
+
req = WebPay::ListRequestWithLive.create(params)
|
38
|
+
raw_response = @client.request(:get, 'shops', req)
|
39
|
+
WebPay::ShopResponseList.new(raw_response)
|
72
40
|
end
|
41
|
+
|
73
42
|
end
|
data/lib/webpay/token.rb
CHANGED
@@ -1,13 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
1
|
+
class WebPay::Token < WebPay::ApiResource
|
2
|
+
# Create a token object with given parameters.
|
3
|
+
#
|
4
|
+
# @param params [TokenRequestCreate|Hash] Parameters to API call
|
5
|
+
# @return [TokenResponse]
|
6
|
+
def create(params = {})
|
7
|
+
req = WebPay::TokenRequestCreate.create(params)
|
8
|
+
raw_response = @client.request(:post, 'tokens', req)
|
9
|
+
WebPay::TokenResponse.new(raw_response)
|
10
|
+
end
|
6
11
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
+
# Retrieve a token object by token id.
|
13
|
+
#
|
14
|
+
# @param params [TokenIdRequest|Hash] Parameters to API call
|
15
|
+
# @return [TokenResponse]
|
16
|
+
def retrieve(params = {})
|
17
|
+
req = WebPay::TokenIdRequest.create(params)
|
18
|
+
raw_response = @client.request(:get, 'tokens/:id', req)
|
19
|
+
WebPay::TokenResponse.new(raw_response)
|
12
20
|
end
|
21
|
+
|
13
22
|
end
|
data/lib/webpay.rb
CHANGED
@@ -1,95 +1,132 @@
|
|
1
|
-
require '
|
1
|
+
require 'faraday'
|
2
|
+
begin
|
3
|
+
require 'mutli_json'
|
4
|
+
JSON_CLASS = MultiJson
|
5
|
+
rescue LoadError
|
6
|
+
require 'json'
|
7
|
+
JSON_CLASS = JSON
|
8
|
+
end
|
2
9
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
autoload(:CardError, 'webpay/webpay_error')
|
13
|
-
autoload(:InvalidRequestError, 'webpay/webpay_error')
|
14
|
-
autoload(:Entity, 'webpay/entity')
|
15
|
-
autoload(:EntityList, 'webpay/entity_list')
|
16
|
-
autoload(:DeletedEntity, 'webpay/deleted_entity')
|
17
|
-
autoload(:Account, 'webpay/account')
|
18
|
-
autoload(:Card, 'webpay/card')
|
19
|
-
autoload(:Charge, 'webpay/charge')
|
20
|
-
autoload(:Customer, 'webpay/customer')
|
21
|
-
autoload(:Event, 'webpay/event')
|
22
|
-
autoload(:Fee, 'webpay/fee')
|
23
|
-
autoload(:Token, 'webpay/token')
|
24
|
-
autoload(:Shop, 'webpay/shop')
|
25
|
-
autoload(:Recursion, 'webpay/recursion')
|
26
|
-
autoload(:ResponseConverter, 'webpay/response_converter')
|
10
|
+
class WebPay
|
11
|
+
attr_reader :conn
|
12
|
+
attr_accessor :charge
|
13
|
+
attr_accessor :customer
|
14
|
+
attr_accessor :token
|
15
|
+
attr_accessor :event
|
16
|
+
attr_accessor :shop
|
17
|
+
attr_accessor :recursion
|
18
|
+
attr_accessor :account
|
27
19
|
|
28
|
-
|
29
|
-
|
30
|
-
@
|
31
|
-
|
32
|
-
|
20
|
+
# Initialize client
|
21
|
+
#
|
22
|
+
# @param options [Hash] options
|
23
|
+
def initialize(options)
|
24
|
+
options = options.each_with_object({}) { |kv, obj| k,v = kv; obj[k.to_s] = v }
|
33
25
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
26
|
+
connection_options = options['faraday_options'] || {}
|
27
|
+
connection_options['headers'] = {
|
28
|
+
"Content-Type" => "application/json",
|
29
|
+
"Accept" => "application/json",
|
30
|
+
"User-Agent" => "Apipa-webpay/3.0.0 ruby",
|
31
|
+
"Accept-Language" => "en",
|
32
|
+
}
|
33
|
+
connection_options['url'] = options['api_base'] || 'https://api.webpay.jp/v1'
|
34
|
+
@conn = Faraday.new(connection_options) do |builder|
|
35
|
+
builder.request :url_encoded
|
36
|
+
builder.adapter Faraday.default_adapter
|
39
37
|
end
|
40
38
|
|
41
|
-
# Current client object.
|
42
|
-
# client is memoized, and nullified when @api_base or @api_key is modified.
|
43
|
-
def client
|
44
|
-
@client ||= Client.new(@api_key, @api_base, @api_version, @api_proxy, @language)
|
45
|
-
end
|
46
39
|
|
47
|
-
|
48
|
-
# Configure this before sending any request.
|
49
|
-
# Take care when using unofficial WebPay API.
|
50
|
-
def api_base=(new_value)
|
51
|
-
@api_base = new_value
|
52
|
-
@client = nil
|
53
|
-
end
|
40
|
+
@conn.authorization(:Bearer, options['api_key'])
|
54
41
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
42
|
+
@charge = WebPay::Charge.new(self)
|
43
|
+
@customer = WebPay::Customer.new(self)
|
44
|
+
@token = WebPay::Token.new(self)
|
45
|
+
@event = WebPay::Event.new(self)
|
46
|
+
@shop = WebPay::Shop.new(self)
|
47
|
+
@recursion = WebPay::Recursion.new(self)
|
48
|
+
@account = WebPay::Account.new(self)
|
49
|
+
end
|
61
50
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
@client = nil
|
66
|
-
end
|
51
|
+
def set_accept_language(value)
|
52
|
+
@conn.headers['Accept-Language'] = value
|
53
|
+
end
|
67
54
|
|
68
|
-
# Set value of accept-language request header
|
69
|
-
# Currently WebPay API handles :en and :ja
|
70
|
-
def language=(new_value)
|
71
|
-
@language = new_value
|
72
|
-
@client = nil
|
73
|
-
end
|
74
55
|
|
75
|
-
|
76
|
-
|
77
|
-
|
56
|
+
# Convert faraday response to a hash by decoding JSON.
|
57
|
+
# This raises error if the response indicates error status.
|
58
|
+
#
|
59
|
+
# @api private
|
60
|
+
# @param response [Faraday::Response]
|
61
|
+
# @return [Hash] Raw object
|
62
|
+
# @raise [WebPay::WebPayError] For invalid requests (4xx) or internal server error (5xx)
|
63
|
+
def handle_response(response)
|
64
|
+
data =
|
65
|
+
begin
|
66
|
+
JSON_CLASS.load(response.body.force_encoding(infer_encoding(response)))
|
67
|
+
rescue JSON_CLASS::ParserError => e
|
68
|
+
raise WebPay::ApiConnectionError.invalid_json(e)
|
69
|
+
end
|
70
|
+
status = response.status
|
71
|
+
case status
|
72
|
+
when 200..299
|
73
|
+
data
|
74
|
+
else
|
75
|
+
if status == 400
|
76
|
+
raise WebPay::ErrorResponse::InvalidRequestError.new(status, data)
|
77
|
+
end
|
78
|
+
if status == 401
|
79
|
+
raise WebPay::ErrorResponse::AuthenticationError.new(status, data)
|
80
|
+
end
|
81
|
+
if status == 402
|
82
|
+
raise WebPay::ErrorResponse::CardError.new(status, data)
|
83
|
+
end
|
84
|
+
if status == 404
|
85
|
+
raise WebPay::ErrorResponse::InvalidRequestError.new(status, data)
|
86
|
+
end
|
87
|
+
if true
|
88
|
+
raise WebPay::ErrorResponse::ApiError.new(status, data)
|
89
|
+
end
|
90
|
+
raise "Unknown error is returned"
|
78
91
|
end
|
92
|
+
end
|
79
93
|
|
80
|
-
|
81
|
-
|
82
|
-
|
94
|
+
def request(method, url_pattern ,params)
|
95
|
+
url = url_pattern.gsub(/:([[:alnum:]]+)/) { |name| params.__send__(name[1..-1]) }
|
96
|
+
begin
|
97
|
+
response = @conn.__send__(method, url, [:get, :delete].include?(method) ? params.to_h : JSON.dump(params.to_h))
|
98
|
+
rescue Faraday::Error::ClientError, URI::InvalidURIError => e
|
99
|
+
raise WebPay::ApiConnectionError.in_request(e)
|
83
100
|
end
|
101
|
+
handle_response(response)
|
102
|
+
end
|
84
103
|
|
85
|
-
|
86
|
-
def api_proxy
|
87
|
-
@api_proxy
|
88
|
-
end
|
104
|
+
private
|
89
105
|
|
90
|
-
|
91
|
-
|
92
|
-
|
106
|
+
# Infer encoding from response
|
107
|
+
#
|
108
|
+
# @param response [Faraday::Response]
|
109
|
+
# @return [Encoding]
|
110
|
+
def infer_encoding(response)
|
111
|
+
unless (type = response.headers['content-type']) &&
|
112
|
+
(charset = type.split(';').find { |field| field.include?('charset=') })
|
113
|
+
return Encoding.default_external
|
93
114
|
end
|
115
|
+
|
116
|
+
encoding_string = charset.split('=', 2).last.strip
|
117
|
+
Encoding.find(encoding_string)
|
118
|
+
rescue
|
119
|
+
Encoding.default_external
|
94
120
|
end
|
95
121
|
end
|
122
|
+
|
123
|
+
require 'webpay/api_resource'
|
124
|
+
require 'webpay/error'
|
125
|
+
require 'webpay/charge'
|
126
|
+
require 'webpay/customer'
|
127
|
+
require 'webpay/token'
|
128
|
+
require 'webpay/event'
|
129
|
+
require 'webpay/shop'
|
130
|
+
require 'webpay/recursion'
|
131
|
+
require 'webpay/account'
|
132
|
+
require 'webpay/data_types'
|
data/webpay.gemspec
CHANGED
@@ -1,29 +1,22 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'webpay/version'
|
5
2
|
|
6
3
|
Gem::Specification.new do |spec|
|
7
4
|
spec.name = 'webpay'
|
8
|
-
spec.version =
|
5
|
+
spec.version = '3.0.0'
|
9
6
|
spec.authors = ['webpay', 'tomykaira']
|
10
7
|
spec.email = ['administrators@webpay.jp', 'tomykaira@webpay.jp']
|
11
8
|
spec.description = 'WebPay is payment gateway service in Japan. see also https://webpay.jp/'
|
12
|
-
spec.summary = '
|
9
|
+
spec.summary = 'Bindings of WebPay API'
|
13
10
|
spec.homepage = 'https://webpay.jp'
|
14
11
|
spec.license = 'MIT'
|
15
12
|
|
16
|
-
spec.files =
|
13
|
+
spec.files = File.read(File.expand_path(File.join(__FILE__, "..", "FILELIST"))).split("\n")
|
17
14
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
15
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
16
|
spec.require_paths = ['lib']
|
20
17
|
|
21
|
-
spec.add_dependency 'faraday', '~> 0.
|
18
|
+
spec.add_dependency 'faraday', '~> 0.9'
|
22
19
|
|
23
|
-
spec.add_development_dependency 'bundler'
|
24
|
-
spec.add_development_dependency 'rake'
|
25
|
-
spec.add_development_dependency 'yard', '~> 0.8.6.2'
|
26
|
-
spec.add_development_dependency 'redcarpet', '~> 3.0.0'
|
27
|
-
spec.add_development_dependency 'rspec', '~> 2.14.0'
|
28
|
-
spec.add_development_dependency 'webmock', '~> 1.13.0'
|
20
|
+
spec.add_development_dependency 'bundler'
|
21
|
+
spec.add_development_dependency 'rake', '~> 10.3.1'
|
29
22
|
end
|