onlinepayments-sdk-ruby 4.16.0 → 4.18.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0bb67c94bd5f8e000fb9688e71e346837dde955160058f9b6db9950797ebc5a
4
- data.tar.gz: 4aadeaeba5d777d2c857bf082fe142349b61c6fe7f4d29b169b20d6dadd7b5c8
3
+ metadata.gz: f1aab6a893b021fd2acde88f65013a106b27c4162a8a22c296226861e4ea3163
4
+ data.tar.gz: 1d40d4e758bc1b80f9d37e037784a8e8bcc75fea8f1ab921d276749abb084317
5
5
  SHA512:
6
- metadata.gz: 30f4dfeb625a981c46c9955d9087a44c6e3938695e07b912b1b40fe6b4989d2cc39c0daf822238f1968f37f4be6915f00b39ed19f1aac3e52876ca119fb83d45
7
- data.tar.gz: 7b2ca1a1b946893ec1044e19104a112158a087500adab1049295d00cf86ac2da9130a44f9ceeb47f3ae405e19fa7866fdbe3b9b12a2b4a3daf0761d50dc849a3
6
+ metadata.gz: 7d5ae1806549be6c3759e3b29f8205a307d3f251bdd60a9f13559fd9ba9b8074aaf34bfef35e310f1fed429a2c0e4ad51a7fcde5c070fce7fedd1bc6ebdf4516
7
+ data.tar.gz: 39730866a212efbb6322d24a46425a39a51ffcde6f01bee86b672384b638ca69b69c869b8a7bfc35a1541f484f2cfed12e3076fe04c05e7284785eee072e135d
@@ -104,7 +104,8 @@ module OnlinePayments::SDK
104
104
  # @param relative_path [String] Path relative to the API endpoint
105
105
  # @param request_headers [Array<OnlinePayments::SDK::RequestHeader>, nil] Optional array of request headers
106
106
  # @param request_parameters [OnlinePayments::SDK::ParamRequest, nil] Optional request parameters
107
- # @param request_body [OnlinePayments::SDK::DataObject] The optional request body
107
+ # @param request_body [OnlinePayments::SDK::DataObject, OnlinePayments::SDK::MultipartFormDataObject, OnlinePayments::SDK::MultipartFormDataRequest]
108
+ # The optional request body
108
109
  # @param response_type [Type] The response type.
109
110
  # @param context [OnlinePayments::SDK::CallContext, nil] Optional call context.
110
111
  # @return The response of the POST request as the given response type
@@ -119,7 +120,14 @@ module OnlinePayments::SDK
119
120
  request_headers ||= []
120
121
 
121
122
  body = nil
122
- if request_body
123
+ if request_body.is_a? MultipartFormDataObject
124
+ request_headers.push(RequestHeader.new('Content-Type', request_body.content_type))
125
+ body = request_body
126
+ elsif request_body.is_a? MultipartFormDataRequest
127
+ multipart = request_body.to_multipart_form_data_object
128
+ request_headers.push(RequestHeader.new('Content-Type', multipart.content_type))
129
+ body = multipart
130
+ elsif request_body
123
131
  request_headers.push(RequestHeader.new('Content-Type', 'application/json'))
124
132
  body = @marshaller.marshal(request_body)
125
133
  else
@@ -19,6 +19,7 @@ module OnlinePayments::SDK
19
19
  using RefineHTTPClient
20
20
 
21
21
  CONTENT_TYPE = 'Content-Type'.freeze
22
+ X_REQUEST_ID_HEADER = 'X-Request-Id'.freeze
22
23
  JSON_CONTENT_TYPE = 'application/json'.freeze
23
24
 
24
25
  # @param args [Hash] the parameters to initialize the connection with
@@ -144,12 +145,16 @@ module OnlinePayments::SDK
144
145
  # @param method [String] 'GET', 'DELETE', 'POST' or 'PUT' depending on the HTTP method being used.
145
146
  # @param uri [URI::HTTP] full URI of the location the request is targeted at, including query parameters.
146
147
  # @param request_headers [Array<OnlinePayments::SDK::RequestHeader>] list of headers that should be used as HTTP headers in the request.
