webpay 2.4.1 → 3.0.0
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 +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
|