webpay 2.4.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -2
  3. data/Rakefile +0 -6
  4. data/lib/webpay/account.rb +19 -24
  5. data/lib/webpay/api_resource.rb +5 -0
  6. data/lib/webpay/charge.rb +48 -27
  7. data/lib/webpay/customer.rb +56 -91
  8. data/lib/webpay/data_types.rb +2069 -0
  9. data/lib/webpay/error.rb +68 -0
  10. data/lib/webpay/event.rb +19 -16
  11. data/lib/webpay/recursion.rb +47 -46
  12. data/lib/webpay/shop.rb +37 -68
  13. data/lib/webpay/token.rb +19 -10
  14. data/lib/webpay.rb +114 -77
  15. data/webpay.gemspec +6 -13
  16. metadata +16 -179
  17. data/.rspec +0 -2
  18. data/.travis.yml +0 -12
  19. data/LICENSE.txt +0 -22
  20. data/README.md +0 -52
  21. data/gemfiles/no_doc_gems +0 -14
  22. data/lib/data/ca-certificates.crt +0 -3829
  23. data/lib/webpay/card.rb +0 -13
  24. data/lib/webpay/client.rb +0 -81
  25. data/lib/webpay/deleted_entity.rb +0 -8
  26. data/lib/webpay/entity.rb +0 -71
  27. data/lib/webpay/entity_list.rb +0 -25
  28. data/lib/webpay/fee.rb +0 -13
  29. data/lib/webpay/operations.rb +0 -49
  30. data/lib/webpay/response_converter.rb +0 -57
  31. data/lib/webpay/version.rb +0 -5
  32. data/lib/webpay/webpay_error.rb +0 -126
  33. data/spec/resources/account/delete.txt +0 -15
  34. data/spec/resources/account/retrieve.txt +0 -23
  35. data/spec/resources/charges/all.txt +0 -139
  36. data/spec/resources/charges/capture.txt +0 -49
  37. data/spec/resources/charges/create_with_card.txt +0 -49
  38. data/spec/resources/charges/create_with_customer.txt +0 -49
  39. data/spec/resources/charges/refund.txt +0 -57
  40. data/spec/resources/charges/retrieve.txt +0 -49
  41. data/spec/resources/charges/retrieve_not_captured.txt +0 -42
  42. data/spec/resources/customers/all.txt +0 -76
  43. data/spec/resources/customers/create.txt +0 -31
  44. data/spec/resources/customers/delete.txt +0 -16
  45. data/spec/resources/customers/retrieve.txt +0 -63
  46. data/spec/resources/customers/retrieve_deleted.txt +0 -16
  47. data/spec/resources/customers/update.txt +0 -31
  48. data/spec/resources/errors/bad_request.txt +0 -18
  49. data/spec/resources/errors/broken_json.txt +0 -16
  50. data/spec/resources/errors/card_error.txt +0 -19
  51. data/spec/resources/errors/not_found.txt +0 -18
  52. data/spec/resources/errors/not_found_ja.txt +0 -20
  53. data/spec/resources/errors/unauthorized.txt +0 -16
  54. data/spec/resources/errors/unknown_api_error.txt +0 -17
  55. data/spec/resources/events/all_with_type.txt +0 -164
  56. data/spec/resources/events/retrieve.txt +0 -41
  57. data/spec/resources/recursions/all.txt +0 -61
  58. data/spec/resources/recursions/create.txt +0 -26
  59. data/spec/resources/recursions/delete.txt +0 -16
  60. data/spec/resources/recursions/resume.txt +0 -26
  61. data/spec/resources/recursions/retrieve.txt +0 -26
  62. data/spec/resources/recursions/retrieve_deleted.txt +0 -16
  63. data/spec/resources/recursions/retrieve_suspended.txt +0 -26
  64. data/spec/resources/shops/all.txt +0 -122
  65. data/spec/resources/shops/create.txt +0 -54
  66. data/spec/resources/shops/retrieve.txt +0 -54
  67. data/spec/resources/shops/update.txt +0 -55
  68. data/spec/resources/tokens/create.txt +0 -30
  69. data/spec/resources/tokens/retrieve.txt +0 -30
  70. data/spec/spec_helper.rb +0 -37
  71. data/spec/webpay/account_spec.rb +0 -24
  72. data/spec/webpay/charge_spec.rb +0 -143
  73. data/spec/webpay/customer_spec.rb +0 -109
  74. data/spec/webpay/event_spec.rb +0 -30
  75. data/spec/webpay/recursion_spec.rb +0 -93
  76. data/spec/webpay/shop_spec.rb +0 -121
  77. data/spec/webpay/token_spec.rb +0 -33
  78. data/spec/webpay/webpay_error_spec.rb +0 -64
  79. data/spec/webpay_spec.rb +0 -40