147
- # @param body [String] request body.
148
+ # @param body [String, OnlinePayments::SDK::MultipartFormDataObject] request body.
148
149
  # @yield (Integer, Array<OnlinePayments::SDK::ResponseHeader>, IO) The status code, headers and body of the response.
149
150
  # @raise [OnlinePayments::SDK::CommunicationException] when communication with the Online Payments platform was not successful.
150
151
  def request(method, uri, request_headers, body = nil)
151
152
  request_headers = convert_from_headers(request_headers)
152
153
  request_id = SecureRandom.uuid
154
+
155
+ # set X-Request-Id for better traceability
156
+ request_headers[X_REQUEST_ID_HEADER] = request_id
157
+
153
158
  content_type = request_headers[CONTENT_TYPE]
154
159
 
155
160
  info = { headers: request_headers, content_type: content_type }
@@ -163,14 +168,29 @@ module OnlinePayments::SDK
163
168
  response_status_code = nil
164
169
  response_content_type = nil
165
170
  response_body = ''
166
- raw_request(method, uri, request_headers, body) do |status_code, headers, r_content_type, r_body|
167
- response_headers = headers
168
- response_status_code = status_code
169
- response_content_type = r_content_type
170
- response_body = r_body.read.force_encoding('UTF-8')
171
- r_body = StringIO.new(response_body)
172
-
173
- yield status_code, headers, r_body
171
+
172
+ if body.is_a? OnlinePayments::SDK::MultipartFormDataObject
173
+ multipart_request(method, uri, request_headers, body) do |status_code, headers, r_content_type, r_body|
174
+ response_headers = headers
175
+ response_status_code = status_code
176
+ response_content_type = r_content_type
177
+ unless binary_content_type? response_content_type
178
+ response_body = r_body.read.force_encoding('UTF-8')
179
+ r_body = StringIO.new(response_body)
180
+ end
181
+
182
+ yield status_code, headers, r_body
183
+ end
184
+ else
185
+ raw_request(method, uri, request_headers, body) do |status_code, headers, r_content_type, r_body|
186
+ response_headers = headers
187
+ response_status_code = status_code
188
+ response_content_type = r_content_type
189
+ response_body = r_body.read.force_encoding('UTF-8')
190
+ r_body = StringIO.new(response_body)
191
+
192
+ yield status_code, headers, r_body
193
+ end
174
194
  end
175
195
 
