paypal-sdk-rest 1.7.5 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (235) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +4 -14
  3. data/README.md +45 -255
  4. data/lib/lib.rb +88 -0
  5. data/lib/paypal/core/access_token.rb +20 -0
  6. data/lib/paypal/core/paypal_environment.rb +38 -0
  7. data/lib/paypal/core/paypal_http_client.rb +51 -0
  8. data/lib/paypal/core/token_requests.rb +40 -0
  9. data/lib/paypal/core/version.rb +3 -0
  10. data/lib/v1/billing_agreements/agreement_bill_balance_request.rb +35 -0
  11. data/lib/v1/billing_agreements/agreement_cancel_request.rb +35 -0
  12. data/lib/v1/billing_agreements/agreement_create_request.rb +33 -0
  13. data/lib/v1/billing_agreements/agreement_execute_request.rb +31 -0
  14. data/lib/v1/billing_agreements/agreement_get_request.rb +31 -0
  15. data/lib/v1/billing_agreements/agreement_re_activate_request.rb +35 -0
  16. data/lib/v1/billing_agreements/agreement_set_balance_request.rb +35 -0
  17. data/lib/v1/billing_agreements/agreement_suspend_request.rb +35 -0
  18. data/lib/v1/billing_agreements/agreement_transactions_request.rb +41 -0
  19. data/lib/v1/billing_agreements/agreement_update_request.rb +35 -0
  20. data/lib/v1/billing_plans/plan_create_request.rb +33 -0
  21. data/lib/v1/billing_plans/plan_get_request.rb +31 -0
  22. data/lib/v1/billing_plans/plan_list_request.rb +49 -0
  23. data/lib/v1/billing_plans/plan_update_request.rb +35 -0
  24. data/lib/v1/identity/user_consent.rb +45 -0
  25. data/lib/v1/identity/userinfo_get_request.rb +33 -0
  26. data/lib/v1/invoices/invoice_cancel_request.rb +35 -0
  27. data/lib/v1/invoices/invoice_create_request.rb +33 -0
  28. data/lib/v1/invoices/invoice_delete_external_payment_request.rb +33 -0
  29. data/lib/v1/invoices/invoice_delete_external_refund_request.rb +33 -0
  30. data/lib/v1/invoices/invoice_delete_request.rb +31 -0
  31. data/lib/v1/invoices/invoice_get_request.rb +31 -0
  32. data/lib/v1/invoices/invoice_list_request.rb +44 -0
  33. data/lib/v1/invoices/invoice_next_invoice_number_request.rb +29 -0
  34. data/lib/v1/invoices/invoice_qr_code_request.rb +46 -0
  35. data/lib/v1/invoices/invoice_record_payment_request.rb +35 -0
  36. data/lib/v1/invoices/invoice_record_refund_request.rb +35 -0
  37. data/lib/v1/invoices/invoice_remind_request.rb +35 -0
  38. data/lib/v1/invoices/invoice_search_request.rb +33 -0
  39. data/lib/v1/invoices/invoice_send_request.rb +36 -0
  40. data/lib/v1/invoices/invoice_update_request.rb +40 -0
  41. data/lib/v1/invoices/template_create_request.rb +33 -0
  42. data/lib/v1/invoices/template_delete_request.rb +31 -0
  43. data/lib/v1/invoices/template_get_request.rb +31 -0
  44. data/lib/v1/invoices/template_list_request.rb +34 -0
  45. data/lib/v1/invoices/template_update_request.rb +35 -0
  46. data/lib/v1/orders/orders_cancel_request.rb +31 -0
  47. data/lib/v1/orders/orders_create_request.rb +33 -0
  48. data/lib/v1/orders/orders_get_request.rb +31 -0
  49. data/lib/v1/orders/orders_pay_request.rb +35 -0
  50. data/lib/v1/payment_experience/web_profile_create_request.rb +33 -0
  51. data/lib/v1/payment_experience/web_profile_delete_request.rb +31 -0
  52. data/lib/v1/payment_experience/web_profile_get_request.rb +31 -0
  53. data/lib/v1/payment_experience/web_profile_list_request.rb +29 -0
  54. data/lib/v1/payment_experience/web_profile_partial_update_request.rb +35 -0
  55. data/lib/v1/payment_experience/web_profile_update_request.rb +35 -0
  56. data/lib/v1/payments/authorization_capture_request.rb +35 -0
  57. data/lib/v1/payments/authorization_get_request.rb +31 -0
  58. data/lib/v1/payments/authorization_reauthorize_request.rb +35 -0
  59. data/lib/v1/payments/authorization_void_request.rb +31 -0
  60. data/lib/v1/payments/capture_get_request.rb +31 -0
  61. data/lib/v1/payments/capture_refund_request.rb +35 -0
  62. data/lib/v1/payments/order_authorize_request.rb +35 -0
  63. data/lib/v1/payments/order_capture_request.rb +35 -0
  64. data/lib/v1/payments/order_get_request.rb +31 -0
  65. data/lib/v1/payments/order_void_request.rb +31 -0
  66. data/lib/v1/payments/payment_create_request.rb +33 -0
  67. data/lib/v1/payments/payment_execute_request.rb +35 -0
  68. data/lib/v1/payments/payment_get_request.rb +31 -0
  69. data/lib/v1/payments/payment_list_request.rb +69 -0
  70. data/lib/v1/payments/payment_update_request.rb +35 -0
  71. data/lib/v1/payments/refund_get_request.rb +31 -0
  72. data/lib/v1/payments/sale_get_request.rb +31 -0
  73. data/lib/v1/payments/sale_refund_request.rb +35 -0
  74. data/lib/v1/sync/search_get_request.rb +99 -0
  75. data/lib/v1/vault/credit_card_create_request.rb +33 -0
  76. data/lib/v1/vault/credit_card_delete_request.rb +31 -0
  77. data/lib/v1/vault/credit_card_get_request.rb +31 -0
  78. data/lib/v1/vault/credit_card_list_request.rb +79 -0
  79. data/lib/v1/vault/credit_card_update_request.rb +35 -0
  80. data/lib/v1/webhooks/available_event_type_list_request.rb +29 -0
  81. data/lib/v1/webhooks/event_get_request.rb +31 -0
  82. data/lib/v1/webhooks/event_list_request.rb +54 -0
  83. data/lib/v1/webhooks/event_resend_request.rb +35 -0
  84. data/lib/v1/webhooks/simulate_event_request.rb +33 -0
  85. data/lib/v1/webhooks/webhook_create_request.rb +33 -0
  86. data/lib/v1/webhooks/webhook_delete_request.rb +31 -0
  87. data/lib/v1/webhooks/webhook_get_request.rb +31 -0
  88. data/lib/v1/webhooks/webhook_list_event_subscriptions_request.rb +31 -0
  89. data/lib/v1/webhooks/webhook_list_request.rb +34 -0
  90. data/lib/v1/webhooks/webhook_update_request.rb +35 -0
  91. data/lib/v1/webhooks/webhook_verify_signature_request.rb +33 -0
  92. data/spec/integration/test_harness.rb +25 -0
  93. data/spec/integration/v1/billing_agreements/agreement_create_spec.rb +63 -0
  94. data/spec/integration/v1/billing_plans/plan_create_spec.rb +12 -0
  95. data/spec/integration/v1/billing_plans/plan_get_spec.rb +16 -0
  96. data/spec/integration/v1/billing_plans/plan_helper.rb +71 -0
  97. data/spec/integration/v1/billing_plans/plan_list_spec.rb +16 -0
  98. data/spec/integration/v1/billing_plans/plan_update_spec.rb +19 -0
  99. data/spec/integration/v1/identity/userinfo_get_spec.rb +65 -0
  100. data/spec/integration/v1/invoices/invoice_cancel_spec.rb +23 -0
  101. data/spec/integration/v1/invoices/invoice_create_spec.rb +15 -0
  102. data/spec/integration/v1/invoices/invoice_delete_external_payment_spec.rb +23 -0
  103. data/spec/integration/v1/invoices/invoice_delete_external_refund_spec.rb +21 -0
  104. data/spec/integration/v1/invoices/invoice_delete_spec.rb +16 -0
  105. data/spec/integration/v1/invoices/invoice_get_spec.rb +18 -0
  106. data/spec/integration/v1/invoices/invoice_helper.rb +171 -0
  107. data/spec/integration/v1/invoices/invoice_list_spec.rb +20 -0
  108. data/spec/integration/v1/invoices/invoice_next_invoice_number_spec.rb +14 -0
  109. data/spec/integration/v1/invoices/invoice_qr_code_spec.rb +18 -0
  110. data/spec/integration/v1/invoices/invoice_record_payment_spec.rb +14 -0
  111. data/spec/integration/v1/invoices/invoice_record_refund_spec.rb +14 -0
  112. data/spec/integration/v1/invoices/invoice_remind_spec.rb +22 -0
  113. data/spec/integration/v1/invoices/invoice_search_spec.rb +20 -0
  114. data/spec/integration/v1/invoices/invoice_send_spec.rb +15 -0
  115. data/spec/integration/v1/invoices/invoice_update_spec.rb +26 -0
  116. data/spec/integration/v1/invoices/template_create_spec.rb +14 -0
  117. data/spec/integration/v1/invoices/template_delete_spec.rb +15 -0
  118. data/spec/integration/v1/invoices/template_get_spec.rb +18 -0
  119. data/spec/integration/v1/invoices/template_list_spec.rb +15 -0
  120. data/spec/integration/v1/invoices/template_update_spec.rb +62 -0
  121. data/spec/integration/v1/orders/orders_cancel_spec.rb +15 -0
  122. data/spec/integration/v1/orders/orders_create_spec.rb +17 -0
  123. data/spec/integration/v1/orders/orders_get_spec.rb +18 -0
  124. data/spec/integration/v1/orders/orders_helper.rb +36 -0
  125. data/spec/integration/v1/orders/orders_pay_spec.rb +19 -0
  126. data/spec/integration/v1/payment_experience/pe_helper.rb +35 -0
  127. data/spec/integration/v1/payment_experience/web_profile_create_spec.rb +20 -0
  128. data/spec/integration/v1/payment_experience/web_profile_delete_spec.rb +15 -0
  129. data/spec/integration/v1/payment_experience/web_profile_get_spec.rb +17 -0
  130. data/spec/integration/v1/payment_experience/web_profile_list_spec.rb +18 -0
  131. data/spec/integration/v1/payment_experience/web_profile_partial_update_spec.rb +32 -0
  132. data/spec/integration/v1/payment_experience/web_profile_update_spec.rb +44 -0
  133. data/spec/integration/v1/payments/authorization_capture_spec.rb +17 -0
  134. data/spec/integration/v1/payments/authorization_get_spec.rb +18 -0
  135. data/spec/integration/v1/payments/authorization_reauthorize_spec.rb +26 -0
  136. data/spec/integration/v1/payments/authorization_void_spec.rb +19 -0
  137. data/spec/integration/v1/payments/capture_get_spec.rb +20 -0
  138. data/spec/integration/v1/payments/capture_refund_spec.rb +27 -0
  139. data/spec/integration/v1/payments/order_authorize_spec.rb +20 -0
  140. data/spec/integration/v1/payments/order_capture_spec.rb +21 -0
  141. data/spec/integration/v1/payments/order_get_spec.rb +14 -0
  142. data/spec/integration/v1/payments/order_void_spec.rb +14 -0
  143. data/spec/integration/v1/payments/payment_create_spec.rb +13 -0
  144. data/spec/integration/v1/payments/payment_execute_spec.rb +19 -0
  145. data/spec/integration/v1/payments/payment_get_spec.rb +17 -0
  146. data/spec/integration/v1/payments/payment_list_spec.rb +16 -0
  147. data/spec/integration/v1/payments/payment_update_spec.rb +28 -0
  148. data/spec/integration/v1/payments/payments_helper.rb +72 -0
  149. data/spec/integration/v1/payments/refund_get_spec.rb +19 -0
  150. data/spec/integration/v1/payments/sale_get_spec.rb +18 -0
  151. data/spec/integration/v1/payments/sale_refund_spec.rb +18 -0
  152. data/spec/integration/v1/sync/search_get_spec.rb +34 -0
  153. data/spec/integration/v1/vault/credit_card_create_spec.rb +16 -0
  154. data/spec/integration/v1/vault/credit_card_delete_spec.rb +16 -0
  155. data/spec/integration/v1/vault/credit_card_get_spec.rb +17 -0
  156. data/spec/integration/v1/vault/credit_card_list_spec.rb +18 -0
  157. data/spec/integration/v1/vault/credit_card_update_spec.rb +26 -0
  158. data/spec/integration/v1/vault/vault_helper.rb +28 -0
  159. data/spec/integration/v1/webhooks/available_event_type_list_spec.rb +16 -0
  160. data/spec/integration/v1/webhooks/webhook_create_spec.rb +12 -0
  161. data/spec/integration/v1/webhooks/webhook_delete_spec.rb +13 -0
  162. data/spec/integration/v1/webhooks/webhook_get_spec.rb +16 -0
  163. data/spec/integration/v1/webhooks/webhook_helper.rb +43 -0
  164. data/spec/integration/v1/webhooks/webhook_list_event_subscriptions_spec.rb +16 -0
  165. data/spec/integration/v1/webhooks/webhook_list_spec.rb +15 -0
  166. data/spec/integration/v1/webhooks/webhook_update_spec.rb +29 -0
  167. data/spec/integration/v1/webhooks/webhook_verify_signature_spec.rb +20 -0
  168. data/spec/spec_helper.rb +97 -28
  169. data/spec/unit/paypal_http_client_spec.rb +264 -0
  170. metadata +257 -126
  171. data/Rakefile +0 -15
  172. data/data/DigiCertHighAssuranceEVRootCA.pem +0 -23
  173. data/data/DigiCertSHA2ExtendedValidationServerCA.pem +0 -28
  174. data/data/paypal.crt +0 -171
  175. data/lib/generators/paypal/sdk/USAGE +0 -3
  176. data/lib/generators/paypal/sdk/install_generator.rb +0 -17
  177. data/lib/generators/paypal/sdk/templates/paypal.rb +0 -2
  178. data/lib/generators/paypal/sdk/templates/paypal.yml +0 -29
  179. data/lib/paypal-sdk/core/api/base.rb +0 -169
  180. data/lib/paypal-sdk/core/api/data_types/array_with_block.rb +0 -44
  181. data/lib/paypal-sdk/core/api/data_types/base.rb +0 -225
  182. data/lib/paypal-sdk/core/api/data_types/enum.rb +0 -26
  183. data/lib/paypal-sdk/core/api/data_types/simple_types.rb +0 -52
  184. data/lib/paypal-sdk/core/api/ipn.rb +0 -66
  185. data/lib/paypal-sdk/core/api/rest.rb +0 -177
  186. data/lib/paypal-sdk/core/api.rb +0 -20
  187. data/lib/paypal-sdk/core/authentication.rb +0 -66
  188. data/lib/paypal-sdk/core/config.rb +0 -253
  189. data/lib/paypal-sdk/core/credential/base.rb +0 -27
  190. data/lib/paypal-sdk/core/credential/certificate.rb +0 -32
  191. data/lib/paypal-sdk/core/credential/signature.rb +0 -22
  192. data/lib/paypal-sdk/core/credential/third_party/subject.rb +0 -25
  193. data/lib/paypal-sdk/core/credential/third_party/token.rb +0 -39
  194. data/lib/paypal-sdk/core/credential.rb +0 -16
  195. data/lib/paypal-sdk/core/exceptions.rb +0 -112
  196. data/lib/paypal-sdk/core/logging.rb +0 -50
  197. data/lib/paypal-sdk/core/openid_connect/api.rb +0 -50
  198. data/lib/paypal-sdk/core/openid_connect/data_types.rb +0 -73
  199. data/lib/paypal-sdk/core/openid_connect/get_api.rb +0 -28
  200. data/lib/paypal-sdk/core/openid_connect/request_data_type.rb +0 -52
  201. data/lib/paypal-sdk/core/openid_connect/set_api.rb +0 -36
  202. data/lib/paypal-sdk/core/openid_connect.rb +0 -140
  203. data/lib/paypal-sdk/core/util/http_helper.rb +0 -171
  204. data/lib/paypal-sdk/core/util/oauth_signature.rb +0 -64
  205. data/lib/paypal-sdk/core/util/ordered_hash.rb +0 -165
  206. data/lib/paypal-sdk/core/util.rb +0 -11
  207. data/lib/paypal-sdk/rest/api.rb +0 -23
  208. data/lib/paypal-sdk/rest/data_types.rb +0 -2597
  209. data/lib/paypal-sdk/rest/error_hash.rb +0 -39
  210. data/lib/paypal-sdk/rest/get_api.rb +0 -20
  211. data/lib/paypal-sdk/rest/request_data_type.rb +0 -53
  212. data/lib/paypal-sdk/rest/set_api.rb +0 -42
  213. data/lib/paypal-sdk/rest/version.rb +0 -7
  214. data/lib/paypal-sdk/rest.rb +0 -39
  215. data/lib/paypal-sdk-core.rb +0 -38
  216. data/lib/paypal-sdk-rest.rb +0 -2
  217. data/spec/README.md +0 -22
  218. data/spec/config/cacert.pem +0 -171
  219. data/spec/config/cert_key.pem +0 -33
  220. data/spec/config/paypal.yml +0 -35
  221. data/spec/config/sample_data.yml +0 -3
  222. data/spec/core/api/data_type_spec.rb +0 -289
  223. data/spec/core/api/rest_spec.rb +0 -211
  224. data/spec/core/config_spec.rb +0 -192
  225. data/spec/core/logging_spec.rb +0 -28
  226. data/spec/core/openid_connect_spec.rb +0 -153
  227. data/spec/invoice_examples_spec.rb +0 -38
  228. data/spec/payments_examples_spec.rb +0 -437
  229. data/spec/payouts_examples_spec.rb +0 -74
  230. data/spec/rest/data_types_spec.rb +0 -62
  231. data/spec/rest/error_hash_spec.rb +0 -83
  232. data/spec/subscription_examples_spec.rb +0 -227
  233. data/spec/support/sample_data.rb +0 -5
  234. data/spec/web_profile_examples_spec.rb +0 -106
  235. data/spec/webhooks_examples_spec.rb +0 -93