@@ -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
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = event</code>
4
- class Event < Entity
5
- install_class_operations :retrieve, :all
6
-
7
- # @return [String] Relative path to API root
8
- # @api private
9
- def self.path
10
- '/events'
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
- # Entity object for <code>event.data</code>
14
- # This entity has <code>object</code> on which event occurred,
15
- # and <code>previous_attributes</code> if some of attributes are modified on the event.
16
- class Data < Entity
17
- end
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
@@ -1,52 +1,53 @@
1
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = recursion</code>
4
- class Recursion < Entity
5
- install_class_operations :create, :all
6
-
7
- # @return [String] Relative path to API root
8
- # @api private
9
- def self.path
10
- '/recursions'
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
- # @return [Boolean] false
28
- def deleted?
29
- false
30
- end
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
- # Send resume request.
33
- # @return [Recursion] this object, resumed
34
- def resume(params = {})
35
- update_attributes(WebPay.client.post([path, 'resume'].join('/'), params))
36
- end
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
- # Delete this recursion.
39
- # This operation cannot be undone.
40
- # @return [Boolean] true if operation succeeded
41
- def delete
42
- response = WebPay.client.delete(path)
43
- response['deleted']
44
- end
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
- # @return [String] Relative path of instance to API root
47
- # @api private
48
- def path
49
- "/recursions/#{id}"
50
- end
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
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = shop</code>
4
- class Shop < Entity
5
- install_class_operations :create, :retrieve, :all
6
-
7
- # Attributes which can be updated and read by access.
8
- # These attributes are sent on save if changed.
9
- attr_accessor :read_attributes
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
- alias_method :to_h, :to_hash
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
- # Send update request of modified attributes.
58
- # description and details are modifiable.
59
- # @return [Shop] this object with attributes updated
60
- def save
61
- changed_attributes = @read_attributes.select { |k,v| @attributes[k] != v }
62
- update_attributes(WebPay.client.post(path, changed_attributes))
63
- @read_attributes = {}
64
- self
65
- end
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
- # @return [String] Relative path of instance to API root
68
- # @api private
69
- def path
70
- "/shops/#{id}"
71
- end
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
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = token</code>
4
- class Token < Entity
5
- install_class_operations :create, :retrieve
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
- # @return [String] Relative path to API root
8
- # @api private
9
- def self.path
10
- '/tokens'
11
- end
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 'webpay/version'
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
- # Toplevel module of WebPay gem.
4
- # This is the start point.
5
- module WebPay
6
- autoload(:Client, 'webpay/client')
7
- autoload(:Operations, 'webpay/operations')
8
- autoload(:WebPayError, 'webpay/webpay_error')
9
- autoload(:APIConnectionError, 'webpay/webpay_error')
10
- autoload(:APIError, 'webpay/webpay_error')
11
- autoload(:AuthenticationError, 'webpay/webpay_error')
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
- @api_base = 'https://api.webpay.jp'
29
- @api_version = '/v1'
30
- @api_key = nil
31
- @api_proxy = nil
32
- @language = :en
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
- class << self
35
- # Absolute path to SSL CA file.
36
- # This gem includes SSL CA file as lib/data/ca-certificates.crt.
37
- def ssl_ca_file
38
- File.join(File.dirname(File.expand_path(__FILE__)), 'data', 'ca-certificates.crt')
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
- # Set api_base, the base URL of API.
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
- # Set api_key, your token for accessing API.
56
- # Configure this before sending any request.
57
- def api_key=(new_value)
58
- @api_key = new_value
59
- @client = nil
60
- end
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
- # Set proxy for connecting to @api_base
63
- def api_proxy=(new_value)
64
- @api_proxy = new_value
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
- # Get current api_base
76
- def api_base
77
- @api_base
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
- # Get current api_key
81
- def api_key
82
- @api_key
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
- # Get current api_proxy
86
- def api_proxy
87
- @api_proxy
88
- end
104
+ private
89
105
 
90
- # Get current language
91
- def language
92
- @language
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 = WebPay::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 = 'Ruby bindings of WebPay API'
9
+ spec.summary = 'Bindings of WebPay API'
13
10
  spec.homepage = 'https://webpay.jp'
14
11
  spec.license = 'MIT'
15
12
 
16
- spec.files = `git ls-files`.split($/)
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.8'
18
+ spec.add_dependency 'faraday', '~> 0.9'
22
19
 
23
- spec.add_development_dependency 'bundler', '~> 1.3'
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