cloudmersive-dlp-api-client 2.2.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 (66) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +124 -0
  4. data/Rakefile +8 -0
  5. data/cloudmersive-dlp-api-client.gemspec +45 -0
  6. data/docs/DetectApi.md +232 -0
  7. data/docs/DlpAdvancedDetectionRequest.md +43 -0
  8. data/docs/DlpAdvancedDetectionResponse.md +44 -0
  9. data/docs/DlpAdvancedDocumentDetectionRequest.md +46 -0
  10. data/docs/DlpAdvancedDocumentRedactionRequest.md +47 -0
  11. data/docs/DlpAdvancedDocumentRedactionResponse.md +46 -0
  12. data/docs/DlpAdvancedRedactionRequest.md +44 -0
  13. data/docs/DlpAdvancedRedactionResponse.md +44 -0
  14. data/docs/DlpDetectionRequest.md +31 -0
  15. data/docs/DlpDetectionResponse.md +31 -0
  16. data/docs/DlpDocumentDetectionRequest.md +33 -0
  17. data/docs/DlpDocumentRedactionRequest.md +34 -0
  18. data/docs/DlpDocumentRedactionResponse.md +33 -0
  19. data/docs/DlpRedactionRequest.md +32 -0
  20. data/docs/DlpRedactionResponse.md +32 -0
  21. data/docs/RedactApi.md +232 -0
  22. data/docs/RedactedPageInfo.md +8 -0
  23. data/git_push.sh +55 -0
  24. data/lib/cloudmersive-dlp-api-client/api/detect_api.rb +223 -0
  25. data/lib/cloudmersive-dlp-api-client/api/redact_api.rb +223 -0
  26. data/lib/cloudmersive-dlp-api-client/api_client.rb +391 -0
  27. data/lib/cloudmersive-dlp-api-client/api_error.rb +38 -0
  28. data/lib/cloudmersive-dlp-api-client/configuration.rb +209 -0
  29. data/lib/cloudmersive-dlp-api-client/models/dlp_advanced_detection_request.rb +536 -0
  30. data/lib/cloudmersive-dlp-api-client/models/dlp_advanced_detection_response.rb +546 -0
  31. data/lib/cloudmersive-dlp-api-client/models/dlp_advanced_document_detection_request.rb +581 -0
  32. data/lib/cloudmersive-dlp-api-client/models/dlp_advanced_document_redaction_request.rb +591 -0
  33. data/lib/cloudmersive-dlp-api-client/models/dlp_advanced_document_redaction_response.rb +583 -0
  34. data/lib/cloudmersive-dlp-api-client/models/dlp_advanced_redaction_request.rb +546 -0
  35. data/lib/cloudmersive-dlp-api-client/models/dlp_advanced_redaction_response.rb +546 -0
  36. data/lib/cloudmersive-dlp-api-client/models/dlp_detection_request.rb +416 -0
  37. data/lib/cloudmersive-dlp-api-client/models/dlp_detection_response.rb +416 -0
  38. data/lib/cloudmersive-dlp-api-client/models/dlp_document_detection_request.rb +451 -0
  39. data/lib/cloudmersive-dlp-api-client/models/dlp_document_redaction_request.rb +461 -0
  40. data/lib/cloudmersive-dlp-api-client/models/dlp_document_redaction_response.rb +453 -0
  41. data/lib/cloudmersive-dlp-api-client/models/dlp_redaction_request.rb +426 -0
  42. data/lib/cloudmersive-dlp-api-client/models/dlp_redaction_response.rb +426 -0
  43. data/lib/cloudmersive-dlp-api-client/models/redacted_page_info.rb +186 -0
  44. data/lib/cloudmersive-dlp-api-client/version.rb +15 -0
  45. data/lib/cloudmersive-dlp-api-client.rb +56 -0
  46. data/spec/api/detect_api_spec.rb +83 -0
  47. data/spec/api/redact_api_spec.rb +83 -0
  48. data/spec/api_client_spec.rb +243 -0
  49. data/spec/configuration_spec.rb +42 -0
  50. data/spec/models/dlp_advanced_detection_request_spec.rb +251 -0
  51. data/spec/models/dlp_advanced_detection_response_spec.rb +257 -0
  52. data/spec/models/dlp_advanced_document_detection_request_spec.rb +269 -0
  53. data/spec/models/dlp_advanced_document_redaction_request_spec.rb +275 -0
  54. data/spec/models/dlp_advanced_document_redaction_response_spec.rb +269 -0
  55. data/spec/models/dlp_advanced_redaction_request_spec.rb +257 -0
  56. data/spec/models/dlp_advanced_redaction_response_spec.rb +257 -0
  57. data/spec/models/dlp_detection_request_spec.rb +179 -0
  58. data/spec/models/dlp_detection_response_spec.rb +179 -0
  59. data/spec/models/dlp_document_detection_request_spec.rb +191 -0
  60. data/spec/models/dlp_document_redaction_request_spec.rb +197 -0
  61. data/spec/models/dlp_document_redaction_response_spec.rb +191 -0
  62. data/spec/models/dlp_redaction_request_spec.rb +185 -0
  63. data/spec/models/dlp_redaction_response_spec.rb +185 -0
  64. data/spec/models/redacted_page_info_spec.rb +41 -0
  65. data/spec/spec_helper.rb +111 -0
  66. metadata +290 -0
