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.
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