paypal-sdk-rest 1.7.3 → 2.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +5 -14
  3. data/README.md +48 -243
  4. data/lib/lib.rb +95 -0
  5. data/lib/paypal-sdk-rest.rb +1 -2
  6. data/lib/paypal/core/access_token.rb +20 -0
  7. data/lib/paypal/core/paypal_environment.rb +38 -0
  8. data/lib/paypal/core/paypal_http_client.rb +52 -0
  9. data/lib/paypal/core/token_requests.rb +40 -0
  10. data/lib/paypal/core/version.rb +3 -0
  11. data/lib/v1/billing_agreements/agreement_bill_balance_request.rb +35 -0
  12. data/lib/v1/billing_agreements/agreement_cancel_request.rb +35 -0
  13. data/lib/v1/billing_agreements/agreement_create_request.rb +33 -0
  14. data/lib/v1/billing_agreements/agreement_execute_request.rb +31 -0
  15. data/lib/v1/billing_agreements/agreement_get_request.rb +31 -0
  16. data/lib/v1/billing_agreements/agreement_re_activate_request.rb +35 -0
  17. data/lib/v1/billing_agreements/agreement_set_balance_request.rb +35 -0
  18. data/lib/v1/billing_agreements/agreement_suspend_request.rb +35 -0
  19. data/lib/v1/billing_agreements/agreement_transactions_request.rb +41 -0
  20. data/lib/v1/billing_agreements/agreement_update_request.rb +35 -0
  21. data/lib/v1/billing_plans/plan_create_request.rb +33 -0
  22. data/lib/v1/billing_plans/plan_get_request.rb +31 -0
  23. data/lib/v1/billing_plans/plan_list_request.rb +49 -0
  24. data/lib/v1/billing_plans/plan_update_request.rb +35 -0
  25. data/lib/v1/customer_disputes/dispute_accept_claim_request.rb +35 -0
  26. data/lib/v1/customer_disputes/dispute_adjudicate_request.rb +35 -0
  27. data/lib/v1/customer_disputes/dispute_appeal_request.rb +35 -0
  28. data/lib/v1/customer_disputes/dispute_get_request.rb +31 -0
  29. data/lib/v1/customer_disputes/dispute_list_request.rb +59 -0
  30. data/lib/v1/customer_disputes/dispute_provide_evidence_request.rb +35 -0
  31. data/lib/v1/customer_disputes/dispute_require_evidence_request.rb +35 -0
  32. data/lib/v1/identity/user_consent.rb +45 -0
  33. data/lib/v1/identity/userinfo_get_request.rb +33 -0
  34. data/lib/v1/invoices/invoice_cancel_request.rb +35 -0
  35. data/lib/v1/invoices/invoice_create_request.rb +33 -0
  36. data/lib/v1/invoices/invoice_delete_external_payment_request.rb +33 -0
  37. data/lib/v1/invoices/invoice_delete_external_refund_request.rb +33 -0
  38. data/lib/v1/invoices/invoice_delete_request.rb +31 -0
  39. data/lib/v1/invoices/invoice_get_request.rb +31 -0
  40. data/lib/v1/invoices/invoice_list_request.rb +44 -0
  41. data/lib/v1/invoices/invoice_next_invoice_number_request.rb +29 -0
  42. data/lib/v1/invoices/invoice_qr_code_request.rb +46 -0
  43. data/lib/v1/invoices/invoice_record_payment_request.rb +35 -0
  44. data/lib/v1/invoices/invoice_record_refund_request.rb +35 -0
  45. data/lib/v1/invoices/invoice_remind_request.rb +35 -0
  46. data/lib/v1/invoices/invoice_search_request.rb +33 -0
  47. data/lib/v1/invoices/invoice_send_request.rb +36 -0
  48. data/lib/v1/invoices/invoice_update_request.rb +40 -0
  49. data/lib/v1/invoices/template_create_request.rb +33 -0
  50. data/lib/v1/invoices/template_delete_request.rb +31 -0
  51. data/lib/v1/invoices/template_get_request.rb +31 -0
  52. data/lib/v1/invoices/template_list_request.rb +34 -0
  53. data/lib/v1/invoices/template_update_request.rb +35 -0
  54. data/lib/v1/orders/orders_cancel_request.rb +31 -0
  55. data/lib/v1/orders/orders_create_request.rb +33 -0
  56. data/lib/v1/orders/orders_get_request.rb +31 -0
  57. data/lib/v1/orders/orders_pay_request.rb +35 -0
  58. data/lib/v1/payment_experience/web_profile_create_request.rb +33 -0
  59. data/lib/v1/payment_experience/web_profile_delete_request.rb +31 -0
  60. data/lib/v1/payment_experience/web_profile_get_request.rb +31 -0
  61. data/lib/v1/payment_experience/web_profile_list_request.rb +29 -0
  62. data/lib/v1/payment_experience/web_profile_partial_update_request.rb +35 -0
  63. data/lib/v1/payment_experience/web_profile_update_request.rb +35 -0
  64. data/lib/v1/payments/authorization_capture_request.rb +35 -0
  65. data/lib/v1/payments/authorization_get_request.rb +31 -0
  66. data/lib/v1/payments/authorization_reauthorize_request.rb +35 -0
  67. data/lib/v1/payments/authorization_void_request.rb +35 -0
  68. data/lib/v1/payments/capture_get_request.rb +31 -0
  69. data/lib/v1/payments/capture_refund_request.rb +39 -0
  70. data/lib/v1/payments/order_authorize_request.rb +35 -0
  71. data/lib/v1/payments/order_capture_request.rb +35 -0
  72. data/lib/v1/payments/order_get_request.rb +31 -0
  73. data/lib/v1/payments/order_void_request.rb +35 -0
  74. data/lib/v1/payments/payment_create_request.rb +37 -0
  75. data/lib/v1/payments/payment_execute_request.rb +43 -0
  76. data/lib/v1/payments/payment_get_request.rb +31 -0
  77. data/lib/v1/payments/payment_list_request.rb +69 -0
  78. data/lib/v1/payments/payment_update_request.rb +35 -0
  79. data/lib/v1/payments/refund_get_request.rb +31 -0
  80. data/lib/v1/payments/sale_get_request.rb +31 -0
  81. data/lib/v1/payments/sale_refund_request.rb +39 -0
  82. data/lib/v1/sync/search_get_request.rb +99 -0
  83. data/lib/v1/vault/credit_card_create_request.rb +33 -0
  84. data/lib/v1/vault/credit_card_delete_request.rb +31 -0
  85. data/lib/v1/vault/credit_card_get_request.rb +31 -0
  86. data/lib/v1/vault/credit_card_list_request.rb +79 -0
  87. data/lib/v1/vault/credit_card_update_request.rb +35 -0
  88. data/lib/v1/webhooks/available_event_type_list_request.rb +29 -0
  89. data/lib/v1/webhooks/event_get_request.rb +31 -0
  90. data/lib/v1/webhooks/event_list_request.rb +54 -0
  91. data/lib/v1/webhooks/event_resend_request.rb +35 -0
  92. data/lib/v1/webhooks/simulate_event_request.rb +33 -0
  93. data/lib/v1/webhooks/webhook_create_request.rb +33 -0
  94. data/lib/v1/webhooks/webhook_delete_request.rb +31 -0
  95. data/lib/v1/webhooks/webhook_get_request.rb +31 -0
  96. data/lib/v1/webhooks/webhook_list_event_subscriptions_request.rb +31 -0
  97. data/lib/v1/webhooks/webhook_list_request.rb +34 -0
  98. data/lib/v1/webhooks/webhook_update_request.rb +35 -0
  99. data/lib/v1/webhooks/webhook_verify_signature_request.rb +33 -0
  100. data/spec/integration/test_harness.rb +25 -0
  101. data/spec/integration/v1/billing_agreements/agreement_create_spec.rb +69 -0
  102. data/spec/integration/v1/billing_plans/plan_create_spec.rb +12 -0
  103. data/spec/integration/v1/billing_plans/plan_get_spec.rb +16 -0
  104. data/spec/integration/v1/billing_plans/plan_helper.rb +71 -0
  105. data/spec/integration/v1/billing_plans/plan_list_spec.rb +16 -0
  106. data/spec/integration/v1/billing_plans/plan_update_spec.rb +19 -0
  107. data/spec/integration/v1/customer_disputes/dispute_accept_claim_spec.rb +26 -0
  108. data/spec/integration/v1/customer_disputes/dispute_adjudicate_spec.rb +24 -0
  109. data/spec/integration/v1/customer_disputes/dispute_appeal_spec.rb +33 -0
  110. data/spec/integration/v1/customer_disputes/dispute_get_spec.rb +19 -0
  111. data/spec/integration/v1/customer_disputes/dispute_list_spec.rb +17 -0
  112. data/spec/integration/v1/customer_disputes/dispute_provide_evidence_spec.rb +32 -0
  113. data/spec/integration/v1/customer_disputes/dispute_require_evidence_spec.rb +24 -0
  114. data/spec/integration/v1/customer_disputes/test_image.png +0 -0
  115. data/spec/integration/v1/identity/userinfo_get_spec.rb +65 -0
  116. data/spec/integration/v1/invoices/invoice_cancel_spec.rb +23 -0
  117. data/spec/integration/v1/invoices/invoice_create_spec.rb +15 -0
  118. data/spec/integration/v1/invoices/invoice_delete_external_payment_spec.rb +23 -0
  119. data/spec/integration/v1/invoices/invoice_delete_external_refund_spec.rb +21 -0
  120. data/spec/integration/v1/invoices/invoice_delete_spec.rb +16 -0
  121. data/spec/integration/v1/invoices/invoice_get_spec.rb +18 -0
  122. data/spec/integration/v1/invoices/invoice_helper.rb +171 -0
  123. data/spec/integration/v1/invoices/invoice_list_spec.rb +20 -0
  124. data/spec/integration/v1/invoices/invoice_next_invoice_number_spec.rb +14 -0
  125. data/spec/integration/v1/invoices/invoice_qr_code_spec.rb +18 -0
  126. data/spec/integration/v1/invoices/invoice_record_payment_spec.rb +14 -0
  127. data/spec/integration/v1/invoices/invoice_record_refund_spec.rb +14 -0
  128. data/spec/integration/v1/invoices/invoice_remind_spec.rb +22 -0
  129. data/spec/integration/v1/invoices/invoice_search_spec.rb +20 -0
  130. data/spec/integration/v1/invoices/invoice_send_spec.rb +15 -0
  131. data/spec/integration/v1/invoices/invoice_update_spec.rb +26 -0
  132. data/spec/integration/v1/invoices/template_create_spec.rb +14 -0
  133. data/spec/integration/v1/invoices/template_delete_spec.rb +15 -0
  134. data/spec/integration/v1/invoices/template_get_spec.rb +18 -0
  135. data/spec/integration/v1/invoices/template_list_spec.rb +15 -0
  136. data/spec/integration/v1/invoices/template_update_spec.rb +62 -0
  137. data/spec/integration/v1/orders/orders_cancel_spec.rb +15 -0
  138. data/spec/integration/v1/orders/orders_create_spec.rb +17 -0
  139. data/spec/integration/v1/orders/orders_get_spec.rb +18 -0
  140. data/spec/integration/v1/orders/orders_helper.rb +36 -0
  141. data/spec/integration/v1/orders/orders_pay_spec.rb +19 -0
  142. data/spec/integration/v1/payment_experience/pe_helper.rb +35 -0
  143. data/spec/integration/v1/payment_experience/web_profile_create_spec.rb +20 -0
  144. data/spec/integration/v1/payment_experience/web_profile_delete_spec.rb +15 -0
  145. data/spec/integration/v1/payment_experience/web_profile_get_spec.rb +17 -0
  146. data/spec/integration/v1/payment_experience/web_profile_list_spec.rb +18 -0
  147. data/spec/integration/v1/payment_experience/web_profile_partial_update_spec.rb +32 -0
  148. data/spec/integration/v1/payment_experience/web_profile_update_spec.rb +44 -0
  149. data/spec/integration/v1/payments/authorization_capture_spec.rb +17 -0
  150. data/spec/integration/v1/payments/authorization_get_spec.rb +18 -0
  151. data/spec/integration/v1/payments/authorization_reauthorize_spec.rb +26 -0
  152. data/spec/integration/v1/payments/authorization_void_spec.rb +19 -0
  153. data/spec/integration/v1/payments/capture_get_spec.rb +20 -0
  154. data/spec/integration/v1/payments/capture_refund_spec.rb +27 -0
  155. data/spec/integration/v1/payments/order_authorize_spec.rb +20 -0
  156. data/spec/integration/v1/payments/order_capture_spec.rb +21 -0
  157. data/spec/integration/v1/payments/order_get_spec.rb +14 -0
  158. data/spec/integration/v1/payments/order_void_spec.rb +14 -0
  159. data/spec/integration/v1/payments/payment_create_spec.rb +13 -0
  160. data/spec/integration/v1/payments/payment_execute_spec.rb +19 -0
  161. data/spec/integration/v1/payments/payment_get_spec.rb +17 -0
  162. data/spec/integration/v1/payments/payment_list_spec.rb +16 -0
  163. data/spec/integration/v1/payments/payment_update_spec.rb +28 -0
  164. data/spec/integration/v1/payments/payments_helper.rb +78 -0
  165. data/spec/integration/v1/payments/refund_get_spec.rb +19 -0
  166. data/spec/integration/v1/payments/sale_get_spec.rb +18 -0
  167. data/spec/integration/v1/payments/sale_refund_spec.rb +18 -0
  168. data/spec/integration/v1/sync/search_get_spec.rb +34 -0
  169. data/spec/integration/v1/vault/credit_card_create_spec.rb +16 -0
  170. data/spec/integration/v1/vault/credit_card_delete_spec.rb +16 -0
  171. data/spec/integration/v1/vault/credit_card_get_spec.rb +17 -0
  172. data/spec/integration/v1/vault/credit_card_list_spec.rb +18 -0
  173. data/spec/integration/v1/vault/credit_card_update_spec.rb +26 -0
  174. data/spec/integration/v1/vault/vault_helper.rb +28 -0
  175. data/spec/integration/v1/webhooks/available_event_type_list_spec.rb +16 -0
  176. data/spec/integration/v1/webhooks/webhook_create_spec.rb +12 -0
  177. data/spec/integration/v1/webhooks/webhook_delete_spec.rb +13 -0
  178. data/spec/integration/v1/webhooks/webhook_get_spec.rb +16 -0
  179. data/spec/integration/v1/webhooks/webhook_helper.rb +42 -0
  180. data/spec/integration/v1/webhooks/webhook_list_event_subscriptions_spec.rb +16 -0
  181. data/spec/integration/v1/webhooks/webhook_list_spec.rb +15 -0
  182. data/spec/integration/v1/webhooks/webhook_update_spec.rb +29 -0
  183. data/spec/integration/v1/webhooks/webhook_verify_signature_spec.rb +20 -0
  184. data/spec/log/http.log +0 -0
  185. data/spec/log/rest_http.log +0 -0
  186. data/spec/spec_helper.rb +98 -26
  187. data/spec/unit/paypal_http_client_spec.rb +272 -0
  188. metadata +277 -119
  189. data/Rakefile +0 -15
  190. data/data/DigiCertHighAssuranceEVRootCA.pem +0 -23
  191. data/data/DigiCertSHA2ExtendedValidationServerCA.pem +0 -28
  192. data/data/paypal.crt +0 -171
  193. data/lib/generators/paypal/sdk/USAGE +0 -3
  194. data/lib/generators/paypal/sdk/install_generator.rb +0 -17
  195. data/lib/generators/paypal/sdk/templates/paypal.rb +0 -2
  196. data/lib/generators/paypal/sdk/templates/paypal.yml +0 -29
  197. data/lib/paypal-sdk-core.rb +0 -38
  198. data/lib/paypal-sdk/core/api.rb +0 -20
  199. data/lib/paypal-sdk/core/api/base.rb +0 -169
  200. data/lib/paypal-sdk/core/api/data_types/array_with_block.rb +0 -44
  201. data/lib/paypal-sdk/core/api/data_types/base.rb +0 -225
  202. data/lib/paypal-sdk/core/api/data_types/enum.rb +0 -26
  203. data/lib/paypal-sdk/core/api/data_types/simple_types.rb +0 -52
  204. data/lib/paypal-sdk/core/api/ipn.rb +0 -66
  205. data/lib/paypal-sdk/core/api/rest.rb +0 -177
  206. data/lib/paypal-sdk/core/authentication.rb +0 -66
  207. data/lib/paypal-sdk/core/config.rb +0 -253
  208. data/lib/paypal-sdk/core/credential.rb +0 -16
  209. data/lib/paypal-sdk/core/credential/base.rb +0 -27
  210. data/lib/paypal-sdk/core/credential/certificate.rb +0 -32
  211. data/lib/paypal-sdk/core/credential/signature.rb +0 -22
  212. data/lib/paypal-sdk/core/credential/third_party/subject.rb +0 -25
  213. data/lib/paypal-sdk/core/credential/third_party/token.rb +0 -39
  214. data/lib/paypal-sdk/core/exceptions.rb +0 -112
  215. data/lib/paypal-sdk/core/logging.rb +0 -50
  216. data/lib/paypal-sdk/core/openid_connect.rb +0 -140
  217. data/lib/paypal-sdk/core/openid_connect/api.rb +0 -50
  218. data/lib/paypal-sdk/core/openid_connect/data_types.rb +0 -73
  219. data/lib/paypal-sdk/core/openid_connect/get_api.rb +0 -28
  220. data/lib/paypal-sdk/core/openid_connect/request_data_type.rb +0 -52
  221. data/lib/paypal-sdk/core/openid_connect/set_api.rb +0 -36
  222. data/lib/paypal-sdk/core/util.rb +0 -11
  223. data/lib/paypal-sdk/core/util/http_helper.rb +0 -171
  224. data/lib/paypal-sdk/core/util/oauth_signature.rb +0 -64
  225. data/lib/paypal-sdk/core/util/ordered_hash.rb +0 -165
  226. data/lib/paypal-sdk/rest.rb +0 -39
  227. data/lib/paypal-sdk/rest/api.rb +0 -23
  228. data/lib/paypal-sdk/rest/data_types.rb +0 -2596
  229. data/lib/paypal-sdk/rest/error_hash.rb +0 -39
  230. data/lib/paypal-sdk/rest/get_api.rb +0 -20
  231. data/lib/paypal-sdk/rest/request_data_type.rb +0 -53
  232. data/lib/paypal-sdk/rest/set_api.rb +0 -42
  233. data/lib/paypal-sdk/rest/version.rb +0 -7
  234. data/spec/README.md +0 -22
  235. data/spec/config/cacert.pem +0 -171
  236. data/spec/config/cert_key.pem +0 -33
  237. data/spec/config/paypal.yml +0 -35
  238. data/spec/config/sample_data.yml +0 -3
  239. data/spec/core/api/data_type_spec.rb +0 -289
  240. data/spec/core/api/rest_spec.rb +0 -211
  241. data/spec/core/config_spec.rb +0 -192
  242. data/spec/core/logging_spec.rb +0 -28
  243. data/spec/core/openid_connect_spec.rb +0 -153
  244. data/spec/invoice_examples_spec.rb +0 -38
  245. data/spec/payments_examples_spec.rb +0 -437
  246. data/spec/payouts_examples_spec.rb +0 -49
  247. data/spec/rest/data_types_spec.rb +0 -62
  248. data/spec/rest/error_hash_spec.rb +0 -83
  249. data/spec/subscription_examples_spec.rb +0 -227
  250. data/spec/support/sample_data.rb +0 -5
  251. data/spec/web_profile_examples_spec.rb +0 -106
  252. data/spec/webhooks_examples_spec.rb +0 -93