@@ -0,0 +1,461 @@
1
+ =begin
2
+ #dlpapi
3
+
4
+ #Easily and directly scan and detect sensitive data (PII) in input text.
5
+
6
+ OpenAPI spec version: v1
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.14
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module CloudmersiveDlpApiClient
16
+ # Request object for DLP document redaction with 23 PII detection types.
17
+ class DlpDocumentRedactionRequest
18
+ # Document file bytes (PDF, DOCX, PNG, or JPG) to scan for PII and redact.
19
+ attr_accessor :input_file
20
+
21
+ # Optional. Name of the input file including extension, used for format detection. If not provided, format is detected from file contents.
22
+ attr_accessor :file_name
23
+
24
+ # Optional. Recognition mode for image processing. Options: null (default), \"Fast\", \"FastPlus\", \"FastMini\".
25
+ attr_accessor :recognition_mode
26
+
27
+ # Redaction mode for PII regions. Options: \"BlackOut\" (default) draws black rectangles over PII rows, \"Blur\" applies Gaussian blur to PII rows, \"BlackOutEntirePage\" blacks out entire dirty pages, \"BlurEntirePage\" blurs entire dirty pages.
28
+ attr_accessor :redaction_mode
29
+
30
+ # Set to true to allow email addresses in the document and not redact them.
31
+ attr_accessor :allow_email_address
32
+
33
+ # Set to true to allow phone numbers in the document and not redact them.
34
+ attr_accessor :allow_phone_number
35
+
36
+ # Set to true to allow street addresses in the document and not redact them.
37
+ attr_accessor :allow_street_address
38
+
39
+ # Set to true to allow person names in the document and not redact them.
40
+ attr_accessor :allow_person_name
41
+
42
+ # Set to true to allow birth dates in the document and not redact them.
43
+ attr_accessor :allow_birth_date
44
+
45
+ # Set to true to allow passport numbers in the document and not redact them.
46
+ attr_accessor :allow_passport_number
47
+
48
+ # Set to true to allow drivers license numbers in the document and not redact them.
49
+ attr_accessor :allow_drivers_license
50
+
51
+ # Set to true to allow social security numbers in the document and not redact them.
52
+ attr_accessor :allow_social_security_number
53
+
54
+ # Set to true to allow taxpayer IDs in the document and not redact them.
55
+ attr_accessor :allow_taxpayer_id
56
+
57
+ # Set to true to allow credit card numbers in the document and not redact them.
58
+ attr_accessor :allow_credit_card_number
59
+
60
+ # Set to true to allow credit card expiration dates in the document and not redact them.
61
+ attr_accessor :allow_credit_card_expiration_date
62
+
63
+ # Set to true to allow credit card verification codes in the document and not redact them.
64
+ attr_accessor :allow_credit_card_verification_code
65
+
66
+ # Set to true to allow bank account numbers in the document and not redact them.
67
+ attr_accessor :allow_bank_account_number
68
+
69
+ # Set to true to allow IBANs in the document and not redact them.
70
+ attr_accessor :allow_iban
71
+
72
+ # Set to true to allow health insurance numbers in the document and not redact them.
73
+ attr_accessor :allow_health_insurance_number
74
+
75
+ # Set to true to allow bearer tokens in the document and not redact them.
76
+ attr_accessor :allow_bearer_token
77
+
78
+ # Set to true to allow HTTP cookies in the document and not redact them.
79
+ attr_accessor :allow_http_cookie
80
+
81
+ # Set to true to allow private keys in the document and not redact them.
82
+ attr_accessor :allow_private_keys
83
+
84
+ # Set to true to allow credentials (usernames/passwords) in the document and not redact them.
85
+ attr_accessor :allow_credentials
86
+
87
+ # Set to true to allow deep web URLs (.onion) in the document and not redact them.
88
+ attr_accessor :allow_deep_web_urls
89
+
90
+ # Set to true to allow source code in the document and not redact it.
91
+ attr_accessor :allow_source_code
92
+
93
+ # Set to true to allow IP addresses in the document and not redact them.
94
+ attr_accessor :allow_ip_address
95
+
96
+ # Set to true to allow MAC addresses in the document and not redact them.
97
+ attr_accessor :allow_mac_address
98
+
99
+ # Attribute mapping from ruby-style variable name to JSON key.
100
+ def self.attribute_map
101
+ {
102
+ :'input_file' => :'InputFile',
103
+ :'file_name' => :'FileName',
104
+ :'recognition_mode' => :'RecognitionMode',
105
+ :'redaction_mode' => :'RedactionMode',
106
+ :'allow_email_address' => :'AllowEmailAddress',
107
+ :'allow_phone_number' => :'AllowPhoneNumber',
108
+ :'allow_street_address' => :'AllowStreetAddress',
109
+ :'allow_person_name' => :'AllowPersonName',
110
+ :'allow_birth_date' => :'AllowBirthDate',
111
+ :'allow_passport_number' => :'AllowPassportNumber',
112
+ :'allow_drivers_license' => :'AllowDriversLicense',
113
+ :'allow_social_security_number' => :'AllowSocialSecurityNumber',
114
+ :'allow_taxpayer_id' => :'AllowTaxpayerID',
115
+ :'allow_credit_card_number' => :'AllowCreditCardNumber',
116
+ :'allow_credit_card_expiration_date' => :'AllowCreditCardExpirationDate',
117
+ :'allow_credit_card_verification_code' => :'AllowCreditCardVerificationCode',
118
+ :'allow_bank_account_number' => :'AllowBankAccountNumber',
119
+ :'allow_iban' => :'AllowIBAN',
120
+ :'allow_health_insurance_number' => :'AllowHealthInsuranceNumber',
121
+ :'allow_bearer_token' => :'AllowBearerToken',
122
+ :'allow_http_cookie' => :'AllowHttpCookie',
123
+ :'allow_private_keys' => :'AllowPrivateKeys',
124
+ :'allow_credentials' => :'AllowCredentials',
125
+ :'allow_deep_web_urls' => :'AllowDeepWebUrls',
126
+ :'allow_source_code' => :'AllowSourceCode',
127
+ :'allow_ip_address' => :'AllowIpAddress',
128
+ :'allow_mac_address' => :'AllowMacAddress'
129
+ }
130
+ end
131
+
132
+ # Attribute type mapping.
133
+ def self.swagger_types
134
+ {
135
+ :'input_file' => :'String',
136
+ :'file_name' => :'String',
137
+ :'recognition_mode' => :'String',
138
+ :'redaction_mode' => :'String',
139
+ :'allow_email_address' => :'BOOLEAN',
140
+ :'allow_phone_number' => :'BOOLEAN',
141
+ :'allow_street_address' => :'BOOLEAN',
142
+ :'allow_person_name' => :'BOOLEAN',
143
+ :'allow_birth_date' => :'BOOLEAN',
144
+ :'allow_passport_number' => :'BOOLEAN',
145
+ :'allow_drivers_license' => :'BOOLEAN',
146
+ :'allow_social_security_number' => :'BOOLEAN',
147
+ :'allow_taxpayer_id' => :'BOOLEAN',
148
+ :'allow_credit_card_number' => :'BOOLEAN',
149
+ :'allow_credit_card_expiration_date' => :'BOOLEAN',
150
+ :'allow_credit_card_verification_code' => :'BOOLEAN',
151
+ :'allow_bank_account_number' => :'BOOLEAN',
152
+ :'allow_iban' => :'BOOLEAN',
153
+ :'allow_health_insurance_number' => :'BOOLEAN',
154
+ :'allow_bearer_token' => :'BOOLEAN',
155
+ :'allow_http_cookie' => :'BOOLEAN',
156
+ :'allow_private_keys' => :'BOOLEAN',
157
+ :'allow_credentials' => :'BOOLEAN',
158
+ :'allow_deep_web_urls' => :'BOOLEAN',
159
+ :'allow_source_code' => :'BOOLEAN',
160
+ :'allow_ip_address' => :'BOOLEAN',
161
+ :'allow_mac_address' => :'BOOLEAN'
162
+ }
163
+ end
164
+
165
+ # Initializes the object
166
+ # @param [Hash] attributes Model attributes in the form of hash
167
+ def initialize(attributes = {})
168
+ return unless attributes.is_a?(Hash)
169
+
170
+ # convert string to symbol for hash key
171
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
172
+
173
+ if attributes.has_key?(:'InputFile')
174
+ self.input_file = attributes[:'InputFile']
175
+ end
176
+
177
+ if attributes.has_key?(:'FileName')
178
+ self.file_name = attributes[:'FileName']
179
+ end
180
+
181
+ if attributes.has_key?(:'RecognitionMode')
182
+ self.recognition_mode = attributes[:'RecognitionMode']
183
+ end
184
+
185
+ if attributes.has_key?(:'RedactionMode')
186
+ self.redaction_mode = attributes[:'RedactionMode']
187
+ end
188
+
189
+ if attributes.has_key?(:'AllowEmailAddress')
190
+ self.allow_email_address = attributes[:'AllowEmailAddress']
191
+ end
192
+
193
+ if attributes.has_key?(:'AllowPhoneNumber')
194
+ self.allow_phone_number = attributes[:'AllowPhoneNumber']
195
+ end
196
+
197
+ if attributes.has_key?(:'AllowStreetAddress')
198
+ self.allow_street_address = attributes[:'AllowStreetAddress']
199
+ end
200
+
201
+ if attributes.has_key?(:'AllowPersonName')
202
+ self.allow_person_name = attributes[:'AllowPersonName']
203
+ end
204
+
205
+ if attributes.has_key?(:'AllowBirthDate')
206
+ self.allow_birth_date = attributes[:'AllowBirthDate']
207
+ end
208
+
209
+ if attributes.has_key?(:'AllowPassportNumber')
210
+ self.allow_passport_number = attributes[:'AllowPassportNumber']
211
+ end
212
+
213
+ if attributes.has_key?(:'AllowDriversLicense')
214
+ self.allow_drivers_license = attributes[:'AllowDriversLicense']
215
+ end
216
+
217
+ if attributes.has_key?(:'AllowSocialSecurityNumber')
218
+ self.allow_social_security_number = attributes[:'AllowSocialSecurityNumber']
219
+ end
220
+
221
+ if attributes.has_key?(:'AllowTaxpayerID')
222
+ self.allow_taxpayer_id = attributes[:'AllowTaxpayerID']
223
+ end
224
+
225
+ if attributes.has_key?(:'AllowCreditCardNumber')
226
+ self.allow_credit_card_number = attributes[:'AllowCreditCardNumber']
227
+ end
228
+
229
+ if attributes.has_key?(:'AllowCreditCardExpirationDate')
230
+ self.allow_credit_card_expiration_date = attributes[:'AllowCreditCardExpirationDate']
231
+ end
232
+
233
+ if attributes.has_key?(:'AllowCreditCardVerificationCode')
234
+ self.allow_credit_card_verification_code = attributes[:'AllowCreditCardVerificationCode']
235
+ end
236
+
237
+ if attributes.has_key?(:'AllowBankAccountNumber')
238
+ self.allow_bank_account_number = attributes[:'AllowBankAccountNumber']
239
+ end
240
+
241
+ if attributes.has_key?(:'AllowIBAN')
242
+ self.allow_iban = attributes[:'AllowIBAN']
243
+ end
244
+
245
+ if attributes.has_key?(:'AllowHealthInsuranceNumber')
246
+ self.allow_health_insurance_number = attributes[:'AllowHealthInsuranceNumber']
247
+ end
248
+
249
+ if attributes.has_key?(:'AllowBearerToken')
250
+ self.allow_bearer_token = attributes[:'AllowBearerToken']
251
+ end
252
+
253
+ if attributes.has_key?(:'AllowHttpCookie')
254
+ self.allow_http_cookie = attributes[:'AllowHttpCookie']
255
+ end
256
+
257
+ if attributes.has_key?(:'AllowPrivateKeys')
258
+ self.allow_private_keys = attributes[:'AllowPrivateKeys']
259
+ end
260
+
261
+ if attributes.has_key?(:'AllowCredentials')
262
+ self.allow_credentials = attributes[:'AllowCredentials']
263
+ end
264
+
265
+ if attributes.has_key?(:'AllowDeepWebUrls')
266
+ self.allow_deep_web_urls = attributes[:'AllowDeepWebUrls']
267
+ end
268
+
269
+ if attributes.has_key?(:'AllowSourceCode')
270
+ self.allow_source_code = attributes[:'AllowSourceCode']
271
+ end
272
+
273
+ if attributes.has_key?(:'AllowIpAddress')
274
+ self.allow_ip_address = attributes[:'AllowIpAddress']
275
+ end
276
+
277
+ if attributes.has_key?(:'AllowMacAddress')
278
+ self.allow_mac_address = attributes[:'AllowMacAddress']
279
+ end
280
+ end
281
+
282
+ # Show invalid properties with the reasons. Usually used together with valid?
283
+ # @return Array for valid properties with the reasons
284
+ def list_invalid_properties
285
+ invalid_properties = Array.new
286
+ if !@input_file.nil? && @input_file !~ Regexp.new(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/)
287
+ invalid_properties.push('invalid value for "input_file", must conform to the pattern /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.')
288
+ end
289
+
290
+ invalid_properties
291
+ end
292
+
293
+ # Check to see if the all the properties in the model are valid
294
+ # @return true if the model is valid
295
+ def valid?
296
+ return false if !@input_file.nil? && @input_file !~ Regexp.new(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/)
297
+ true
298
+ end
299
+
300
+ # Custom attribute writer method with validation
301
+ # @param [Object] input_file Value to be assigned
302
+ def input_file=(input_file)
303
+ if !input_file.nil? && input_file !~ Regexp.new(/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/)
304
+ fail ArgumentError, 'invalid value for "input_file", must conform to the pattern /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.'
305
+ end
306
+
307
+ @input_file = input_file
308
+ end
309
+
310
+ # Checks equality by comparing each attribute.
311
+ # @param [Object] Object to be compared
312
+ def ==(o)
313
+ return true if self.equal?(o)
314
+ self.class == o.class &&
315
+ input_file == o.input_file &&
316
+ file_name == o.file_name &&
317
+ recognition_mode == o.recognition_mode &&
318
+ redaction_mode == o.redaction_mode &&
319
+ allow_email_address == o.allow_email_address &&
320
+ allow_phone_number == o.allow_phone_number &&
321
+ allow_street_address == o.allow_street_address &&
322
+ allow_person_name == o.allow_person_name &&
323
+ allow_birth_date == o.allow_birth_date &&
324
+ allow_passport_number == o.allow_passport_number &&
325
+ allow_drivers_license == o.allow_drivers_license &&
326
+ allow_social_security_number == o.allow_social_security_number &&
327
+ allow_taxpayer_id == o.allow_taxpayer_id &&
328
+ allow_credit_card_number == o.allow_credit_card_number &&
329
+ allow_credit_card_expiration_date == o.allow_credit_card_expiration_date &&
330
+ allow_credit_card_verification_code == o.allow_credit_card_verification_code &&
331
+ allow_bank_account_number == o.allow_bank_account_number &&
332
+ allow_iban == o.allow_iban &&
333
+ allow_health_insurance_number == o.allow_health_insurance_number &&
334
+ allow_bearer_token == o.allow_bearer_token &&
335
+ allow_http_cookie == o.allow_http_cookie &&
336
+ allow_private_keys == o.allow_private_keys &&
337
+ allow_credentials == o.allow_credentials &&
338
+ allow_deep_web_urls == o.allow_deep_web_urls &&
339
+ allow_source_code == o.allow_source_code &&
340
+ allow_ip_address == o.allow_ip_address &&
341
+ allow_mac_address == o.allow_mac_address
342
+ end
343
+
344
+ # @see the `==` method
345
+ # @param [Object] Object to be compared
346
+ def eql?(o)
347
+ self == o
348
+ end
349
+
350
+ # Calculates hash code according to all attributes.
351
+ # @return [Fixnum] Hash code
352
+ def hash
353
+ [input_file, file_name, recognition_mode, redaction_mode, allow_email_address, allow_phone_number, allow_street_address, allow_person_name, allow_birth_date, allow_passport_number, allow_drivers_license, allow_social_security_number, allow_taxpayer_id, allow_credit_card_number, allow_credit_card_expiration_date, allow_credit_card_verification_code, allow_bank_account_number, allow_iban, allow_health_insurance_number, allow_bearer_token, allow_http_cookie, allow_private_keys, allow_credentials, allow_deep_web_urls, allow_source_code, allow_ip_address, allow_mac_address].hash
354
+ end
355
+
356
+ # Builds the object from hash
357
+ # @param [Hash] attributes Model attributes in the form of hash
358
+ # @return [Object] Returns the model itself
359
+ def build_from_hash(attributes)
360
+ return nil unless attributes.is_a?(Hash)
361
+ self.class.swagger_types.each_pair do |key, type|
362
+ if type =~ /\AArray<(.*)>/i
363
+ # check to ensure the input is an array given that the attribute
364
+ # is documented as an array but the input is not
365
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
366
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
367
+ end
368
+ elsif !attributes[self.class.attribute_map[key]].nil?
369
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
370
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
371
+ end
372
+
373
+ self
374
+ end
375
+
376
+ # Deserializes the data based on type
377
+ # @param string type Data type
378
+ # @param string value Value to be deserialized
379
+ # @return [Object] Deserialized data
380
+ def _deserialize(type, value)
381
+ case type.to_sym
382
+ when :DateTime
383
+ DateTime.parse(value)
384
+ when :Date
385
+ Date.parse(value)
386
+ when :String
387
+ value.to_s
388
+ when :Integer
389
+ value.to_i
390
+ when :Float
391
+ value.to_f
392
+ when :BOOLEAN
393
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
394
+ true
395
+ else
396
+ false
397
+ end
398
+ when :Object
399
+ # generic object (usually a Hash), return directly
400
+ value
401
+ when /\AArray<(?<inner_type>.+)>\z/
402
+ inner_type = Regexp.last_match[:inner_type]
403
+ value.map { |v| _deserialize(inner_type, v) }
404
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
405
+ k_type = Regexp.last_match[:k_type]
406
+ v_type = Regexp.last_match[:v_type]
407
+ {}.tap do |hash|
408
+ value.each do |k, v|
409
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
410
+ end
411
+ end
412
+ else # model
413
+ temp_model = CloudmersiveDlpApiClient.const_get(type).new
414
+ temp_model.build_from_hash(value)
415
+ end
416
+ end
417
+
418
+ # Returns the string representation of the object
419
+ # @return [String] String presentation of the object
420
+ def to_s
421
+ to_hash.to_s
422
+ end
423
+
424
+ # to_body is an alias to to_hash (backward compatibility)
425
+ # @return [Hash] Returns the object in the form of hash
426
+ def to_body
427
+ to_hash
428
+ end
429
+
430
+ # Returns the object in the form of hash
431
+ # @return [Hash] Returns the object in the form of hash
432
+ def to_hash
433
+ hash = {}
434
+ self.class.attribute_map.each_pair do |attr, param|
435
+ value = self.send(attr)
436
+ next if value.nil?
437
+ hash[param] = _to_hash(value)
438
+ end
439
+ hash
440
+ end
441
+
442
+ # Outputs non-array value in the form of hash
443
+ # For object, use to_hash. Otherwise, just return the value
444
+ # @param [Object] value Any valid value
445
+ # @return [Hash] Returns the value in the form of hash
446
+ def _to_hash(value)
447
+ if value.is_a?(Array)
448
+ value.compact.map { |v| _to_hash(v) }
449
+ elsif value.is_a?(Hash)
450
+ {}.tap do |hash|
451
+ value.each { |k, v| hash[k] = _to_hash(v) }
452
+ end
453
+ elsif value.respond_to? :to_hash
454
+ value.to_hash
455
+ else
456
+ value
457
+ end
458
+ end
459
+
460
+ end
461
+ end