176
196
  log_response(request_id, response_status_code, start_time,
@@ -290,6 +310,52 @@ module OnlinePayments::SDK
290
310
  pipe.close
291
311
  end
292
312
  end
313
+
314
+ # Makes a request using the specified method
315
+ #
316
+ # Yields a status code, an array of {OnlinePayments::SDK::ResponseHeader},
317
+ # the content_type and body
318
+ def multipart_request(method, uri, headers, body = nil)
319
+ unless body.is_a? OnlinePayments::SDK::MultipartFormDataObject
320
+ raise ArgumentError, 'body should be a MultipartFormDataObject'
321
+ end
322
+
323
+ if method != 'post' && method != 'put'
324
+ raise ArgumentError, "method #{method} is not supported"
325
+ end
326
+
327
+ connection = @http_client.send method + '_async',
328
+ uri,
329
+ body: multipart_request_body(body),
330
+ header: headers
331
+
332
+ response = connection.pop
333
+ pipe = response.content
334
+ response_headers = convert_to_sdk_response_headers(response.headers)
335
+
336
+ begin
337
+ yield response.status_code, response_headers, response.content_type, pipe
338
+ ensure
339
+ pipe.close
340
+ end
341
+ end
342
+
343
+ # Creates a request body for the multipart request
344
+ def multipart_request_body( body )
345
+ request_body = []
346
+ body.files.each do |k, v|
347
+ request_body.push :content => v.content,
348
+ 'Content-Type' => v.content_type,
349
+ 'Content-Disposition' => "form-data; name=\"#{k}\"; filename=\"#{v.file_name}\"",
350
+ 'Content-Transfer-Encoding' => 'binary'
351
+ end
352
+
353
+ body.values.each do |k, v|
354
+ request_body << { :content => v,
355
+ 'Content-Disposition' => "form-data; name=\"#{k}\"" }
356
+ end
357
+ request_body
358
+ end
293
359
  end
294
360
  end
295
361
  end
@@ -2,23 +2,31 @@
2
2
  # This class was auto-generated.
3
3
  #
4
4
  require 'onlinepayments/sdk/data_object'
5
+ require 'onlinepayments/sdk/domain/acquirer_selection_information'
5
6
 
6
7
  module OnlinePayments::SDK
7
8
  module Domain
8
9
 
10
+ # @attr [OnlinePayments::SDK::Domain::AcquirerSelectionInformation] acquirer_selection_information
9
11
  # @attr [String] name
10
12
  class AcquirerInformation < OnlinePayments::SDK::DataObject
13
+ attr_accessor :acquirer_selection_information
11
14
  attr_accessor :name
12
15
 
13
16
  # @return (Hash)
14
17
  def to_h
15
18
  hash = super
19
+ hash['acquirerSelectionInformation'] = @acquirer_selection_information.to_h if @acquirer_selection_information
16
20
  hash['name'] = @name unless @name.nil?
17
21
  hash
18
22
  end
19
23
 
20
24
  def from_hash(hash)
21
25
  super
26
+ if hash.key? 'acquirerSelectionInformation'
27
+ raise TypeError, "value '%s' is not a Hash" % [hash['acquirerSelectionInformation']] unless hash['acquirerSelectionInformation'].is_a? Hash
28
+ @acquirer_selection_information = OnlinePayments::SDK::Domain::AcquirerSelectionInformation.new_from_hash(hash['acquirerSelectionInformation'])
29
+ end
22
30
  @name = hash['name'] if hash.key? 'name'
23
31
  end
24
32
  end
@@ -0,0 +1,34 @@
1
+ #
2
+ # This class was auto-generated.
3
+ #
4
+ require 'onlinepayments/sdk/data_object'
5
+
6
+ module OnlinePayments::SDK
7
+ module Domain
8
+
9
+ # @attr [Integer] fallback_level
10
+ # @attr [String] result
11
+ # @attr [String] rule_name
12
+ class AcquirerSelectionInformation < OnlinePayments::SDK::DataObject
13
+ attr_accessor :fallback_level
14
+ attr_accessor :result
15
+ attr_accessor :rule_name
16
+
17
+ # @return (Hash)
18
+ def to_h
19
+ hash = super
20
+ hash['fallbackLevel'] = @fallback_level unless @fallback_level.nil?
21
+ hash['result'] = @result unless @result.nil?
22
+ hash['ruleName'] = @rule_name unless @rule_name.nil?
23
+ hash
24
+ end
25
+
26
+ def from_hash(hash)
27
+ super
28
+ @fallback_level = hash['fallbackLevel'] if hash.key? 'fallbackLevel'
29
+ @result = hash['result'] if hash.key? 'result'
30
+ @rule_name = hash['ruleName'] if hash.key? 'ruleName'
31
+ end
32
+ end
33
+ end
34
+ end
@@ -2,18 +2,21 @@
2
2
  # This class was auto-generated.
3
3
  #
4
4
  require 'onlinepayments/sdk/data_object'
5
+ require 'onlinepayments/sdk/domain/credit_card_specific_input_hosted_tokenization'
5
6
  require 'onlinepayments/sdk/domain/payment_product_filters_hosted_tokenization'
6
7
 
7
8
  module OnlinePayments::SDK
8
9
  module Domain
9
10
 
10
11
  # @attr [true/false] ask_consumer_consent
12
+ # @attr [OnlinePayments::SDK::Domain::CreditCardSpecificInputHostedTokenization] credit_card_specific_input
11
13
  # @attr [String] locale
12
14
  # @attr [OnlinePayments::SDK::Domain::PaymentProductFiltersHostedTokenization] payment_product_filters
13
15
  # @attr [String] tokens
14
16
  # @attr [String] variant
15
17
  class CreateHostedTokenizationRequest < OnlinePayments::SDK::DataObject
16
18
  attr_accessor :ask_consumer_consent
19
+ attr_accessor :credit_card_specific_input
17
20
  attr_accessor :locale
18
21
  attr_accessor :payment_product_filters
19
22
  attr_accessor :tokens
@@ -23,6 +26,7 @@ module OnlinePayments::SDK
23
26
  def to_h
24
27
  hash = super
25
28
  hash['askConsumerConsent'] = @ask_consumer_consent unless @ask_consumer_consent.nil?
29
+ hash['creditCardSpecificInput'] = @credit_card_specific_input.to_h if @credit_card_specific_input
26
30
  hash['locale'] = @locale unless @locale.nil?
27
31
  hash['paymentProductFilters'] = @payment_product_filters.to_h if @payment_product_filters
28
32
  hash['tokens'] = @tokens unless @tokens.nil?
@@ -33,6 +37,10 @@ module OnlinePayments::SDK
33
37
  def from_hash(hash)
34
38
  super
35
39
  @ask_consumer_consent = hash['askConsumerConsent'] if hash.key? 'askConsumerConsent'
40
+ if hash.key? 'creditCardSpecificInput'
41
+ raise TypeError, "value '%s' is not a Hash" % [hash['creditCardSpecificInput']] unless hash['creditCardSpecificInput'].is_a? Hash
42
+ @credit_card_specific_input = OnlinePayments::SDK::Domain::CreditCardSpecificInputHostedTokenization.new_from_hash(hash['creditCardSpecificInput'])
43
+ end
36
44
  @locale = hash['locale'] if hash.key? 'locale'
37
45
  if hash.key? 'paymentProductFilters'
38
46
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentProductFilters']] unless hash['paymentProductFilters'].is_a? Hash
@@ -2,14 +2,14 @@
2
2
  # This class was auto-generated.
3
3
  #
4
4
  require 'onlinepayments/sdk/data_object'
5
- require 'onlinepayments/sdk/domain/payment_link_order'
5
+ require 'onlinepayments/sdk/domain/payment_link_order_input'
6
6
 
7
7
  module OnlinePayments::SDK
8
8
  module Domain
9
9
 
10
10
  # @attr [String] description
11
11
  # @attr [String] expiration_date
12
- # @attr [OnlinePayments::SDK::Domain::PaymentLinkOrder] payment_link_order
12
+ # @attr [OnlinePayments::SDK::Domain::PaymentLinkOrderInput] payment_link_order
13
13
  # @attr [String] recipient_name
14
14
  class CreatePaymentLinkRequest < OnlinePayments::SDK::DataObject
15
15
  attr_accessor :description
@@ -33,7 +33,7 @@ module OnlinePayments::SDK
33
33
  @expiration_date = hash['expirationDate'] if hash.key? 'expirationDate'
34
34
  if hash.key? 'paymentLinkOrder'
35
35
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentLinkOrder']] unless hash['paymentLinkOrder'].is_a? Hash
36
- @payment_link_order = OnlinePayments::SDK::Domain::PaymentLinkOrder.new_from_hash(hash['paymentLinkOrder'])
36
+ @payment_link_order = OnlinePayments::SDK::Domain::PaymentLinkOrderInput.new_from_hash(hash['paymentLinkOrder'])
37
37
  end
38
38
  @recipient_name = hash['recipientName'] if hash.key? 'recipientName'
39
39
  end
@@ -0,0 +1,30 @@
1
+ #
2
+ # This class was auto-generated.
3
+ #
4
+ require 'onlinepayments/sdk/data_object'
5
+ require 'onlinepayments/sdk/domain/credit_card_validation_rules_hosted_tokenization'
6
+
7
+ module OnlinePayments::SDK
8
+ module Domain
9
+
10
+ # @attr [OnlinePayments::SDK::Domain::CreditCardValidationRulesHostedTokenization] validation_rules
11
+ class CreditCardSpecificInputHostedTokenization < OnlinePayments::SDK::DataObject
12
+ attr_accessor :validation_rules
13
+
14
+ # @return (Hash)
15
+ def to_h
16
+ hash = super
17
+ hash['ValidationRules'] = @validation_rules.to_h if @validation_rules
18
+ hash
19
+ end
20
+
21
+ def from_hash(hash)
22
+ super
23
+ if hash.key? 'ValidationRules'
24
+ raise TypeError, "value '%s' is not a Hash" % [hash['ValidationRules']] unless hash['ValidationRules'].is_a? Hash
25
+ @validation_rules = OnlinePayments::SDK::Domain::CreditCardValidationRulesHostedTokenization.new_from_hash(hash['ValidationRules'])
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ #
2
+ # This class was auto-generated.
3
+ #
4
+ require 'onlinepayments/sdk/data_object'
5
+
6
+ module OnlinePayments::SDK
7
+ module Domain
8
+
9
+ # @attr [true/false] cvv_mandatory_for_existing_token
10
+ # @attr [true/false] cvv_mandatory_for_new_token
11
+ class CreditCardValidationRulesHostedTokenization < OnlinePayments::SDK::DataObject
12
+ attr_accessor :cvv_mandatory_for_existing_token
13
+ attr_accessor :cvv_mandatory_for_new_token
14
+
15
+ # @return (Hash)
16
+ def to_h
17
+ hash = super
18
+ hash['cvvMandatoryForExistingToken'] = @cvv_mandatory_for_existing_token unless @cvv_mandatory_for_existing_token.nil?
19
+ hash['cvvMandatoryForNewToken'] = @cvv_mandatory_for_new_token unless @cvv_mandatory_for_new_token.nil?
20
+ hash
21
+ end
22
+
23
+ def from_hash(hash)
24
+ super
25
+ @cvv_mandatory_for_existing_token = hash['cvvMandatoryForExistingToken'] if hash.key? 'cvvMandatoryForExistingToken'
26
+ @cvv_mandatory_for_new_token = hash['cvvMandatoryForNewToken'] if hash.key? 'cvvMandatoryForNewToken'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ #
2
+ # This class was auto-generated.
3
+ #
4
+ require 'onlinepayments/sdk/data_object'
5
+
6
+ module OnlinePayments::SDK
7
+ module Domain
8
+
9
+ # @attr [Long] amount
10
+ class Discount < OnlinePayments::SDK::DataObject
11
+ attr_accessor :amount
12
+
13
+ # @return (Hash)
14
+ def to_h
15
+ hash = super
16
+ hash['amount'] = @amount unless @amount.nil?
17
+ hash
18
+ end
19
+
20
+ def from_hash(hash)
21
+ super
22
+ @amount = hash['amount'] if hash.key? 'amount'
23
+ end
24
+ end
25
+ end
26
+ end
@@ -5,6 +5,7 @@ require 'onlinepayments/sdk/data_object'
5
5
  require 'onlinepayments/sdk/domain/additional_order_input'
6
6
  require 'onlinepayments/sdk/domain/amount_of_money'
7
7
  require 'onlinepayments/sdk/domain/customer'
8
+ require 'onlinepayments/sdk/domain/discount'
8
9
  require 'onlinepayments/sdk/domain/order_references'
9
10
  require 'onlinepayments/sdk/domain/shipping'
10
11
  require 'onlinepayments/sdk/domain/shopping_cart'
@@ -16,6 +17,7 @@ module OnlinePayments::SDK
16
17
  # @attr [OnlinePayments::SDK::Domain::AdditionalOrderInput] additional_input
17
18
  # @attr [OnlinePayments::SDK::Domain::AmountOfMoney] amount_of_money
18
19
  # @attr [OnlinePayments::SDK::Domain::Customer] customer
20
+ # @attr [OnlinePayments::SDK::Domain::Discount] discount
19
21
  # @attr [OnlinePayments::SDK::Domain::OrderReferences] references
20
22
  # @attr [OnlinePayments::SDK::Domain::Shipping] shipping
21
23
  # @attr [OnlinePayments::SDK::Domain::ShoppingCart] shopping_cart
@@ -24,6 +26,7 @@ module OnlinePayments::SDK
24
26
  attr_accessor :additional_input
25
27
  attr_accessor :amount_of_money
26
28
  attr_accessor :customer
29
+ attr_accessor :discount
27
30
  attr_accessor :references
28
31
  attr_accessor :shipping
29
32
  attr_accessor :shopping_cart
@@ -35,6 +38,7 @@ module OnlinePayments::SDK
35
38
  hash['additionalInput'] = @additional_input.to_h if @additional_input
36
39
  hash['amountOfMoney'] = @amount_of_money.to_h if @amount_of_money
37
40
  hash['customer'] = @customer.to_h if @customer
41
+ hash['discount'] = @discount.to_h if @discount
38
42
  hash['references'] = @references.to_h if @references
39
43
  hash['shipping'] = @shipping.to_h if @shipping
40
44
  hash['shoppingCart'] = @shopping_cart.to_h if @shopping_cart
@@ -56,6 +60,10 @@ module OnlinePayments::SDK
56
60
  raise TypeError, "value '%s' is not a Hash" % [hash['customer']] unless hash['customer'].is_a? Hash
57
61
  @customer = OnlinePayments::SDK::Domain::Customer.new_from_hash(hash['customer'])
58
62
  end
63
+ if hash.key? 'discount'
64
+ raise TypeError, "value '%s' is not a Hash" % [hash['discount']] unless hash['discount'].is_a? Hash
65
+ @discount = OnlinePayments::SDK::Domain::Discount.new_from_hash(hash['discount'])
66
+ end
59
67
  if hash.key? 'references'
60
68
  raise TypeError, "value '%s' is not a Hash" % [hash['references']] unless hash['references'].is_a? Hash
61
69
  @references = OnlinePayments::SDK::Domain::OrderReferences.new_from_hash(hash['references'])
@@ -9,7 +9,7 @@ module OnlinePayments::SDK
9
9
 
10
10
  # @attr [OnlinePayments::SDK::Domain::AmountOfMoney] amount
11
11
  # @attr [String] merchant_reference
12
- class PaymentLinkOrder < OnlinePayments::SDK::DataObject
12
+ class PaymentLinkOrderInput < OnlinePayments::SDK::DataObject
13
13
  attr_accessor :amount
14
14
  attr_accessor :merchant_reference
15
15
 
@@ -0,0 +1,34 @@
1
+ #
2
+ # This class was auto-generated.
3
+ #
4
+ require 'onlinepayments/sdk/data_object'
5
+ require 'onlinepayments/sdk/domain/amount_of_money'
6
+
7
+ module OnlinePayments::SDK
8
+ module Domain
9
+
10
+ # @attr [OnlinePayments::SDK::Domain::AmountOfMoney] amount
11
+ # @attr [String] merchant_reference
12
+ class PaymentLinkOrderOutput < OnlinePayments::SDK::DataObject
13
+ attr_accessor :amount
14
+ attr_accessor :merchant_reference
15
+
16
+ # @return (Hash)
17
+ def to_h
18
+ hash = super
19
+ hash['amount'] = @amount.to_h if @amount
20
+ hash['merchantReference'] = @merchant_reference unless @merchant_reference.nil?
21
+ hash
22
+ end
23
+
24
+ def from_hash(hash)
25
+ super
26
+ if hash.key? 'amount'
27
+ raise TypeError, "value '%s' is not a Hash" % [hash['amount']] unless hash['amount'].is_a? Hash
28
+ @amount = OnlinePayments::SDK::Domain::AmountOfMoney.new_from_hash(hash['amount'])
29
+ end
30
+ @merchant_reference = hash['merchantReference'] if hash.key? 'merchantReference'
31
+ end
32
+ end
33
+ end
34
+ end
@@ -3,7 +3,7 @@
3
3
  #
4
4
  require 'onlinepayments/sdk/data_object'
5
5
  require 'onlinepayments/sdk/domain/payment_link_event'
6
- require 'onlinepayments/sdk/domain/payment_link_order'
6
+ require 'onlinepayments/sdk/domain/payment_link_order_output'
7
7
 
8
8
  module OnlinePayments::SDK
9
9
  module Domain
@@ -12,7 +12,7 @@ module OnlinePayments::SDK
12
12
  # @attr [String] payment_id
13
13
  # @attr [Array<OnlinePayments::SDK::Domain::PaymentLinkEvent>] payment_link_events
14
14
  # @attr [String] payment_link_id
15
- # @attr [OnlinePayments::SDK::Domain::PaymentLinkOrder] payment_link_order
15
+ # @attr [OnlinePayments::SDK::Domain::PaymentLinkOrderOutput] payment_link_order
16
16
  # @attr [String] recipient_name
17
17
  # @attr [String] redirection_url
18
18
  # @attr [String] status
@@ -54,7 +54,7 @@ module OnlinePayments::SDK
54
54
  @payment_link_id = hash['paymentLinkId'] if hash.key? 'paymentLinkId'
55
55
  if hash.key? 'paymentLinkOrder'
56
56
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentLinkOrder']] unless hash['paymentLinkOrder'].is_a? Hash
57
- @payment_link_order = OnlinePayments::SDK::Domain::PaymentLinkOrder.new_from_hash(hash['paymentLinkOrder'])
57
+ @payment_link_order = OnlinePayments::SDK::Domain::PaymentLinkOrderOutput.new_from_hash(hash['paymentLinkOrder'])
58
58
  end
59
59
  @recipient_name = hash['recipientName'] if hash.key? 'recipientName'
60
60
  @redirection_url = hash['redirectionUrl'] if hash.key? 'redirectionUrl'
@@ -0,0 +1,44 @@
1
+ require 'securerandom'
2
+
3
+ module OnlinePayments::SDK
4
+
5
+ # A representation of a multipart/form-data object
6
+ class MultipartFormDataObject
7
+ def initialize
8
+ @boundary = SecureRandom.uuid
9
+ @content_type = 'multipart/form-data; boundary=' + @boundary
10
+ @values = {}
11
+ @files = {}
12
+ end
13
+
14
+ attr_reader :boundary
15
+ attr_reader :content_type
16
+ attr_reader :values
17
+ attr_reader :files
18
+
19
+ def add_value(parameter_name, value)
20
+ if parameter_name.nil? || parameter_name.strip.empty?
21
+ raise ArgumentError, 'parameter_name is required'
22
+ end
23
+ raise ArgumentError, 'value is required' if value.nil?
24
+ if @values.include?(parameter_name) || @files.include?(parameter_name)
25
+ raise ArgumentError, 'duplicate parameterName: ' + parameter_name
26
+ end
27
+
28
+ @values[parameter_name] = value
29
+ end
30
+
31
+ # Adds a file to the multipart Form Data Object
32
+ def add_file(parameter_name, uploadable_file)
33
+ if parameter_name.nil? || parameter_name.strip.empty?
34
+ raise ArgumentError, 'parameter_name is required'
35
+ end
36
+ raise ArgumentError, 'uploadable_file is required' if uploadable_file.nil?
37
+ if @values.include?(parameter_name) || @files.include?(parameter_name)
38
+ raise ArgumentError, 'duplicate parameterName: ' + parameter_name
39
+ end
40
+
41
+ @files[parameter_name] = uploadable_file
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,9 @@
1
+ module OnlinePayments::SDK
2
+ # A representation of a multipart/form-data request
3
+ class MultipartFormDataRequest
4
+ # @return [OnlinePayments::SDK::MultipartFormDataObject]
5
+ def to_multipart_form_data_object
6
+ raise NotImplementedError
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ module OnlinePayments::SDK
2
+
3
+ # A file that can be uploaded
4
+ #
5
+ # The allowed forms of content are defined by the Connection implementation
6
+ # The default implementation supports file paths and IO objects.
7
+ #
8
+ # @attr_reader [String] file_name The name of the file.
9
+ # @attr_reader [String, IO] content The file's content.
10
+ # @attr_reader [String] content_type The file's content type.
11
+ # @attr_reader [Integer] content_length The file's content length, or -1 if not known.
12
+ class UploadableFile
13
+
14
+ def initialize(file_name, content, content_type, content_length=-1)
15
+ raise ArgumentError.new("file_name is required") if file_name.nil? or !file_name.strip
16
+ raise ArgumentError.new("content is required") if content.nil?
17
+ raise ArgumentError.new("content_type is required") if content_type.nil? or !content_type.strip
18
+
19
+ @file_name = file_name
20
+ @content = content
21
+ @content_type = content_type
22
+ @content_length = [content_length, -1].max
23
+ end
24
+
25
+ attr_reader :file_name
26
+ attr_reader :content
27
+ attr_reader :content_type
28
+ attr_reader :content_length
29
+ end
30
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'onlinepayments-sdk-ruby'
3
- spec.version = '4.16.0'
3
+ spec.version = '4.18.0'
4
4
  spec.authors = ['Worldline Direct support team']
5
5
  spec.email = ['82139942+worldline-direct-support-team@users.noreply.github.com']
6
6
  spec.summary = %q{SDK to communicate with the Online Payments platform using the Online Payments Server API}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onlinepayments-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.16.0
4
+ version: 4.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Worldline Direct support team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-25 00:00:00.000000000 Z
11
+ date: 2024-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -151,6 +151,7 @@ files:
151
151
  - lib/onlinepayments/sdk/domain/account_on_file_attribute.rb
152
152
  - lib/onlinepayments/sdk/domain/account_on_file_display_hints.rb
153
153
  - lib/onlinepayments/sdk/domain/acquirer_information.rb
154
+ - lib/onlinepayments/sdk/domain/acquirer_selection_information.rb
154
155
  - lib/onlinepayments/sdk/domain/additional_order_input.rb
155
156
  - lib/onlinepayments/sdk/domain/address.rb
156
157
  - lib/onlinepayments/sdk/domain/address_personal.rb
@@ -203,6 +204,8 @@ files:
203
204
  - lib/onlinepayments/sdk/domain/create_token_request.rb
204
205
  - lib/onlinepayments/sdk/domain/created_payment_output.rb
205
206
  - lib/onlinepayments/sdk/domain/created_token_response.rb
207
+ - lib/onlinepayments/sdk/domain/credit_card_specific_input_hosted_tokenization.rb
208
+ - lib/onlinepayments/sdk/domain/credit_card_validation_rules_hosted_tokenization.rb
206
209
  - lib/onlinepayments/sdk/domain/currency_conversion.rb
207
210
  - lib/onlinepayments/sdk/domain/currency_conversion_input.rb
208
211
  - lib/onlinepayments/sdk/domain/currency_conversion_request.rb
@@ -222,6 +225,7 @@ files:
222
225
  - lib/onlinepayments/sdk/domain/dcc_proposal.rb
223
226
  - lib/onlinepayments/sdk/domain/decrypted_payment_data.rb
224
227
  - lib/onlinepayments/sdk/domain/directory_entry.rb
228
+ - lib/onlinepayments/sdk/domain/discount.rb
225
229
  - lib/onlinepayments/sdk/domain/empty_validator.rb
226
230
  - lib/onlinepayments/sdk/domain/error_response.rb
227
231
  - lib/onlinepayments/sdk/domain/external_cardholder_authentication_data.rb
@@ -275,7 +279,8 @@ files:
275
279
  - lib/onlinepayments/sdk/domain/payment_details_response.rb
276
280
  - lib/onlinepayments/sdk/domain/payment_error_response.rb
277
281
  - lib/onlinepayments/sdk/domain/payment_link_event.rb
278
- - lib/onlinepayments/sdk/domain/payment_link_order.rb
282
+ - lib/onlinepayments/sdk/domain/payment_link_order_input.rb
283
+ - lib/onlinepayments/sdk/domain/payment_link_order_output.rb
279
284
  - lib/onlinepayments/sdk/domain/payment_link_response.rb
280
285
  - lib/onlinepayments/sdk/domain/payment_output.rb
281
286
  - lib/onlinepayments/sdk/domain/payment_product.rb
@@ -416,6 +421,8 @@ files:
416
421
  - lib/onlinepayments/sdk/merchant/tokens/tokens_client.rb
417
422
  - lib/onlinepayments/sdk/meta_data_provider.rb
418
423
  - lib/onlinepayments/sdk/modules.rb
424
+ - lib/onlinepayments/sdk/multipart_form_data_object.rb
425
+ - lib/onlinepayments/sdk/multipart_form_data_request.rb
419
426
  - lib/onlinepayments/sdk/not_found_exception.rb
420
427
  - lib/onlinepayments/sdk/param_request.rb
421
428
  - lib/onlinepayments/sdk/payment_platform_exception.rb
@@ -426,6 +433,7 @@ files:
426
433
  - lib/onlinepayments/sdk/request_param.rb
427
434
  - lib/onlinepayments/sdk/response_exception.rb
428
435
  - lib/onlinepayments/sdk/response_header.rb
436
+ - lib/onlinepayments/sdk/uploadable_file.rb
429
437
  - lib/onlinepayments/sdk/validation_exception.rb
430
438
  - lib/onlinepayments/sdk/webhooks.rb
431
439
  - lib/onlinepayments/sdk/webhooks/api_version_mismatch_exception.rb