@@ -1,171 +0,0 @@
1
- require 'net/https'
2
- require 'uri'
3
- require 'cgi'
4
-
5
- module PayPal::SDK::Core
6
- module Util
7
- module HTTPHelper
8
-
9
- include Configuration
10
- include Logging
11
- include Authentication
12
- include Exceptions
13
-
14
- # Create HTTP connection based on given service name or configured end point
15
- def create_http_connection(uri)
16
- new_http(uri).tap do |http|
17
- if config.http_timeout
18
- http.open_timeout = config.http_timeout
19
- http.read_timeout = config.http_timeout
20
- end
21
- configure_ssl(http) if uri.scheme == "https"
22
- end
23
- end
24
-
25
- # New raw HTTP object
26
- def new_http(uri)
27
- if config.http_proxy
28
- proxy = URI.parse(config.http_proxy)
29
- Net::HTTP.new(uri.host, uri.port, proxy.host, proxy.port, proxy.user, proxy.password)
30
- else
31
- Net::HTTP.new(uri.host, uri.port)
32
- end
33
- end
34
-
35
- # Default ca file
36
- def default_ca_file
37
- File.expand_path("../../../../../data/paypal.crt", __FILE__)
38
- end
39
-
40
- # Apply ssl configuration to http object
41
- def configure_ssl(http)
42
- http.tap do |https|
43
- https.use_ssl = true
44
- https.ca_file = default_ca_file
45
- https.verify_mode = OpenSSL::SSL::VERIFY_PEER
46
- begin
47
- https.ssl_version = :TLSv1_2
48
- rescue => error
49
- logger.warn("WARNING: Your system does not support TLSv1.2. Per PCI Security Council mandate (https://github.com/paypal/TLS-update), you MUST update to latest security library.")
50
- end
51
- config.ssl_options.each do |key, value|
52
- http.send("#{key}=", value)
53
- end
54
- add_certificate(https)
55
- end
56
- end
57
-
58
- # Join url
59
- def url_join(path, action)
60
- path.sub(/\/?$/, "/#{action}")
61
- end
62
-
63
- # Make Http call
64
- # * payload - Hash(:http, :method, :uri, :body, :header)
65
- def http_call(payload)
66
- response =
67
- log_http_call(payload) do
68
- http = payload[:http] || create_http_connection(payload[:uri])
69
- http.start do |session|
70
- if [ :get, :delete, :head ].include? payload[:method]
71
- session.send(payload[:method], payload[:uri].request_uri, payload[:header])
72
- else
73
- session.send(payload[:method], payload[:uri].request_uri, payload[:body], payload[:header])
74
- end
75
- end
76
- end
77
-
78
- handle_response(response)
79
- end
80
-
81
- # Log Http call
82
- # * payload - Hash(:http, :method, :uri, :body, :header)
83
- def log_http_call(payload)
84
- logger.info "Request[#{payload[:method]}]: #{payload[:uri].to_s}"
85
-
86
- logger.debug "Request.body=#{payload[:body]}\trequest.header=#{payload[:header]}"
87
-
88
- start_time = Time.now
89
- response = yield
90
- logger.info sprintf("Response[%s]: %s, Duration: %.3fs", response.code,
91
- response.message, Time.now - start_time)
92
-
93
- logger.add(
94
- response_details_log_level(response),
95
- "Response.body=#{response.body}\tResponse.header=#{response.to_hash}"
96
- )
97
-
98
- response
99
- end
100
-
101
- # Generate header based on given header keys and properties
102
- # === Arguments
103
- # * <tt>header_keys</tt> -- List of Header keys for the properties
104
- # * <tt>properties</tt> -- properties
105
- # === Return
106
- # Hash with header as key property as value
107
- # === Example
108
- # map_header_value( { :username => "X-PAYPAL-USERNAME"}, { :username => "guest" })
109
- # # Return: { "X-PAYPAL-USERNAME" => "guest" }
110
- def map_header_value(header_keys, properties)
111
- header = {}
112
- properties.each do |key, value|
113
- key = header_keys[key]
114
- header[key] = value.to_s if key and value
115
- end
116
- header
117
- end
118
-
119
- def encode_www_form(hash)
120
- if defined? URI.encode_www_form
121
- URI.encode_www_form(hash)
122
- else
123
- hash.map{|key, value| "#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}" }.join("&")
124
- end
125
- end
126
-
127
- # Handles response and error codes from the remote service.
128
- def handle_response(response)
129
- case response.code.to_i
130
- when 301, 302, 303, 307
131
- raise(Redirection.new(response))
132
- when 200...400
133
- response
134
- when 400
135
- raise(BadRequest.new(response))
136
- when 401
137
- raise(UnauthorizedAccess.new(response))
138
- when 403
139
- raise(ForbiddenAccess.new(response))
140
- when 404
141
- raise(ResourceNotFound.new(response))
142
- when 405
143
- raise(MethodNotAllowed.new(response))
144
- when 409
145
- raise(ResourceConflict.new(response))
146
- when 410
147
- raise(ResourceGone.new(response))
148
- when 422
149
- raise(ResourceInvalid.new(response))
150
- when 401...500
151
- raise(ClientError.new(response))
152
- when 500...600
153
- raise(ServerError.new(response))
154
- else
155
- raise(ConnectionError.new(response, "Unknown response code: #{response.code}"))
156
- end
157
- end
158
-
159
- private
160
-
161
- def response_details_log_level(response)
162
- if (400...600).cover?(response.code.to_i)
163
- Logger::WARN
164
- else
165
- Logger::DEBUG
166
- end
167
- end
168
-
169
- end
170
- end
171
- end
@@ -1,64 +0,0 @@
1
- require 'uri'
2
- require 'cgi'
3
- require 'openssl'
4
- require 'base64'
5
-
6
- module PayPal::SDK::Core
7
- module Util
8
- class OauthSignature
9
- attr_accessor :username, :password, :token, :token_secret, :url, :timestamp
10
-
11
- def initialize(username, password, token, token_secret, url, timestamp = nil)
12
- @username = username
13
- @password = password
14
- @token = token
15
- @token_secret = token_secret
16
- @url = url
17
- @timestamp = timestamp || Time.now.to_i.to_s
18
- end
19
-
20
- def authorization_string
21
- signature = oauth_signature
22
- "token=#{token},signature=#{signature},timestamp=#{timestamp}"
23
- end
24
-
25
- def oauth_signature
26
- key = [
27
- paypal_encode(password),
28
- paypal_encode(token_secret),
29
- ].join("&").gsub(/%[0-9A-F][0-9A-F]/, &:downcase )
30
-
31
- digest = OpenSSL::HMAC.digest('sha1', key, base_string)
32
- Base64.encode64(digest).chomp
33
- end
34
-
35
- def base_string
36
- params = {
37
- "oauth_consumer_key" => username,
38
- "oauth_version" => "1.0",
39
- "oauth_signature_method" => "HMAC-SHA1",
40
- "oauth_token" => token,
41
- "oauth_timestamp" => timestamp,
42
- }
43
- sorted_query_string = params.sort.map{|v| v.join("=") }.join("&")
44
-
45
- base = [
46
- "POST",
47
- paypal_encode(url),
48
- paypal_encode(sorted_query_string)
49
- ].join("&")
50
- base = base.gsub(/%[0-9A-F][0-9A-F]/, &:downcase )
51
- end
52
-
53
- # The PayPalURLEncoder java class percent encodes everything other than 'a-zA-Z0-9 _'.
54
- # Then it converts ' ' to '+'.
55
- # Ruby's CGI.encode takes care of the ' ' and '*' to satisfy PayPal
56
- # (but beware, URI.encode percent encodes spaces, and does nothing with '*').
57
- # Finally, CGI.encode does not encode '.-', which we need to do here.
58
- def paypal_encode str
59
- CGI.escape(str.to_s).gsub('.', '%2E').gsub('-', '%2D')
60
- end
61
- end
62
- end
63
- end
64
-
@@ -1,165 +0,0 @@
1
- module PayPal::SDK::Core
2
- module Util
3
- class OrderedHash < ::Hash #:nodoc:
4
-
5
- def to_yaml_type
6
- "!tag:yaml.org,2002:map"
7
- end
8
-
9
- # Hash is ordered in Ruby 1.9!
10
- if RUBY_VERSION < '1.9'
11
-
12
- # In MRI the Hash class is core and written in C. In particular, methods are
13
- # programmed with explicit C function calls and polymorphism is not honored.
14
- #
15
- # For example, []= is crucial in this implementation to maintain the @keys
16
- # array but hash.c invokes rb_hash_aset() originally. This prevents method
17
- # reuse through inheritance and forces us to reimplement stuff.
18
- #
19
- # For instance, we cannot use the inherited #merge! because albeit the algorithm
20
- # itself would work, our []= is not being called at all by the C code.
21
-
22
- def initialize(*args, &block)
23
- super
24
- @keys = []
25
- end
26
-
27
- def self.[](*args)
28
- ordered_hash = new
29
-
30
- if (args.length == 1 && args.first.is_a?(Array))
31
- args.first.each do |key_value_pair|
32
- next unless (key_value_pair.is_a?(Array))
33
- ordered_hash[key_value_pair[0]] = key_value_pair[1]
34
- end
35
-
36
- return ordered_hash
37
- end
38
-
39
- unless (args.size % 2 == 0)
40
- raise ArgumentError.new("odd number of arguments for Hash")
41
- end
42
-
43
- args.each_with_index do |val, ind|
44
- next if (ind % 2 != 0)
45
- ordered_hash[val] = args[ind + 1]
46
- end
47
-
48
- ordered_hash
49
- end
50
-
51
- def initialize_copy(other)
52
- super
53
- # make a deep copy of keys
54
- @keys = other.keys
55
- end
56
-
57
- def []=(key, value)
58
- @keys << key if !has_key?(key)
59
- super
60
- end
61
-
62
- def delete(key)
63
- if has_key? key
64
- index = @keys.index(key)
65
- @keys.delete_at index
66
- end
67
- super
68
- end
69
-
70
- def delete_if
71
- super
72
- sync_keys!
73
- self
74
- end
75
-
76
- def reject!
77
- super
78
- sync_keys!
79
- self
80
- end
81
-
82
- def reject(&block)
83
- dup.reject!(&block)
84
- end
85
-
86
- def keys
87
- @keys.dup
88
- end
89
-
90
- def values
91
- @keys.collect { |key| self[key] }
92
- end
93
-
94
- def to_hash
95
- self
96
- end
97
-
98
- def to_a
99
- @keys.map { |key| [ key, self[key] ] }
100
- end
101
-
102
- def each_key
103
- @keys.each { |key| yield key }
104
- end
105
-
106
- def each_value
107
- @keys.each { |key| yield self[key]}
108
- end
109
-
110
- def each
111
- @keys.each {|key| yield [key, self[key]]}
112
- end
113
-
114
- alias_method :each_pair, :each
115
-
116
- def clear
117
- super
118
- @keys.clear
119
- self
120
- end
121
-
122
- def shift
123
- k = @keys.first
124
- v = delete(k)
125
- [k, v]
126
- end
127
-
128
- def merge!(other_hash)
129
- if block_given?
130
- other_hash.each { |k, v| self[k] = key?(k) ? yield(k, self[k], v) : v }
131
- else
132
- other_hash.each { |k, v| self[k] = v }
133
- end
134
- self
135
- end
136
-
137
- alias_method :update, :merge!
138
-
139
- def merge(other_hash, &block)
140
- dup.merge!(other_hash, &block)
141
- end
142
-
143
- # When replacing with another hash, the initial order of our keys must come from the other hash -ordered or not.
144
- def replace(other)
145
- super
146
- @keys = other.keys
147
- self
148
- end
149
-
150
- def invert
151
- OrderedHash[self.to_a.map!{|key_value_pair| key_value_pair.reverse}]
152
- end
153
-
154
- def inspect
155
- "#<OrderedHash #{super}>"
156
- end
157
-
158
- private
159
- def sync_keys!
160
- @keys.delete_if {|k| !has_key?(k)}
161
- end
162
- end
163
- end
164
- end
165
- end
@@ -1,11 +0,0 @@
1
- module PayPal
2
- module SDK
3
- module Core
4
- module Util
5
- autoload :OauthSignature, "paypal-sdk/core/util/oauth_signature"
6
- autoload :OrderedHash, "paypal-sdk/core/util/ordered_hash"
7
- autoload :HTTPHelper, "paypal-sdk/core/util/http_helper"
8
- end
9
- end
10
- end
11
- end
@@ -1,23 +0,0 @@
1
- require 'paypal-sdk-core'
2
- require 'paypal-sdk/rest/version'
3
-
4
- module PayPal
5
- module SDK
6
- module REST
7
- class API < Core::API::REST
8
- # include Services
9
-
10
- def initialize(environment = nil, options = {})
11
- super("", environment, options)
12
- end
13
-
14
- class << self
15
- def user_agent
16
- @user_agent ||= "PayPalSDK/PayPal-Ruby-SDK #{PayPal::SDK::REST::VERSION} (#{sdk_library_details})"
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
23
-