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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 87d8f18ea9c3ebbec42dd9ba16a04affffc7359c
4
- data.tar.gz: cf40c50dc29ba456df180e226de6d0590ecf984e
3
+ metadata.gz: f2ca7bfa04c0ed68afb5b9d18d21fc794512a981
4
+ data.tar.gz: 83ca5f17ae63b12de47a2be3a1588bed74235b49
5
5
  SHA512:
6
- metadata.gz: 4288b0e1971a4f31ae6e016bdb9892ad31f3a8bc28124ae2d8a6b575563b9113e59d12246e6a5cf81d00650064791c0392472a3be8e1e9be003c60fa611425b6
7
- data.tar.gz: 863e697452bf067c38e7af2f8a8a9d986612f9541281abe193afa4c01412f1cf2976d8e357d325dca2d9857ce88f370350a67fe923e8faa65a72cf669939c3de
6
+ metadata.gz: 5a0f1c55019eba364a5f2c1b3d855e2d85704e9a668781268854cb8291cc3555cfad2612c82a34900e31b28f09834afbab85ae1e79aed6bf6c4b0c2c67d62e57
7
+ data.tar.gz: fe64c67d719db5755d6876915c9b66f6a2ce75c16b80fd3002c82e7611d992fd2dfd274f580c0eb268648cd3b3b2f09d443ceb028e0760afa15c60b159eef244
data/.gitignore CHANGED
@@ -3,8 +3,6 @@
3
3
  .bundle
4
4
  .config
5
5
  Gemfile.lock