@@ -1,44 +0,0 @@
1
- module PayPal::SDK::Core
2
- module API
3
- module DataTypes
4
- # Create Array with block.
5
- # === Example
6
- # ary = ArrayWithBlock.new{|val| val.to_i }
7
- # ary.push("123") # [ 123 ]
8
- # ary.merge!(["1", "3"]) # [ 123, 1, 3 ]
9
- class ArrayWithBlock < ::Array
10
- def initialize(&block)
11
- @block = block
12
- super()
13
- end
14
-
15
- def [](key)
16
- super(key) || send(:"[]=", key, nil)
17
- end
18
-
19
- def []=(key, value)
20
- super(key, @block ? @block.call(value) : value)
21
- end
22
-
23
- def push(value)
24
- super(@block ? @block.call(value) : value)
25
- end
26
-
27
- def merge!(array)
28
- if array.is_a? Array
29
- array.each do |object|
30
- push(object)
31
- end
32
- elsif array.is_a? Hash and array.keys.first.to_s =~ /^\d+$/
33
- array.each do |key, object|
34
- self[key.to_i] = object
35
- end
36
- else
37
- push(array)
38
- end
39
- self
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,225 +0,0 @@
1
- require 'date'
2
-
3
- module PayPal::SDK::Core
4
- module API
5
-
6
- module DataTypes
7
-
8
- # Create attributes and restrict the object type.
9
- # == Example
10
- # class ConvertCurrencyRequest < Core::API::DataTypes::Base
11
- # object_of :baseAmountList, CurrencyList
12
- # object_of :convertToCurrencyList, CurrencyCodeList
13
- # object_of :countryCode, String
14
- # object_of :conversionType, String
15
- # end
16
- class Base
17
-
18
- HashOptions = { :attribute => true, :namespace => true, :symbol => false }
19
- ContentKey = :value
20
-
21
- include SimpleTypes
22
- include Logging
23
-
24
- class << self
25
-
26
- # Add attribute
27
- # === Arguments
28
- # * <tt>name</tt> -- attribute name
29
- # * <tt>options</tt> -- options
30
- def add_attribute(name, options = {})
31
- add_member(name, SimpleTypes::String, options.merge( :attribute => true ))
32
- end
33
-
34
- # Fields list for the DataTye
35
- def members
36
- @members ||=
37
- begin
38
- superclass.load_members if defined? superclass.load_members
39
- parent_members = superclass.instance_variable_get("@members")
40
- parent_members ? parent_members.dup : Util::OrderedHash.new
41
- end
42
- end
43
-
44
- # Add Field to class variable hash and generate methods
45
- # === Example
46
- # add_member(:errorMessage, String) # Generate Code
47
- # # attr_reader :errorMessage
48
- # # alias_method :error_message, :errorMessage
49
- # # alias_method :error_message=, :errorMessage=
50
- def add_member(member_name, klass, options = {})
51
- member_name = member_name.to_sym
52
- return if members[member_name]
53
- members[member_name] = options.merge( :type => klass )
54
- member_variable_name = "@#{member_name}"
55
- define_method "#{member_name}=" do |value|
56
- object = options[:array] ? convert_array(value, klass) : convert_object(value, klass)
57
- instance_variable_set(member_variable_name, object)
58
- end
59
- default_value = ( options[:array] ? [] : ( klass < Base ? Util::OrderedHash.new : nil ) )
60
- define_method member_name do |&block|
61
- value = instance_variable_get(member_variable_name) || ( default_value && send("#{member_name}=", default_value) )
62
- value.instance_eval(&block) if block
63
- value
64
- end
65
- define_alias_methods(member_name, options)
66
- end
67
-
68
- # Define alias methods for getter and setter
69
- def define_alias_methods(member_name, options)
70
- snakecase_name = snakecase(member_name)
71
- alias_method snakecase_name, member_name
72
- alias_method "#{snakecase_name}=", "#{member_name}="
73
- alias_method "#{options[:namespace]}:#{member_name}=", "#{member_name}=" if options[:namespace]
74
- if options[:attribute]
75
- alias_method "@#{member_name}=", "#{member_name}="
76
- alias_method "@#{options[:namespace]}:#{member_name}=", "#{member_name}=" if options[:namespace]
77
- end
78
- end
79
-
80
- # define method for given member and the class name
81
- # === Example
82
- # object_of(:errorMessage, ErrorMessage) # Generate Code
83
- # # def errorMessage=(options)
84
- # # @errorMessage = ErrorMessage.new(options)
85
- # # end
86
- # # add_member :errorMessage, ErrorMessage
87
- def object_of(key, klass, options = {})
88
- add_member(key, klass, options)
89
- end
90
-
91
- # define method for given member and the class name
92
- # === Example
93
- # array_of(:errorMessage, ErrorMessage) # It Generate below code
94
- # # def errorMessage=(array)
95
- # # @errorMessage = array.map{|options| ErrorMessage.new(options) }
96
- # # end
97
- # # add_member :errorMessage, ErrorMessage
98
- def array_of(key, klass, options = {})
99
- add_member(key, klass, options.merge(:array => true))
100
- end
101
-
102
- # Generate snakecase string.
103
- # === Example
104
- # snakecase("errorMessage")
105
- # # error_message
106
- def snakecase(string)
107
- string.to_s.gsub(/([a-z])([A-Z])/, '\1_\2').gsub(/([A-Z])([A-Z][a-z])/, '\1_\2').downcase
108
- end
109
-
110
- end
111
-
112
- # Initialize options.
113
- def initialize(options = {}, &block)
114
- merge!(options, &block)
115
- end
116
-
117
- # Merge values
118
- def merge!(options, &block)
119
- if options.is_a? Hash
120
- options.each do |key, value|
121
- set(key, value)
122
- end
123
- elsif members[ContentKey]
124
- set(ContentKey, options)
125
- else
126
- raise ArgumentError, "invalid data(#{options.inspect}) for #{self.class.name} class"
127
- end
128
- self.instance_eval(&block) if block
129
- self
130
- end
131
-
132
- # Set value for given member
133
- # === Arguments
134
- # * <tt>key</tt> -- member name
135
- # * <tt>value</tt> -- value for member
136
- def set(key, value)
137
- send("#{key}=", value)
138
- rescue NoMethodError => error
139
- # Uncomment to see missing fields
140
- # logger.debug error.message
141
- rescue TypeError, ArgumentError => error
142
- raise TypeError, "#{error.message}(#{value.inspect}) for #{self.class.name}.#{key} member"
143
- end
144
-
145
- # Create array of objects.
146
- # === Example
147
- # covert_array([{ :amount => "55", :code => "USD"}], CurrencyType)
148
- # covert_array({ "0" => { :amount => "55", :code => "USD"} }, CurrencyType)
149
- # covert_array({ :amount => "55", :code => "USD"}, CurrencyType)
150
- # # @return
151
- # # [ <CurrencyType#object @amount="55" @code="USD" > ]
152
- def convert_array(array, klass)
153
- default_value = ( klass < Base ? Util::OrderedHash.new : nil )
154
- data_type_array = ArrayWithBlock.new{|object| convert_object(object || default_value, klass) }
155
- data_type_array.merge!(array)
156
- end
157
-
158
- # Create object based on given data.
159
- # === Example
160
- # covert_object({ :amount => "55", :code => "USD"}, CurrencyType )
161
- # # @return
162
- # # <CurrencyType#object @amount="55" @code="USD" >
163
- def convert_object(object, klass)
164
- object.is_a?(klass) ? object : ( ( object.nil? or object == "" ) ? nil : klass.new(object) )
165
- end
166
-
167
- # Alias instance method for the class method.
168
- def members
169
- self.class.members
170
- end
171
-
172
- # Get configured member names
173
- def member_names
174
- members.keys
175
- end
176
-
177
- # Create Hash based configured members
178
- def to_hash(options = {})
179
- options = HashOptions.merge(options)
180
- hash = Util::OrderedHash.new
181
- member_names.each do |member|
182
- value = value_to_hash(instance_variable_get("@#{member}"), options)
183
- hash[hash_key(member, options)] = value unless skip_value?(value)
184
- end
185
- hash
186
- end
187
-
188
- # Skip nil, empty array and empty hash.
189
- def skip_value?(value)
190
- value.nil? || ( ( value.is_a?(Array) || value.is_a?(Hash) ) && value.empty? )
191
- end
192
-
193
- # Generate Hash key for given member name based on configuration
194
- # === Example
195
- # hash_key(:amount) # @return :"ebl:amount"
196
- # hash_key(:type) # @return :"@type"
197
- def hash_key(key, options = {})
198
- unless key == ContentKey
199
- member_option = members[key]
200
- key = member_option[:name] if member_option.include? :name
201
- if !member_option[:attribute] and member_option[:namespace] and options[:namespace]
202
- key = "#{member_option[:namespace]}:#{key}"
203
- end
204
- key = "@#{key}" if member_option[:attribute] and options[:attribute]
205
- end
206
- options[:symbol] ? key.to_sym : key.to_s
207
- end
208
-
209
- # Covert the object to hash based on class.
210
- def value_to_hash(value, options = {})
211
- case value
212
- when Array
213
- value = value.map{|object| value_to_hash(object, options) }
214
- value.delete_if{|v| skip_value?(v) }
215
- value
216
- when Base
217
- value.to_hash(options)
218
- else
219
- value
220
- end
221
- end
222
- end
223
- end
224
- end
225
- end
@@ -1,26 +0,0 @@
1
- module PayPal::SDK::Core
2
- module API
3
- module DataTypes
4
-
5
- class Enum < SimpleTypes::String
6
- class << self
7
- def options
8
- @options ||= []
9
- end
10
-
11
- def options=(options)
12
- if options.is_a? Hash
13
- options.each do |const_name, value|
14
- const_set(const_name, value)
15
- end
16
- @options = options.values
17
- else
18
- @options = options
19
- end
20
- end
21
- end
22
- end
23
-
24
- end
25
- end
26
- end
@@ -1,52 +0,0 @@
1
- require 'date'
2
-
3
- module PayPal::SDK::Core
4
- module API
5
- module DataTypes
6
-
7
- module SimpleTypes
8
- class String < ::String
9
- def self.new(string = "")
10
- string.is_a?(::String) ? super : super(string.to_s)
11
- end
12
-
13
- def to_yaml_type
14
- "!tag:yaml.org,2002:str"
15
- end
16
- end
17
-
18
- class Integer < ::Integer
19
- def self.new(number)
20
- number.to_i
21
- end
22
- end
23
-
24
- class Float < ::Float
25
- def self.new(float)
26
- float.to_f
27
- end
28
- end
29
-
30
- class Boolean
31
- def self.new(boolean)
32
- ( boolean == 0 || boolean == "" || boolean =~ /^(false|f|no|n|0)$/i ) ? false : !!boolean
33
- end
34
- end
35
-
36
- class Date < ::Date
37
- def self.new(date)
38
- date.is_a?(::Date) ? date : Date.parse(date.to_s)
39
- end
40
- end
41
-
42
- class DateTime < ::DateTime
43
- def self.new(date_time)
44
- date_time = "0001-01-01T00:00:00" if date_time.to_s == "0"
45
- date_time.is_a?(::DateTime) ? date_time : parse(date_time.to_s)
46
- end
47
- end
48
- end
49
-
50
- end
51
- end
52
- end
@@ -1,66 +0,0 @@
1
- module PayPal
2
- module SDK
3
- module Core
4
- module API
5
- module IPN
6
-
7
- END_POINTS = {
8
- :sandbox => "https://www.sandbox.paypal.com/cgi-bin/webscr",
9
- :live => "https://ipnpb.paypal.com/cgi-bin/webscr"
10
- }
11
- VERIFIED = "VERIFIED"
12
- INVALID = "INVALID"
13
-
14
- class Message
15
- include Util::HTTPHelper
16
-
17
- attr_accessor :message
18
-
19
- def initialize(message, env = nil, options = {})
20
- @message = message
21
- set_config(env, options)
22
- end
23
-
24
- # Fetch end point
25
- def ipn_endpoint
26
- config.ipn_endpoint || default_ipn_endpoint
27
- end
28
-
29
- # Default IPN end point
30
- def default_ipn_endpoint
31
- endpoint = END_POINTS[(config.mode || :sandbox).to_sym] rescue nil
32
- endpoint || END_POINTS[:sandbox]
33
- end
34
-
35
- # Request IPN service for validating the content
36
- # === Return
37
- # return http response object
38
- def request
39
- uri = URI(ipn_endpoint)
40
- query_string = "cmd=_notify-validate&#{message}"
41
- http_call(:method => :post, :uri => uri, :body => query_string)
42
- end
43
-
44
- # Validate the given content
45
- # === Return
46
- # return true or false
47
- def valid?
48
- request.body == VERIFIED
49
- end
50
- end
51
-
52
- class << self
53
- def valid?(*args)
54
- Message.new(*args).valid?
55
- end
56
-
57
- def request(*args)
58
- Message.new(*args).request
59
- end
60
- end
61
-
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,177 +0,0 @@
1
- require 'multi_json'
2
-
3
- module PayPal::SDK::Core
4
- module API
5
- class REST < Base
6
- NVP_AUTH_HEADER = {
7
- :sandbox_email_address => "X-PAYPAL-SANDBOX-EMAIL-ADDRESS",
8
- :device_ipaddress => "X-PAYPAL-DEVICE-IPADDRESS"
9
- }
10
- DEFAULT_HTTP_HEADER = {
11
- "Content-Type" => "application/json"
12
- }
13
-
14
- DEFAULT_REST_END_POINTS = {
15
- :sandbox => "https://api.sandbox.paypal.com",
16
- :live => "https://api.paypal.com",
17
- }
18
- TOKEN_REQUEST_PARAMS = "grant_type=client_credentials"
19
-
20
- # Get REST service end point
21
- def service_endpoint
22
- config.rest_endpoint || super || DEFAULT_REST_END_POINTS[api_mode]
23
- end
24
-
25
- # Token endpoint
26
- def token_endpoint
27
- config.rest_token_endpoint || service_endpoint
28
- end
29
-
30
- # Clear cached values.
31
- def set_config(*args)
32
- @token_uri = nil
33
- @token_hash = nil
34
- super
35
- end
36
-
37
- # URI object token endpoint
38
- def token_uri
39
- @token_uri ||=
40
- begin
41
- new_uri = URI.parse(token_endpoint)
42
- new_uri.path = "/v1/oauth2/token" if new_uri.path =~ /^\/?$/
43
- new_uri
44
- end
45
- end
46
-
47
- # Generate Oauth token or Get cached
48
- def token_hash(auth_code=nil, headers=nil)
49
- validate_token_hash
50
- @token_hash ||=
51
- begin
52
- @token_request_at = Time.now
53
- basic_auth = ["#{config.client_id}:#{config.client_secret}"].pack('m').delete("\r\n")
54
- token_headers = default_http_header.merge({
55
- "Content-Type" => "application/x-www-form-urlencoded",
56
- "Authorization" => "Basic #{basic_auth}" }).merge(headers)
57
- if auth_code != nil
58
- TOKEN_REQUEST_PARAMS.replace "grant_type=authorization_code&response_type=token&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&code="
59
- TOKEN_REQUEST_PARAMS << auth_code
60
- end
61
- response = http_call( :method => :post, :uri => token_uri, :body => TOKEN_REQUEST_PARAMS, :header => token_headers )
62
- MultiJson.load(response.body, :symbolize_keys => true)
63
- end
64
- end
65
- attr_writer :token_hash
66
-
67
- # Get access token
68
- def token(auth_code=nil, headers={})
69
- token_hash(auth_code, headers)[:access_token]
70
- end
71
-
72
- # Get access token type
73
- def token_type(headers={})
74
- token_hash(nil, headers)[:token_type] || "Bearer"
75
- end
76
-
77
- # token setter
78
- def token=(new_token)
79
- @token_hash = { :access_token => new_token, :token_type => "Bearer" }
80
- end
81
-
82
- # Check token expired or not
83
- def validate_token_hash
84
- if @token_request_at and
85
- @token_hash and @token_hash[:expires_in] and
86
- (Time.now - @token_request_at) > @token_hash[:expires_in].to_i
87
- @token_hash = nil
88
- end
89
- end
90
-
91
- # Override the API call to handle Token Expire
92
- def api_call(payload)
93
- backup_payload = payload.dup
94
- begin
95
- response = super(payload)
96
- rescue UnauthorizedAccess => error
97
- if @token_hash and config.client_id
98
- # Reset cached token and Retry api request
99
- @token_hash = nil
100
- response = super(backup_payload)
101
- else
102
- raise error
103
- end
104
- end
105
- response
106
- end
107
-
108
- # Validate HTTP response
109
- def handle_response(response)
110
- super
111
- rescue BadRequest => error
112
- # Catch BadRequest to get validation error message from the response.
113
- error.response
114
- end
115
-
116
- # Format request payload
117
- # === Argument
118
- # * payload( uri, action, params, header)
119
- # === Generate
120
- # * payload( uri, body, header )
121
- def format_request(payload)
122
- # Request URI
123
- payload[:uri].path = url_join(payload[:uri].path, payload[:action])
124
- # HTTP Header
125
- credential_properties = credential(payload[:uri].to_s).properties
126
- header = map_header_value(NVP_AUTH_HEADER, credential_properties)
127
- payload[:header] = header.merge("Authorization" => "#{token_type(payload[:header])} #{token(nil, payload[:header])}").
128
- merge(DEFAULT_HTTP_HEADER).merge(payload[:header])
129
- # Post Data
130
- payload[:body] = MultiJson.dump(payload[:params])
131
- payload
132
- end
133
-
134
- # Format response payload
135
- # === Argument
136
- # * payload( response )
137
- # === Generate
138
- # * payload( data )
139
- def format_response(payload)
140
- response = payload[:response]
141
- payload[:data] =
142
- if response.body && response.body.strip == ""
143
- {}
144
- elsif response.code >= "200" and response.code <= "299"
145
- response.body && response.content_type == "application/json" ? MultiJson.load(response.body) : {}
146
- elsif response.content_type == "application/json"
147
- { "error" => flat_hash(MultiJson.load(response.body)) }
148
- else
149
- { "error" => { "name" => response.code, "message" => response.message,
150
- "developer_msg" => response } }
151
- end
152
- payload
153
- end
154
-
155
- def flat_hash(h)
156
- new_hash = {}
157
- h.each_pair do |key, val|
158
- if val.is_a?(Hash)
159
- new_hash.merge!(flat_hash(val))
160
- else
161
- new_hash[key] = val
162
- end
163
- end
164
- new_hash
165
- end
166
-
167
- # Log PayPal-Request-Id header
168
- def log_http_call(payload)
169
- if payload[:header] and payload[:header]["PayPal-Request-Id"]
170
- logger.info "PayPal-Request-Id: #{payload[:header]["PayPal-Request-Id"]}"
171
- end
172
- super
173
- end
174
-
175
- end
176
- end
177
- end