6
- gemfiles/*.lock
7
- lib/bundler/man
8
6
  pkg
9
7
  rdoc
10
8
  spec/reports
data/Rakefile CHANGED
@@ -1,7 +1 @@
1
1
  require "bundler/gem_tasks"
2
-
3
- require 'rspec/core/rake_task'
4
-
5
- RSpec::Core::RakeTask.new(:spec)
6
-
7
- task :default => :spec
@@ -1,27 +1,22 @@
1
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = account</code>
4
- class Account < Entity
5
- class << self
6
-
7
- # Get the account of api_key's owner
8
- # @return [Account] the account of api_key's owner
9
- def retrieve
10
- convert(WebPay.client.get(path))
11
- end
12
-
13
- # Clear all test data of api_key's owner
14
- # @return [Boolean] true if the request succeeded
15
- def delete_data
16
- response = WebPay.client.delete([path, 'data'].join('/'))
17
- response['deleted']
18
- end
1
+ class WebPay::Account < WebPay::ApiResource
2
+ # Retrieve information of the current user
3
+ #
4
+ # @param params [EmptyRequest|Hash] Parameters to API call
5
+ # @return [AccountResponse]
6
+ def retrieve(params = {})
7
+ req = WebPay::EmptyRequest.create(params)
8
+ raw_response = @client.request(:get, 'account', req)
9
+ WebPay::AccountResponse.new(raw_response)
10
+ end
19
11
 
20
- # @api private
21
- # @return [String] Relative path to API root: <code>'/account'</code>
22
- def path
23
- '/account'
24
- end
25
- end
12
+ # Delete all test data of this account
13
+ #
14
+ # @param params [EmptyRequest|Hash] Parameters to API call
15
+ # @return [DeletedResponse]
16
+ def delete_data(params = {})
17
+ req = WebPay::EmptyRequest.create(params)
18
+ raw_response = @client.request(:delete, 'account/data', req)
19
+ WebPay::DeletedResponse.new(raw_response)
26
20
  end
21
+
27
22
  end
@@ -0,0 +1,5 @@
1
+ class WebPay::ApiResource
2
+ def initialize(client)
3
+ @client = client
4
+ end
5
+ end
data/lib/webpay/charge.rb CHANGED
@@ -1,33 +1,54 @@
1
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = charge</code>
4
- class Charge < Entity
5
- install_class_operations :create, :retrieve, :all
1
+ class WebPay::Charge < WebPay::ApiResource
2
+ # Create a charge object with given parameters.
3
+ # In live mode, this issues a transaction.
4
+ #
5
+ # @param params [ChargeRequestCreate|Hash] Parameters to API call
6
+ # @return [ChargeResponse]
7
+ def create(params = {})
8
+ req = WebPay::ChargeRequestCreate.create(params)
9
+ raw_response = @client.request(:post, 'charges', req)
10
+ WebPay::ChargeResponse.new(raw_response)
11
+ end
6
12
 
7
- # @return [String] Relative path to API root
8
- # @api private
9
- def self.path
10
- '/charges'
11
- end
13
+ # Retrieve a existing charge object by charge id
14
+ #
15
+ # @param params [ChargeIdRequest|Hash] Parameters to API call
16
+ # @return [ChargeResponse]
17
+ def retrieve(params = {})
18
+ req = WebPay::ChargeIdRequest.create(params)
19
+ raw_response = @client.request(:get, 'charges/:id', req)
20
+ WebPay::ChargeResponse.new(raw_response)
21
+ end
12
22
 
13
- # Refund this charge
14
- # @param [Hash] params request parameters
15
- # @option params [Integer] :amount The amount to refund. Default is all amount.
16
- def refund(params = {})
17
- update_attributes(WebPay.client.post([path, 'refund'].join('/'), params))
18
- end
23
+ # Refund a paid charge specified by charge id.
24
+ # Optional argument amount is to refund partially.
25
+ #
26
+ # @param params [ChargeRequestWithAmount|Hash] Parameters to API call
27
+ # @return [ChargeResponse]
28
+ def refund(params = {})
29
+ req = WebPay::ChargeRequestWithAmount.create(params)
30
+ raw_response = @client.request(:post, 'charges/:id/refund', req)
31
+ WebPay::ChargeResponse.new(raw_response)
32
+ end
19
33
 
20
- # Capture a not captured charge
21
- # @param [Hash] params request parameters
22
- # @option params [Integer] :amount The amount to capture. Default is all amount.
23
- def capture(params = {})
24
- update_attributes(WebPay.client.post([path, 'capture'].join('/'), params))
25
- end
34
+ # Capture a not captured charge specified by charge id
35
+ #
36
+ # @param params [ChargeRequestWithAmount|Hash] Parameters to API call
37
+ # @return [ChargeResponse]
38
+ def capture(params = {})
39
+ req = WebPay::ChargeRequestWithAmount.create(params)
40
+ raw_response = @client.request(:post, 'charges/:id/capture', req)
41
+ WebPay::ChargeResponse.new(raw_response)
42
+ end
26
43
 
27
- # @return [String] Relative path of instance to API root
28
- # @api private
29
- def path
30
- "/charges/#{id}"
31
- end
44
+ # List charges filtered by params
45
+ #
46
+ # @param params [ListRequestWithCustomer|Hash] Parameters to API call
47
+ # @return [ChargeResponseList]
48
+ def all(params = {})
49
+ req = WebPay::ListRequestWithCustomer.create(params)
50
+ raw_response = @client.request(:get, 'charges', req)
51
+ WebPay::ChargeResponseList.new(raw_response)
32
52
  end
53
+
33
54
  end
@@ -1,98 +1,63 @@
1
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = customer</code>
4
- class Customer < Entity
5
- install_class_operations :create, :all
6
-
7
- # Attributes updated by assignment.
8
- # These attributes are sent on save.
9
- # Only description, card, and email are effective.
10
- attr_accessor :updated_attributes
11
-
12
- # @return [String] Relative path to API root
13
- # @api private
14
- def self.path
15
- '/customers'
16
- end
17
-
18
- # @return [Entity] WebPay::Customer or WebPay::DeletedEntity. <code>deleted?</code> is to classify.
19
- def self.retrieve(id)
20
- id = id.to_s
21
- if id.strip == ''
22
- raise InvalidRequestError.invalid_id(id)
23
- end
24
- response = WebPay.client.get([path, id].join('/'))
25
- if response['deleted']
26
- DeletedEntity.new(response)
27
- else
28
- convert(response)
29
- end
30
- end
31
-
32
- # @api private
33
- def initialize(attributes)
34
- @updated_attributes = {}
35
- super(attributes)
36
- end
37
-
38
- # @return [Boolean] false
39
- def deleted?
40
- false
41
- end
42
-
43
- # <code>object['key']=</code> is wrapper for <code>object.key =</code>.
44
- # Method call style is recommended.
45
- # @return [Object] Given value
46
- def []=(key, value)
47
- send("#{key}=", value)
48
- end
49
-
50
- # <code>object['key']</code> is wrapper for <code>object.key</code>.
51
- # Method call style is recommended.
52
- # @return [Object] The attribute's value
53
- def [](key)
54
- send(key)
55
- end
56
-
57
- [:description, :card, :email].each do |attr|
58
- define_method("#{attr}=") do |value|
59
- @updated_attributes[attr.to_s] = value
60
- end
61
- define_method("#{attr}") do
62
- @updated_attributes[attr.to_s] || @attributes[attr.to_s]
63
- end
64
- end
1
+ class WebPay::Customer < WebPay::ApiResource
2
+ # Create a customer object with given parameters.
3
+ #
4
+ # @param params [CustomerRequestCreate|Hash] Parameters to API call
5
+ # @return [CustomerResponse]
6
+ def create(params = {})
7
+ req = WebPay::CustomerRequestCreate.create(params)
8
+ raw_response = @client.request(:post, 'customers', req)
9
+ WebPay::CustomerResponse.new(raw_response)
10
+ end
65
11
 
66
- # Return a hash similar to the response from API.
67
- # If an attribute's value is updated, the updated value is used.
68
- # @return [Hash] a hash similar to the response from API
69
- def to_hash
70
- Hash[@attributes.merge(@updated_attributes).map { |k, v| [k, v.is_a?(Entity) ? v.to_hash : v] }]
71
- end
12
+ # Retrieve a customer object by customer id.
13
+ # If the customer is already deleted, "deleted" attribute becomes true.
14
+ #
15
+ # @param params [CustomerIdRequest|Hash] Parameters to API call
16
+ # @return [CustomerResponse]
17
+ def retrieve(params = {})
18
+ req = WebPay::CustomerIdRequest.create(params)
19
+ raw_response = @client.request(:get, 'customers/:id', req)
20
+ WebPay::CustomerResponse.new(raw_response)
21
+ end
72
22
 
73
- alias_method :to_h, :to_hash
23
+ # Update an existing customer with specified parameters
24
+ #
25
+ # @param params [CustomerRequestUpdate|Hash] Parameters to API call
26
+ # @return [CustomerResponse]
27
+ def update(params = {})
28
+ req = WebPay::CustomerRequestUpdate.create(params)
29
+ raw_response = @client.request(:post, 'customers/:id', req)
30
+ WebPay::CustomerResponse.new(raw_response)
31
+ end
74
32
 
75
- # Send update request of modified attributes.
76
- # description, card, and email are modifiable.
77
- # @return [Customer] this object with attributes updated
78
- def save
79
- update_attributes(WebPay.client.post(path, @updated_attributes))
80
- @updated_attributes = {}
81
- self
82
- end
33
+ # Delete an existing customer
34
+ #
35
+ # @param params [CustomerIdRequest|Hash] Parameters to API call
36
+ # @return [CustomerResponse]
37
+ def delete(params = {})
38
+ req = WebPay::CustomerIdRequest.create(params)
39
+ raw_response = @client.request(:delete, 'customers/:id', req)
40
+ WebPay::CustomerResponse.new(raw_response)
41
+ end
83
42
 
84
- # Delete this customer.
85
- # This operation cannot be undone.
86
- # @return [Boolean] true if operation succeeded
87
- def delete
88
- response = WebPay.client.delete(path)
89
- response['deleted']
90
- end
43
+ # List customers filtered by params
44
+ #
45
+ # @param params [ListRequest|Hash] Parameters to API call
46
+ # @return [CustomerResponseList]
47
+ def all(params = {})
48
+ req = WebPay::ListRequest.create(params)
49
+ raw_response = @client.request(:get, 'customers', req)
50
+ WebPay::CustomerResponseList.new(raw_response)
51
+ end
91
52
 
92
- # @return [String] Relative path of instance to API root
93
- # @api private
94
- def path
95
- "/customers/#{id}"
96
- end
53
+ # Delete a card data of a customer
54
+ #
55
+ # @param params [CustomerIdRequest|Hash] Parameters to API call
56
+ # @return [CustomerResponse]
57
+ def delete_active_card(params = {})
58
+ req = WebPay::CustomerIdRequest.create(params)
59
+ raw_response = @client.request(:delete, 'customers/:id/active_card', req)
60
+ WebPay::CustomerResponse.new(raw_response)
97
61
  end
62
+
98
63
  end