@microblink/blinkid-react-native 7.6.2 → 7.7.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 (82) hide show
  1. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  2. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  3. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  4. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  6. package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
  7. package/android/.project +28 -0
  8. package/android/build.gradle +1 -1
  9. package/android/src/main/java/com/microblink/blinkid/reactnative/BlinkIdDeserializationUtilities.kt +3 -5
  10. package/android/src/main/java/com/microblink/blinkid/reactnative/BlinkIdSerializationUtilities.kt +781 -710
  11. package/android/src/main/java/com/microblink/blinkid/reactnative/BlinkidReactNativeModule.kt +4 -4
  12. package/ios/BlinkIdSerializationUtilities.swift +694 -657
  13. package/ios/BlinkidReactNativeModule.swift +2 -2
  14. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/BlinkID +0 -0
  15. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Headers/BlinkID-Swift.h +1925 -780
  16. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Info.plist +0 -0
  17. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.abi.json +10139 -7306
  18. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.private.swiftinterface +194 -122
  19. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  20. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.swiftinterface +194 -122
  21. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/PrivateHeaders/SwiftCxxBridge.hpp +2 -0
  22. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/_CodeSignature/CodeResources +17 -17
  23. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/conan.xcconfig +3 -3
  24. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/BlinkID +0 -0
  25. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Headers/BlinkID-Swift.h +4034 -1744
  26. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Info.plist +0 -0
  27. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.abi.json +10139 -7306
  28. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +194 -122
  29. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  30. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.swiftinterface +194 -122
  31. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.abi.json +10139 -7306
  32. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +194 -122
  33. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  34. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +194 -122
  35. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/PrivateHeaders/SwiftCxxBridge.hpp +2 -0
  36. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/_CodeSignature/CodeResources +27 -27
  37. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/conan.xcconfig +3 -3
  38. package/ios/Frameworks/BlinkIDUX.xcframework/Info.plist +5 -5
  39. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeDirectory +0 -0
  40. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeResources +52 -635
  41. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeSignature +0 -0
  42. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX +0 -0
  43. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Assets.car +0 -0
  44. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Info.plist +0 -0
  45. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Info.plist +0 -0
  46. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.abi.json +7045 -4222
  47. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.package.swiftinterface +188 -90
  48. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.private.swiftinterface +188 -90
  49. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  50. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.swiftinterface +188 -90
  51. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX +0 -0
  52. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Assets.car +0 -0
  53. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Info.plist +0 -0
  54. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeDirectory +0 -0
  55. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeResources +2 -234
  56. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Info.plist +0 -0
  57. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.abi.json +7045 -4222
  58. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.package.swiftinterface +188 -90
  59. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +188 -90
  60. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  61. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.swiftinterface +188 -90
  62. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.abi.json +7045 -4222
  63. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.package.swiftinterface +188 -90
  64. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +188 -90
  65. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  66. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +188 -90
  67. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/_CodeSignature/CodeResources +1 -1
  68. package/lib/module/blinkIdResult.js +58 -0
  69. package/lib/module/blinkIdResult.js.map +1 -1
  70. package/lib/module/types.js +78 -3
  71. package/lib/module/types.js.map +1 -1
  72. package/lib/typescript/src/blinkIdResult.d.ts +27 -1
  73. package/lib/typescript/src/blinkIdResult.d.ts.map +1 -1
  74. package/lib/typescript/src/types.d.ts +71 -6
  75. package/lib/typescript/src/types.d.ts.map +1 -1
  76. package/package.json +1 -1
  77. package/src/android/.project +28 -0
  78. package/src/blinkIdResult.ts +65 -0
  79. package/src/blinkIdSettings.ts +1 -1
  80. package/src/types.ts +120 -12
  81. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
  82. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeRequirements-1 +0 -0
@@ -5,737 +5,808 @@ import com.microblink.blinkid.core.result.AddressDetailedInfo
5
5
  import com.microblink.blinkid.core.result.AlphabetType
6
6
  import com.microblink.blinkid.core.result.DataMatchFieldState
7
7
  import com.microblink.blinkid.core.result.DataMatchResult
8
- import com.microblink.blinkid.core.result.DateResult
9
8
  import com.microblink.blinkid.core.result.DependentInfo
10
9
  import com.microblink.blinkid.core.result.DriverLicenseDetailedInfo
11
- import com.microblink.blinkid.core.result.Rectangle
12
10
  import com.microblink.blinkid.core.result.SingleSideScanningResult
13
11
  import com.microblink.blinkid.core.result.StringResult
14
12
  import com.microblink.blinkid.core.result.VehicleClassInfo
15
13
  import com.microblink.blinkid.core.result.barcode.BarcodeData
16
14
  import com.microblink.blinkid.core.result.barcode.BarcodeResult
17
15
  import com.microblink.blinkid.core.result.classinfo.DocumentClassInfo
18
- import com.microblink.blinkid.core.result.image.DetailedCroppedImageResult
19
16
  import com.microblink.blinkid.core.result.mrz.MrzResult
20
17
  import com.microblink.blinkid.core.result.viz.VizResult
21
18
  import com.microblink.blinkid.core.session.BlinkIdScanningResult
22
19
  import org.json.JSONObject
23
20
  import java.io.ByteArrayOutputStream
24
21
  import android.util.Base64
25
- import com.microblink.blinkid.core.result.ScanningSide
22
+ import com.microblink.blinkid.core.result.ParentInfo
26
23
  import com.microblink.blinkid.core.result.barcode.BarcodeElement
24
+ import com.microblink.core.result.DateResult
25
+ import com.microblink.core.result.DetailedCroppedImageResult
26
+ import com.microblink.core.result.Rectangle
27
+ import com.microblink.core.result.ScanningSide
27
28
  import org.json.JSONArray
28
29
 
29
30
  object BlinkIdSerializationUtilities {
30
- fun serializeBlinkIdScanningResult(scanningResult: BlinkIdScanningResult?): String {
31
- val scanningResultJson: JSONObject = JSONObject()
32
-
33
- scanningResult?.mode.let {
34
- scanningResultJson.put("recognitionMode", it?.name)
35
- }
36
- scanningResult?.documentClassInfo?.let {
37
- scanningResultJson.put("documentClassInfo", serializeDocumentClassInfo(it))
38
- }
39
- scanningResult?.dataMatchResult?.let {
40
- scanningResultJson.put("dataMatchResult", serializeDataMatchResult(it))
41
- }
42
- scanningResult?.firstName?.let {
43
- scanningResultJson.put("firstName", serializeStringResult(it))
44
- }
45
- scanningResult?.lastName?.let {
46
- scanningResultJson.put("lastName", serializeStringResult(it))
47
- }
48
- scanningResult?.fullName?.let {
49
- scanningResultJson.put("fullName", serializeStringResult(it))
50
- }
51
- scanningResult?.additionalNameInformation?.let {
52
- scanningResultJson.put("additionalNameInformation", serializeStringResult(it))
53
- }
54
- scanningResult?.localizedName?.let {
55
- scanningResultJson.put("localizedName", serializeStringResult(it))
56
- }
57
- scanningResult?.fathersName?.let {
58
- scanningResultJson.put("fathersName", serializeStringResult(it))
59
- }
60
- scanningResult?.mothersName?.let {
61
- scanningResultJson.put("mothersName", serializeStringResult(it))
62
- }
63
- scanningResult?.address?.let {
64
- scanningResultJson.put("address", serializeStringResult(it))
65
- }
66
- scanningResult?.additionalAddressInformation?.let {
67
- scanningResultJson.put("additionalAddressInformation", serializeStringResult(it))
68
- }
69
- scanningResult?.additionalOptionalAddressInformation?.let {
70
- scanningResultJson.put("additionalOptionalAddressInformation", serializeStringResult(it))
71
- }
72
- scanningResult?.placeOfBirth?.let {
73
- scanningResultJson.put("placeOfBirth", serializeStringResult(it))
74
- }
75
- scanningResult?.nationality?.let {
76
- scanningResultJson.put("nationality", serializeStringResult(it))
77
- }
78
- scanningResult?.race?.let {
79
- scanningResultJson.put("race", serializeStringResult(it))
80
- }
81
- scanningResult?.religion?.let {
82
- scanningResultJson.put("religion", serializeStringResult(it))
83
- }
84
- scanningResult?.profession?.let {
85
- scanningResultJson.put("profession", serializeStringResult(it))
86
- }
87
- scanningResult?.maritalStatus?.let {
88
- scanningResultJson.put("maritalStatus", serializeStringResult(it))
89
- }
90
- scanningResult?.residentialStatus?.let {
91
- scanningResultJson.put("residentialStatus", serializeStringResult(it))
92
- }
93
- scanningResult?.employer?.let {
94
- scanningResultJson.put("employer", serializeStringResult(it))
95
- }
96
- scanningResult?.sex?.let {
97
- scanningResultJson.put("sex", serializeStringResult(it))
98
- }
99
- scanningResult?.sponsor?.let {
100
- scanningResultJson.put("sponsor", serializeStringResult(it))
101
- }
102
- scanningResult?.bloodType?.let {
103
- scanningResultJson.put("bloodType", serializeStringResult(it))
104
- }
105
- scanningResult?.documentNumber?.let {
106
- scanningResultJson.put("documentNumber", serializeStringResult(it))
107
- }
108
- scanningResult?.personalIdNumber?.let {
109
- scanningResultJson.put("personalIdNumber", serializeStringResult(it))
110
- }
111
- scanningResult?.documentAdditionalNumber?.let {
112
- scanningResultJson.put("documentAdditionalNumber", serializeStringResult(it))
113
- }
114
- scanningResult?.documentOptionalAdditionalNumber?.let {
115
- scanningResultJson.put("documentOptionalAdditionalNumber", serializeStringResult(it))
116
- }
117
- scanningResult?.additionalPersonalIdNumber?.let {
118
- scanningResultJson.put("additionalPersonalIdNumber", serializeStringResult(it))
119
- }
120
- scanningResult?.issuingAuthority?.let {
121
- scanningResultJson.put("issuingAuthority", serializeStringResult(it))
122
- }
123
- scanningResult?.documentSubtype?.let {
124
- scanningResultJson.put("documentSubtype", serializeStringResult(it))
125
- }
126
- scanningResult?.remarks?.let {
127
- scanningResultJson.put("remarks", serializeStringResult(it))
128
- }
129
- scanningResult?.residencePermitType?.let {
130
- scanningResultJson.put("residencePermitType", serializeStringResult(it))
131
- }
132
- scanningResult?.manufacturingYear?.let {
133
- scanningResultJson.put("manufacturingYear", serializeStringResult(it))
134
- }
135
- scanningResult?.vehicleType?.let {
136
- scanningResultJson.put("vehicleType", serializeStringResult(it))
137
- }
138
- scanningResult?.vehicleOwner?.let {
139
- scanningResultJson.put("vehicleOwner", serializeStringResult(it))
140
- }
141
- scanningResult?.eligibilityCategory?.let {
142
- scanningResultJson.put("eligibilityCategory", serializeStringResult(it))
143
- }
144
- scanningResult?.specificDocumentValidity?.let {
145
- scanningResultJson.put("specificDocumentValidity", serializeStringResult(it))
146
- }
147
- scanningResult?.visaType?.let {
148
- scanningResultJson.put("visaType", serializeStringResult(it))
149
- }
150
- scanningResult?.countryCode?.let {
151
- scanningResultJson.put("countryCode", serializeStringResult(it))
152
- }
153
- scanningResult?.certificateNumber?.let {
154
- scanningResultJson.put("certificateNumber", serializeStringResult(it))
155
- }
156
- scanningResult?.nationalInsuranceNumber?.let {
157
- scanningResultJson.put("nationalInsuranceNumber", serializeStringResult(it))
158
- }
159
- scanningResult?.dateOfBirth?.let {
160
- scanningResultJson.put("dateOfBirth", serializeDateResult(it))
161
- }
162
- scanningResult?.dateOfIssue?.let {
163
- scanningResultJson.put("dateOfIssue", serializeDateResult(it))
164
- }
165
- scanningResult?.dateOfExpiry?.let {
166
- scanningResultJson.put("dateOfExpiry", serializeDateResult(it))
167
- }
168
- scanningResult?.dateOfEntry?.let {
169
- scanningResultJson.put("dateOfEntry", serializeDateResult(it))
170
- }
171
- scanningResult?.localityCode?.let {
172
- scanningResultJson.put("localityCode", serializeStringResult(it))
173
- }
174
- scanningResult?.maidenName?.let {
175
- scanningResultJson.put("maidenName", serializeStringResult(it))
176
- }
177
- scanningResult?.municipalityCode?.let {
178
- scanningResultJson.put("municipalityCode", serializeStringResult(it))
179
- }
180
- scanningResult?.municipalityOfRegistration?.let {
181
- scanningResultJson.put("municipalityOfRegistration", serializeStringResult(it))
182
- }
183
- scanningResult?.pollingStationCode?.let {
184
- scanningResultJson.put("pollingStationCode", serializeStringResult(it))
185
- }
186
- scanningResult?.registrationCenterCode?.let {
187
- scanningResultJson.put("registrationCenterCode", serializeStringResult(it))
188
- }
189
- scanningResult?.sectionCode?.let {
190
- scanningResultJson.put("sectionCode", serializeStringResult(it))
191
- }
192
- scanningResult?.stateCode?.let {
193
- scanningResultJson.put("stateCode", serializeStringResult(it))
194
- }
195
- scanningResult?.stateName?.let {
196
- scanningResultJson.put("stateName", serializeStringResult(it))
197
- }
198
- scanningResult?.dateOfExpiryPermanent?.let {
199
- scanningResultJson.put("dateOfExpiryPermanent", it)
200
- }
201
- scanningResult?.driverLicenseDetailedInfo?.let {
202
- scanningResultJson.put("driverLicenseDetailedInfo", serializeDriverLicenseDetailedInfo(it))
203
- }
204
- scanningResult?.dependentsInfo?.let {
205
- scanningResultJson.put(
206
- "dependentsInfo",
207
- JSONArray(it.map { dependentInfo -> serializeDependentInfo(dependentInfo) })
208
- )
209
- }
210
- scanningResult?.subResults?.let {
211
- scanningResultJson.put(
212
- "subResults",
213
- JSONArray(it.map { subResult -> serializeSubResult(subResult) })
214
- )
215
- }
216
- scanningResult?.inputImage(ScanningSide.First)?.let {
217
- scanningResultJson.put("firstInputImage", encodeBase64Image(it.bitmap))
218
- }
219
- scanningResult?.inputImage(ScanningSide.Second)?.let {
220
- scanningResultJson.put("secondInputImage", encodeBase64Image(it.bitmap))
221
- }
222
- scanningResult?.barcodeInputImage()?.let {
223
- scanningResultJson.put("barcodeInputImage", encodeBase64Image(it.bitmap))
224
- }
225
- scanningResult?.documentImage(ScanningSide.First)?.let {
226
- scanningResultJson.put("firstDocumentImage", encodeBase64Image(it.bitmap))
227
- }
228
- scanningResult?.documentImage(ScanningSide.Second)?.let {
229
- scanningResultJson.put("secondDocumentImage", encodeBase64Image(it.bitmap))
230
- }
231
- scanningResult?.faceImage()?.let {
232
- scanningResultJson.put("faceImage", serializeDetailedCroppedImageResult(it))
233
- }
234
- scanningResult?.signatureImage()?.let {
235
- scanningResultJson.put("signatureImage", serializeDetailedCroppedImageResult(it))
236
- }
237
-
238
- return scanningResultJson.toString()
239
- }
240
-
241
- private fun <T> serializeDateResult(dateResult: DateResult<T>?): JSONObject {
242
- val dateResultJson = JSONObject()
243
-
244
- dateResultJson.put("date", serializeSimpleDateResult(dateResult));
245
- dateResultJson.put("filledByDomainKnowledge", dateResult?.filledByDomainKnowledge)
246
- dateResultJson.put("successfullyParsed", dateResult?.successfullyParsed)
247
- dateResultJson.put("originalString", serializeStringType(dateResult?.originalString))
248
- return dateResultJson
249
- }
250
-
251
- private fun <T> serializeSimpleDateResult(dateResult: DateResult<T>?): JSONObject {
252
- val simpleDateResultJson = JSONObject()
253
- dateResult?.day?.let {
254
- simpleDateResultJson.put("day", it)
255
- }
256
- dateResult?.month?.let {
257
- simpleDateResultJson.put("month", it)
258
- }
259
- dateResult?.year?.let {
260
- simpleDateResultJson.put("year", it)
261
- }
262
- return simpleDateResultJson;
263
- }
264
-
265
- private fun serializeDocumentClassInfo(documentClassInfo: DocumentClassInfo): JSONObject {
266
- val documentClassInfoJson = JSONObject()
267
- documentClassInfo.country?.name?.let {
268
- documentClassInfoJson.put("country", it.replaceFirstChar { char -> char.lowercase() })
269
- }
270
- documentClassInfo.region?.name?.let {
271
- documentClassInfoJson.put("region", it.replaceFirstChar { char -> char.lowercase() })
272
- }
273
- documentClassInfo.type?.name?.let {
274
- documentClassInfoJson.put("documentType", it.replaceFirstChar { char -> char.lowercase() })
275
- }
276
- documentClassInfo.countryName?.let {
277
- documentClassInfoJson.put("countryName", it)
278
- }
279
- documentClassInfo.isoAlpha2CountryCode?.let {
280
- documentClassInfoJson.put("isoAlpha2CountryCode", it)
281
- }
282
- documentClassInfo.isoAlpha3CountryCode?.let {
283
- documentClassInfoJson.put("isoAlpha3CountryCode", it)
284
- }
285
- return documentClassInfoJson
286
- }
287
-
288
- private fun serializeDataMatchResult(dataMatchResult: DataMatchResult): JSONObject {
289
- val dataMatchResultJson = JSONObject()
290
-
291
- val statesArray = JSONArray()
292
- dataMatchResult.statePerField.forEach {
293
- statesArray.put(serializeDataMatchField(it))
294
- }
295
-
296
- dataMatchResultJson.put("states", statesArray)
297
- dataMatchResultJson.put("overallState", dataMatchResult.overallState.ordinal)
298
-
299
- return dataMatchResultJson
300
- }
301
-
302
- private fun serializeDataMatchField(dataMatchField: DataMatchFieldState): JSONObject {
303
- val dataMatchFieldJson = JSONObject()
304
- dataMatchFieldJson.put("field", dataMatchField.fieldType.ordinal)
305
- dataMatchFieldJson.put("state", dataMatchField.state.ordinal)
306
- return dataMatchFieldJson
307
- }
308
-
309
- private fun serializeStringResult(stringResult: StringResult): JSONObject {
310
- val stringResultJson = JSONObject()
311
- stringResultJson.put("value", stringResult.value(AlphabetType.Latin))
312
- stringResultJson.put("latin", stringResult.value(AlphabetType.Latin))
313
- stringResultJson.put("arabic", stringResult.value(AlphabetType.Arabic))
314
- stringResultJson.put("cyrillic", stringResult.value(AlphabetType.Cyrillic))
315
- stringResultJson.put("greek", stringResult.value(AlphabetType.Greek))
316
-
317
- val locationJson = JSONObject()
318
- stringResult.location(AlphabetType.Latin)?.let {
319
- locationJson.put("latin", serializeLocation(it))
320
- }
321
- stringResult.location(AlphabetType.Arabic)?.let {
322
- locationJson.put("arabic", serializeLocation(it))
323
- }
324
- stringResult.location(AlphabetType.Cyrillic)?.let {
325
- locationJson.put("cyrillic", serializeLocation(it))
326
- }
327
- stringResult.location(AlphabetType.Greek)?.let {
328
- locationJson.put("greek", serializeLocation(it))
329
- }
330
- stringResultJson.put("location", locationJson)
331
-
332
- val sideJson = JSONObject()
333
- stringResult.side(AlphabetType.Latin)?.let {
334
- sideJson.put("latin", it.ordinal)
335
- }
336
- stringResult.side(AlphabetType.Arabic)?.let {
337
- sideJson.put("arabic", it.ordinal)
338
- }
339
- stringResult.side(AlphabetType.Cyrillic)?.let {
340
- sideJson.put("cyrillic", it.ordinal)
341
- }
342
- stringResult.side(AlphabetType.Greek)?.let {
343
- sideJson.put("greek", it.ordinal)
344
- }
345
- stringResultJson.put("side", sideJson)
346
-
347
- return stringResultJson
348
- }
349
-
350
- private fun serializeLocation(rectangle: Rectangle): JSONObject {
351
- val locationJson = JSONObject()
352
- locationJson.put("x", rectangle.x.toDouble())
353
- locationJson.put("y", rectangle.y.toDouble())
354
- locationJson.put("width", rectangle.width.toDouble())
355
- locationJson.put("height", rectangle.height.toDouble())
356
- return locationJson
357
- }
358
-
359
- private fun <T> serializeDriverLicenseDetailedInfo(
360
- driverLicenseDetailedInfo: DriverLicenseDetailedInfo<T>?
361
- ): JSONObject {
362
- val json = JSONObject()
363
-
364
- json.put("conditions", serializeStringType(driverLicenseDetailedInfo?.conditions))
365
- json.put("endorsements", serializeStringType(driverLicenseDetailedInfo?.endorsements))
366
- json.put("restrictions", serializeStringType(driverLicenseDetailedInfo?.restrictions))
367
- json.put("vehicleClass", serializeStringType(driverLicenseDetailedInfo?.vehicleClass))
368
-
369
- driverLicenseDetailedInfo?.vehicleClassesInfo?.let { vehicleClasses ->
370
- val array = JSONArray()
371
- for (info in vehicleClasses) {
372
- array.put(serializeVehicleClassInfo(info))
373
- }
374
- json.put("vehicleClassesInfo", array)
375
- }
376
-
377
- return json
378
- }
379
-
380
- private fun <T> serializeVehicleClassInfo(vehicleClassInfo: VehicleClassInfo<T>): JSONObject {
381
- val vehicleClassInfoJson = JSONObject()
382
- vehicleClassInfoJson.put("effectiveDate", serializeDateResult(vehicleClassInfo.effectiveDate))
383
- vehicleClassInfoJson.put("expiryDate", serializeDateResult(vehicleClassInfo.expiryDate))
384
- vehicleClassInfoJson.put("licenceType", serializeStringType(vehicleClassInfo.licenceType))
385
- vehicleClassInfoJson.put("vehicleClass", serializeStringType(vehicleClassInfo.vehicleClass))
386
- return vehicleClassInfoJson
387
- }
388
-
389
- private fun serializeDependentInfo(dependentInfo: DependentInfo): JSONObject {
390
- val dependentInfoJson = JSONObject()
391
-
392
- dependentInfo.fullName?.let {
393
- dependentInfoJson.put("fullName", serializeStringResult(it))
394
- }
395
- dependentInfo.sex?.let {
396
- dependentInfoJson.put("sex", serializeStringResult(it))
397
- }
398
- dependentInfo.dateOfBirth?.let {
399
- dependentInfoJson.put("dateOfBirth", serializeDateResult(it))
400
- }
401
-
402
- dependentInfo.documentNumber?.let {
403
- dependentInfoJson.put("documentNumber", serializeStringResult(it))
404
- }
405
-
406
- return dependentInfoJson
407
- }
408
-
409
- private fun serializeSubResult(subResult: SingleSideScanningResult): JSONObject {
410
- val subResultJson = JSONObject()
411
- subResultJson.put("barcode", serializeBarcodeResult(subResult.barcode))
412
- subResultJson.put("barcodeInputImage", encodeBase64Image(subResult.barcodeInputImage?.bitmap))
413
- subResultJson.put("documentImage", encodeBase64Image(subResult.documentImage?.bitmap))
414
- subResultJson.put("faceImage", serializeDetailedCroppedImageResult(subResult.faceImage))
415
- subResultJson.put("inputImage", encodeBase64Image(subResult.inputImage?.bitmap))
416
- subResultJson.put("mrz", serializeMrzResult(subResult.mrz))
417
- subResultJson.put(
418
- "signatureImage",
419
- serializeDetailedCroppedImageResult(subResult.signatureImage)
420
- )
421
- subResultJson.put("viz", serializeVizResult(subResult.viz))
422
- return subResultJson
423
- }
424
-
425
- private fun serializeBarcodeResult(barcodeResult: BarcodeResult?): JSONObject {
426
- val barcodeResultJson = JSONObject()
427
- barcodeResultJson.put("additionalNameInformation", barcodeResult?.additionalNameInformation)
428
- barcodeResultJson.put("address", barcodeResult?.address)
429
- barcodeResultJson.put(
430
- "addressDetailedInfo",
431
- serializeAddressDetailedInfo(barcodeResult?.addressDetailedInfo)
432
- )
433
- barcodeResultJson.put("barcodeData", serializeBarcodeData(barcodeResult?.barcodeData))
434
- barcodeResultJson.put("dateOfBirth", serializeDateResult(barcodeResult?.dateOfBirth))
435
- barcodeResultJson.put("dateOfExpiry", serializeDateResult(barcodeResult?.dateOfExpiry))
436
- barcodeResultJson.put("dateOfIssue", serializeDateResult(barcodeResult?.dateOfIssue))
437
- barcodeResultJson.put("documentAdditionalNumber", barcodeResult?.documentAdditionalNumber)
438
- barcodeResultJson.put("documentNumber", barcodeResult?.documentNumber)
439
- barcodeResultJson.put(
440
- "driverLicenseDetailedInfo",
441
- serializeDriverLicenseDetailedInfo(barcodeResult?.driverLicenseDetailedInfo)
442
- )
443
- barcodeResultJson.put("employer", barcodeResult?.employer)
444
- barcodeResultJson.put("firstName", barcodeResult?.firstName)
445
- barcodeResultJson.put("fullName", barcodeResult?.fullName)
446
- barcodeResultJson.put("issuingAuthority", barcodeResult?.issuingAuthority)
447
- barcodeResultJson.put("lastName", barcodeResult?.lastName)
448
- barcodeResultJson.put("maritalStatus", barcodeResult?.maritalStatus)
449
- barcodeResultJson.put("middleName", barcodeResult?.middleName)
450
- barcodeResultJson.put("nationality", barcodeResult?.nationality)
451
- barcodeResultJson.put("personalIdNumber", barcodeResult?.personalIdNumber)
452
- barcodeResultJson.put("placeOfBirth", barcodeResult?.placeOfBirth)
453
- barcodeResultJson.put("profession", barcodeResult?.profession)
454
- barcodeResultJson.put("race", barcodeResult?.race)
455
- barcodeResultJson.put("religion", barcodeResult?.religion)
456
- barcodeResultJson.put("residentialStatus", barcodeResult?.residentialStatus)
457
- barcodeResultJson.put("sex", barcodeResult?.sex)
458
- barcodeResultJson.put("parsed", barcodeResult?.parsed)
459
- barcodeResultJson.put(
460
- "extendedElements",
461
- serializeBarcodeExtendedElements(barcodeResult?.extendedElements?.barcodeElements)
462
- )
463
-
464
- return barcodeResultJson
465
- }
466
-
467
- private fun serializeAddressDetailedInfo(addressDetailedInfo: AddressDetailedInfo?): JSONObject {
468
- val addressDetailedInfoJson = JSONObject()
469
- addressDetailedInfoJson.put("city", addressDetailedInfo?.city)
470
- addressDetailedInfoJson.put("postalCode", addressDetailedInfo?.postalCode)
471
- addressDetailedInfoJson.put("jurisdiction", addressDetailedInfo?.jurisdiction)
472
- addressDetailedInfoJson.put("street", addressDetailedInfo?.street)
473
-
474
- return addressDetailedInfoJson
475
- }
476
-
477
- private fun serializeBarcodeData(barcodeData: BarcodeData?): JSONObject {
478
- val barcodeDataJson = JSONObject()
479
- barcodeDataJson.put("barcodeType", barcodeData?.barcodeType?.ordinal)
480
- barcodeDataJson.put("rawData", barcodeData?.rawData.toString())
481
- barcodeDataJson.put("stringData", barcodeData?.stringData)
482
- barcodeDataJson.put("uncertain", barcodeData?.uncertain)
483
-
484
- return barcodeDataJson
485
- }
486
-
487
- private fun serializeMrzResult(mrzResult: MrzResult?): JSONObject {
488
- val mrzResultJson = JSONObject()
489
- mrzResultJson.put("dateOfBirth", serializeDateResult(mrzResult?.dateOfBirth))
490
- mrzResultJson.put("dateOfExpiry", serializeDateResult(mrzResult?.dateOfExpiry))
491
- mrzResultJson.put("documentCode", mrzResult?.documentCode)
492
- mrzResultJson.put("documentNumber", mrzResult?.documentNumber)
493
- mrzResultJson.put("documentType", mrzResult?.documentType?.ordinal)
494
- mrzResultJson.put("gender", mrzResult?.gender)
495
- mrzResultJson.put("issuer", mrzResult?.issuer)
496
- mrzResultJson.put("issuerName", mrzResult?.issuerName)
497
- mrzResultJson.put("nationality", mrzResult?.nationality)
498
- mrzResultJson.put("nationalityName", mrzResult?.nationalityName)
499
- mrzResultJson.put("opt1", mrzResult?.opt1)
500
- mrzResultJson.put("opt2", mrzResult?.opt2)
501
- mrzResultJson.put("primaryID", mrzResult?.primaryID)
502
- mrzResultJson.put("rawMRZString", mrzResult?.rawMRZString)
503
- mrzResultJson.put("sanitizedDocumentCode", mrzResult?.sanitizedDocumentCode)
504
- mrzResultJson.put("sanitizedDocumentNumber", mrzResult?.sanitizedDocumentNumber)
505
- mrzResultJson.put("sanitizedIssuer", mrzResult?.sanitizedIssuer)
506
- mrzResultJson.put("sanitizedNationality", mrzResult?.sanitizedNationality)
507
- mrzResultJson.put("sanitizedOpt1", mrzResult?.sanitizedOpt1)
508
- mrzResultJson.put("sanitizedOpt2", mrzResult?.sanitizedOpt2)
509
- mrzResultJson.put("secondaryID", mrzResult?.secondaryID)
510
- mrzResultJson.put("verified", mrzResult?.verified)
511
-
512
- return mrzResultJson
513
- }
514
-
515
- private fun serializeVizResult(vizResult: VizResult?): JSONObject {
516
- val vizResultJson = JSONObject()
517
-
518
- vizResult?.additionalAddressInformation?.let {
519
- vizResultJson.put("additionalAddressInformation", serializeStringResult(it))
520
- }
521
- vizResult?.additionalNameInformation?.let {
522
- vizResultJson.put("additionalNameInformation", serializeStringResult(it))
523
- }
524
- vizResult?.additionalOptionalAddressInformation?.let {
525
- vizResultJson.put("additionalOptionalAddressInformation", serializeStringResult(it))
526
- }
527
- vizResult?.additionalPersonalIdNumber?.let {
528
- vizResultJson.put("additionalPersonalIdNumber", serializeStringResult(it))
529
- }
530
- vizResult?.address?.let {
531
- vizResultJson.put("address", serializeStringResult(it))
532
- }
533
- vizResult?.bloodType?.let {
534
- vizResultJson.put("bloodType", serializeStringResult(it))
535
- }
536
- vizResult?.dateOfBirth?.let {
537
- vizResultJson.put("dateOfBirth", serializeDateResult(it))
538
- }
539
- vizResult?.dateOfExpiry?.let {
540
- vizResultJson.put("dateOfExpiry", serializeDateResult(it))
541
- }
542
- vizResult?.dateOfIssue?.let {
543
- vizResultJson.put("dateOfIssue", serializeDateResult(it))
544
- }
545
- vizResult?.dateOfEntry?.let {
546
- vizResultJson.put("dateOfEntry", serializeDateResult(it))
547
- }
548
- vizResult?.localityCode?.let {
549
- vizResultJson.put("localityCode", serializeStringResult(it))
550
- }
551
- vizResult?.maidenName?.let {
552
- vizResultJson.put("maidenName", serializeStringResult(it))
553
- }
554
- vizResult?.municipalityCode?.let {
555
- vizResultJson.put("municipalityCode", serializeStringResult(it))
556
- }
557
- vizResult?.municipalityOfRegistration?.let {
558
- vizResultJson.put("municipalityOfRegistration", serializeStringResult(it))
559
- }
560
- vizResult?.pollingStationCode?.let {
561
- vizResultJson.put("pollingStationCode", serializeStringResult(it))
562
- }
563
- vizResult?.registrationCenterCode?.let {
564
- vizResultJson.put("registrationCenterCode", serializeStringResult(it))
565
- }
566
- vizResult?.sectionCode?.let {
567
- vizResultJson.put("sectionCode", serializeStringResult(it))
568
- }
569
- vizResult?.stateCode?.let {
570
- vizResultJson.put("stateCode", serializeStringResult(it))
571
- }
572
- vizResult?.stateName?.let {
573
- vizResultJson.put("stateName", serializeStringResult(it))
574
- }
575
- vizResult?.dateOfExpiryPermanent?.let {
576
- vizResultJson.put("dateOfExpiryPermanent", it)
577
- }
578
- vizResult?.documentAdditionalNumber?.let {
579
- vizResultJson.put("documentAdditionalNumber", serializeStringResult(it))
580
- }
581
- vizResult?.dependentsInfo.let {
582
- vizResultJson.put(
583
- "dependentsInfo",
584
- JSONArray(it?.map { dependentInfo -> serializeDependentInfo(dependentInfo) })
585
- )
586
- }
587
- vizResult?.documentNumber?.let {
588
- vizResultJson.put("documentNumber", serializeStringResult(it))
589
- }
590
- vizResult?.documentOptionalAdditionalNumber?.let {
591
- vizResultJson.put("documentOptionalAdditionalNumber", serializeStringResult(it))
592
- }
593
- vizResult?.documentSubtype?.let {
594
- vizResultJson.put("documentSubtype", serializeStringResult(it))
595
- }
596
- vizResult?.driverLicenseDetailedInfo?.let {
597
- vizResultJson.put("driverLicenseDetailedInfo", serializeDriverLicenseDetailedInfo(it))
598
- }
599
- vizResult?.eligibilityCategory?.let {
600
- vizResultJson.put("eligibilityCategory", serializeStringResult(it))
601
- }
602
- vizResult?.employer?.let {
603
- vizResultJson.put("employer", serializeStringResult(it))
604
- }
605
- vizResult?.fathersName?.let {
606
- vizResultJson.put("fathersName", serializeStringResult(it))
607
- }
608
- vizResult?.firstName?.let {
609
- vizResultJson.put("firstName", serializeStringResult(it))
610
- }
611
- vizResult?.fullName?.let {
612
- vizResultJson.put("fullName", serializeStringResult(it))
613
- }
614
- vizResult?.issuingAuthority?.let {
615
- vizResultJson.put("issuingAuthority", serializeStringResult(it))
616
- }
617
- vizResult?.lastName?.let {
618
- vizResultJson.put("lastName", serializeStringResult(it))
619
- }
620
- vizResult?.localizedName?.let {
621
- vizResultJson.put("localizedName", serializeStringResult(it))
622
- }
623
- vizResult?.profession?.let {
624
- vizResultJson.put("profession", serializeStringResult(it))
625
- }
626
- vizResult?.placeOfBirth?.let {
627
- vizResultJson.put("placeOfBirth", serializeStringResult(it))
628
- }
629
- vizResult?.personalIdNumber?.let {
630
- vizResultJson.put("personalIdNumber", serializeStringResult(it))
631
- }
632
- vizResult?.nationality?.let {
633
- vizResultJson.put("nationality", serializeStringResult(it))
634
- }
635
- vizResult?.mothersName?.let {
636
- vizResultJson.put("mothersName", serializeStringResult(it))
637
- }
638
- vizResult?.maritalStatus?.let {
639
- vizResultJson.put("maritalStatus", serializeStringResult(it))
640
- }
641
- vizResult?.manufacturingYear?.let {
642
- vizResultJson.put("manufacturingYear", serializeStringResult(it))
643
- }
644
- vizResult?.race?.let {
645
- vizResultJson.put("race", serializeStringResult(it))
646
- }
647
- vizResult?.religion?.let {
648
- vizResultJson.put("religion", serializeStringResult(it))
649
- }
650
- vizResult?.remarks?.let {
651
- vizResultJson.put("remarks", serializeStringResult(it))
652
- }
653
- vizResult?.residencePermitType?.let {
654
- vizResultJson.put("residencePermitType", serializeStringResult(it))
655
- }
656
- vizResult?.residentialStatus?.let {
657
- vizResultJson.put("residentialStatus", serializeStringResult(it))
658
- }
659
- vizResult?.sex?.let {
660
- vizResultJson.put("sex", serializeStringResult(it))
661
- }
662
- vizResult?.specificDocumentValidity?.let {
663
- vizResultJson.put("specificDocumentValidity", serializeStringResult(it))
664
- }
665
- vizResult?.sponsor?.let {
666
- vizResultJson.put("sponsor", serializeStringResult(it))
667
- }
668
- vizResult?.vehicleOwner?.let {
669
- vizResultJson.put("vehicleOwner", serializeStringResult(it))
670
- }
671
- vizResult?.vehicleType?.let {
672
- vizResultJson.put("vehicleType", serializeStringResult(it))
673
- }
674
- vizResult?.visaType?.let {
675
- vizResultJson.put("visaType", serializeStringResult(it))
676
- }
677
- vizResult?.countryCode?.let {
678
- vizResultJson.put("countryCode", serializeStringResult(it))
679
- }
680
- vizResult?.certificateNumber?.let {
681
- vizResultJson.put("certificateNumber", serializeStringResult(it))
682
- }
683
- vizResult?.nationalInsuranceNumber?.let {
684
- vizResultJson.put("nationalInsuranceNumber", serializeStringResult(it))
685
- }
686
- return vizResultJson
687
- }
688
-
689
- private fun serializeDetailedCroppedImageResult(detailedCroppedImageResult: DetailedCroppedImageResult?): JSONObject {
690
- val detailedCroppedImageResultJson = JSONObject()
691
-
692
- detailedCroppedImageResult?.bitmap?.let {
693
- encodeBase64Image(it)?.let { image ->
694
- detailedCroppedImageResultJson.put("image", image)
695
- }
696
- }
697
- detailedCroppedImageResult?.location?.let {
698
- detailedCroppedImageResultJson.put("location", serializeLocation(it))
699
- }
700
- detailedCroppedImageResult?.side?.let {
701
- detailedCroppedImageResultJson.put("side", it.ordinal)
702
-
31
+ fun serializeBlinkIdScanningResult(scanningResult: BlinkIdScanningResult?): String {
32
+ val scanningResultJson: JSONObject = JSONObject()
33
+
34
+ scanningResult?.mode.let {
35
+ scanningResultJson.put("recognitionMode", it?.name)
36
+ }
37
+ scanningResult?.documentClassInfo?.let {
38
+ scanningResultJson.put("documentClassInfo", serializeDocumentClassInfo(it))
39
+ }
40
+ scanningResult?.dataMatchResult?.let {
41
+ scanningResultJson.put("dataMatchResult", serializeDataMatchResult(it))
42
+ }
43
+ scanningResult?.firstName?.let {
44
+ scanningResultJson.put("firstName", serializeStringResult(it))
45
+ }
46
+ scanningResult?.lastName?.let {
47
+ scanningResultJson.put("lastName", serializeStringResult(it))
48
+ }
49
+ scanningResult?.fullName?.let {
50
+ scanningResultJson.put("fullName", serializeStringResult(it))
51
+ }
52
+ scanningResult?.additionalNameInformation?.let {
53
+ scanningResultJson.put("additionalNameInformation", serializeStringResult(it))
54
+ }
55
+ scanningResult?.localizedName?.let {
56
+ scanningResultJson.put("localizedName", serializeStringResult(it))
57
+ }
58
+ scanningResult?.fathersName?.let {
59
+ scanningResultJson.put("fathersName", serializeStringResult(it))
60
+ }
61
+ scanningResult?.mothersName?.let {
62
+ scanningResultJson.put("mothersName", serializeStringResult(it))
63
+ }
64
+ scanningResult?.address?.let {
65
+ scanningResultJson.put("address", serializeStringResult(it))
66
+ }
67
+ scanningResult?.additionalAddressInformation?.let {
68
+ scanningResultJson.put("additionalAddressInformation", serializeStringResult(it))
69
+ }
70
+ scanningResult?.additionalOptionalAddressInformation?.let {
71
+ scanningResultJson.put(
72
+ "additionalOptionalAddressInformation",
73
+ serializeStringResult(it)
74
+ )
75
+ }
76
+ scanningResult?.placeOfBirth?.let {
77
+ scanningResultJson.put("placeOfBirth", serializeStringResult(it))
78
+ }
79
+ scanningResult?.nationality?.let {
80
+ scanningResultJson.put("nationality", serializeStringResult(it))
81
+ }
82
+ scanningResult?.race?.let {
83
+ scanningResultJson.put("race", serializeStringResult(it))
84
+ }
85
+ scanningResult?.religion?.let {
86
+ scanningResultJson.put("religion", serializeStringResult(it))
87
+ }
88
+ scanningResult?.profession?.let {
89
+ scanningResultJson.put("profession", serializeStringResult(it))
90
+ }
91
+ scanningResult?.maritalStatus?.let {
92
+ scanningResultJson.put("maritalStatus", serializeStringResult(it))
93
+ }
94
+ scanningResult?.residentialStatus?.let {
95
+ scanningResultJson.put("residentialStatus", serializeStringResult(it))
96
+ }
97
+ scanningResult?.employer?.let {
98
+ scanningResultJson.put("employer", serializeStringResult(it))
99
+ }
100
+ scanningResult?.sex?.let {
101
+ scanningResultJson.put("sex", serializeStringResult(it))
102
+ }
103
+ scanningResult?.sponsor?.let {
104
+ scanningResultJson.put("sponsor", serializeStringResult(it))
105
+ }
106
+ scanningResult?.bloodType?.let {
107
+ scanningResultJson.put("bloodType", serializeStringResult(it))
108
+ }
109
+ scanningResult?.documentNumber?.let {
110
+ scanningResultJson.put("documentNumber", serializeStringResult(it))
111
+ }
112
+ scanningResult?.personalIdNumber?.let {
113
+ scanningResultJson.put("personalIdNumber", serializeStringResult(it))
114
+ }
115
+ scanningResult?.documentAdditionalNumber?.let {
116
+ scanningResultJson.put("documentAdditionalNumber", serializeStringResult(it))
117
+ }
118
+ scanningResult?.documentOptionalAdditionalNumber?.let {
119
+ scanningResultJson.put("documentOptionalAdditionalNumber", serializeStringResult(it))
120
+ }
121
+ scanningResult?.additionalPersonalIdNumber?.let {
122
+ scanningResultJson.put("additionalPersonalIdNumber", serializeStringResult(it))
123
+ }
124
+ scanningResult?.issuingAuthority?.let {
125
+ scanningResultJson.put("issuingAuthority", serializeStringResult(it))
126
+ }
127
+ scanningResult?.documentSubtype?.let {
128
+ scanningResultJson.put("documentSubtype", serializeStringResult(it))
129
+ }
130
+ scanningResult?.remarks?.let {
131
+ scanningResultJson.put("remarks", serializeStringResult(it))
132
+ }
133
+ scanningResult?.residencePermitType?.let {
134
+ scanningResultJson.put("residencePermitType", serializeStringResult(it))
135
+ }
136
+ scanningResult?.manufacturingYear?.let {
137
+ scanningResultJson.put("manufacturingYear", serializeStringResult(it))
138
+ }
139
+ scanningResult?.vehicleType?.let {
140
+ scanningResultJson.put("vehicleType", serializeStringResult(it))
141
+ }
142
+ scanningResult?.vehicleOwner?.let {
143
+ scanningResultJson.put("vehicleOwner", serializeStringResult(it))
144
+ }
145
+ scanningResult?.eligibilityCategory?.let {
146
+ scanningResultJson.put("eligibilityCategory", serializeStringResult(it))
147
+ }
148
+ scanningResult?.specificDocumentValidity?.let {
149
+ scanningResultJson.put("specificDocumentValidity", serializeStringResult(it))
150
+ }
151
+ scanningResult?.visaType?.let {
152
+ scanningResultJson.put("visaType", serializeStringResult(it))
153
+ }
154
+ scanningResult?.countryCode?.let {
155
+ scanningResultJson.put("countryCode", serializeStringResult(it))
156
+ }
157
+ scanningResult?.certificateNumber?.let {
158
+ scanningResultJson.put("certificateNumber", serializeStringResult(it))
159
+ }
160
+ scanningResult?.nationalInsuranceNumber?.let {
161
+ scanningResultJson.put("nationalInsuranceNumber", serializeStringResult(it))
162
+ }
163
+ scanningResult?.dateOfBirth?.let {
164
+ scanningResultJson.put("dateOfBirth", serializeDateResult(it))
165
+ }
166
+ scanningResult?.dateOfIssue?.let {
167
+ scanningResultJson.put("dateOfIssue", serializeDateResult(it))
168
+ }
169
+ scanningResult?.dateOfExpiry?.let {
170
+ scanningResultJson.put("dateOfExpiry", serializeDateResult(it))
171
+ }
172
+ scanningResult?.dateOfEntry?.let {
173
+ scanningResultJson.put("dateOfEntry", serializeDateResult(it))
174
+ }
175
+ scanningResult?.localityCode?.let {
176
+ scanningResultJson.put("localityCode", serializeStringResult(it))
177
+ }
178
+ scanningResult?.maidenName?.let {
179
+ scanningResultJson.put("maidenName", serializeStringResult(it))
180
+ }
181
+ scanningResult?.municipalityCode?.let {
182
+ scanningResultJson.put("municipalityCode", serializeStringResult(it))
183
+ }
184
+ scanningResult?.municipalityOfRegistration?.let {
185
+ scanningResultJson.put("municipalityOfRegistration", serializeStringResult(it))
186
+ }
187
+ scanningResult?.pollingStationCode?.let {
188
+ scanningResultJson.put("pollingStationCode", serializeStringResult(it))
189
+ }
190
+ scanningResult?.registrationCenterCode?.let {
191
+ scanningResultJson.put("registrationCenterCode", serializeStringResult(it))
192
+ }
193
+ scanningResult?.sectionCode?.let {
194
+ scanningResultJson.put("sectionCode", serializeStringResult(it))
195
+ }
196
+ scanningResult?.stateCode?.let {
197
+ scanningResultJson.put("stateCode", serializeStringResult(it))
198
+ }
199
+ scanningResult?.stateName?.let {
200
+ scanningResultJson.put("stateName", serializeStringResult(it))
201
+ }
202
+ scanningResult?.dateOfExpiryPermanent?.let {
203
+ scanningResultJson.put("dateOfExpiryPermanent", it)
204
+ }
205
+ scanningResult?.driverLicenseDetailedInfo?.let {
206
+ scanningResultJson.put(
207
+ "driverLicenseDetailedInfo",
208
+ serializeDriverLicenseDetailedInfo(it)
209
+ )
210
+ }
211
+ scanningResult?.dependentsInfo?.let {
212
+ scanningResultJson.put(
213
+ "dependentsInfo",
214
+ JSONArray(it.map { dependentInfo -> serializeDependentInfo(dependentInfo) })
215
+ )
216
+ }
217
+ scanningResult?.parentsInfo?.let {
218
+ scanningResultJson.put(
219
+ "parentsInfo",
220
+ JSONArray(it.map { parentInfo -> serializeParentInfo(parentInfo) })
221
+ )
222
+ }
223
+ scanningResult?.effectiveDate?.let {
224
+ scanningResultJson.put("effectiveDate", serializeDateResult(it))
225
+ }
226
+ scanningResult?.husbandName?.let {
227
+ scanningResultJson.put("husbandName", serializeStringResult(it))
228
+ }
229
+ scanningResult?.legalStatus?.let {
230
+ scanningResultJson.put("legalStatus", serializeStringResult(it))
231
+ }
232
+ scanningResult?.socialSecurityStatus?.let {
233
+ scanningResultJson.put("socialSecurityStatus", serializeStringResult(it))
234
+ }
235
+ scanningResult?.workRestriction?.let {
236
+ scanningResultJson.put("workRestriction", serializeStringResult(it))
237
+ }
238
+ scanningResult?.subResults?.let {
239
+ scanningResultJson.put(
240
+ "subResults",
241
+ JSONArray(it.map { subResult -> serializeSubResult(subResult) })
242
+ )
243
+ }
244
+ scanningResult?.inputImage(ScanningSide.First)?.let {
245
+ scanningResultJson.put("firstInputImage", encodeBase64Image(it.bitmap))
246
+ }
247
+ scanningResult?.inputImage(ScanningSide.Second)?.let {
248
+ scanningResultJson.put("secondInputImage", encodeBase64Image(it.bitmap))
249
+ }
250
+ scanningResult?.barcodeInputImage()?.let {
251
+ scanningResultJson.put("barcodeInputImage", encodeBase64Image(it.bitmap))
252
+ }
253
+ scanningResult?.documentImage(ScanningSide.First)?.let {
254
+ scanningResultJson.put("firstDocumentImage", encodeBase64Image(it.bitmap))
255
+ }
256
+ scanningResult?.documentImage(ScanningSide.Second)?.let {
257
+ scanningResultJson.put("secondDocumentImage", encodeBase64Image(it.bitmap))
258
+ }
259
+ scanningResult?.faceImage()?.let {
260
+ scanningResultJson.put("faceImage", serializeDetailedCroppedImageResult(it))
261
+ }
262
+ scanningResult?.signatureImage()?.let {
263
+ scanningResultJson.put("signatureImage", serializeDetailedCroppedImageResult(it))
264
+ }
265
+
266
+ return scanningResultJson.toString()
267
+ }
268
+
269
+ private fun <T> serializeDateResult(dateResult: DateResult<T>?): JSONObject {
270
+ val dateResultJson = JSONObject()
271
+
272
+ dateResultJson.put("date", serializeSimpleDateResult(dateResult));
273
+ dateResultJson.put("filledByDomainKnowledge", dateResult?.filledByDomainKnowledge)
274
+ dateResultJson.put("successfullyParsed", dateResult?.successfullyParsed)
275
+ dateResultJson.put("originalString", serializeStringType(dateResult?.originalString))
276
+ return dateResultJson
277
+ }
278
+
279
+ private fun <T> serializeSimpleDateResult(dateResult: DateResult<T>?): JSONObject {
280
+ val simpleDateResultJson = JSONObject()
281
+ dateResult?.day?.let {
282
+ simpleDateResultJson.put("day", it)
283
+ }
284
+ dateResult?.month?.let {
285
+ simpleDateResultJson.put("month", it)
286
+ }
287
+ dateResult?.year?.let {
288
+ simpleDateResultJson.put("year", it)
289
+ }
290
+ return simpleDateResultJson;
291
+ }
292
+
293
+ private fun serializeDocumentClassInfo(documentClassInfo: DocumentClassInfo): JSONObject {
294
+ val documentClassInfoJson = JSONObject()
295
+ documentClassInfo.country?.name?.let {
296
+ documentClassInfoJson.put("country", it.replaceFirstChar { char -> char.lowercase() })
297
+ }
298
+ documentClassInfo.region?.name?.let {
299
+ documentClassInfoJson.put("region", it.replaceFirstChar { char -> char.lowercase() })
300
+ }
301
+ documentClassInfo.type?.name?.let {
302
+ documentClassInfoJson.put(
303
+ "documentType",
304
+ it.replaceFirstChar { char -> char.lowercase() })
305
+ }
306
+ documentClassInfo.countryName?.let {
307
+ documentClassInfoJson.put("countryName", it)
308
+ }
309
+ documentClassInfo.isoAlpha2CountryCode?.let {
310
+ documentClassInfoJson.put("isoAlpha2CountryCode", it)
311
+ }
312
+ documentClassInfo.isoAlpha3CountryCode?.let {
313
+ documentClassInfoJson.put("isoAlpha3CountryCode", it)
314
+ }
315
+ return documentClassInfoJson
316
+ }
317
+
318
+ private fun serializeDataMatchResult(dataMatchResult: DataMatchResult): JSONObject {
319
+ val dataMatchResultJson = JSONObject()
320
+
321
+ val statesArray = JSONArray()
322
+ dataMatchResult.statePerField.forEach {
323
+ statesArray.put(serializeDataMatchField(it))
324
+ }
325
+
326
+ dataMatchResultJson.put("states", statesArray)
327
+ dataMatchResultJson.put("overallState", dataMatchResult.overallState.ordinal)
328
+
329
+ return dataMatchResultJson
330
+ }
331
+
332
+ private fun serializeDataMatchField(dataMatchField: DataMatchFieldState): JSONObject {
333
+ val dataMatchFieldJson = JSONObject()
334
+ dataMatchFieldJson.put("field", dataMatchField.fieldType.ordinal)
335
+ dataMatchFieldJson.put("state", dataMatchField.state.ordinal)
336
+ return dataMatchFieldJson
337
+ }
338
+
339
+ private fun serializeStringResult(stringResult: StringResult): JSONObject {
340
+ val stringResultJson = JSONObject()
341
+ stringResultJson.put("value", stringResult.value(AlphabetType.Latin))
342
+ stringResultJson.put("latin", stringResult.value(AlphabetType.Latin))
343
+ stringResultJson.put("arabic", stringResult.value(AlphabetType.Arabic))
344
+ stringResultJson.put("cyrillic", stringResult.value(AlphabetType.Cyrillic))
345
+ stringResultJson.put("greek", stringResult.value(AlphabetType.Greek))
346
+
347
+ val locationJson = JSONObject()
348
+ stringResult.location(AlphabetType.Latin)?.let {
349
+ locationJson.put("latin", serializeLocation(it))
350
+ }
351
+ stringResult.location(AlphabetType.Arabic)?.let {
352
+ locationJson.put("arabic", serializeLocation(it))
353
+ }
354
+ stringResult.location(AlphabetType.Cyrillic)?.let {
355
+ locationJson.put("cyrillic", serializeLocation(it))
356
+ }
357
+ stringResult.location(AlphabetType.Greek)?.let {
358
+ locationJson.put("greek", serializeLocation(it))
359
+ }
360
+ stringResultJson.put("location", locationJson)
361
+
362
+ val sideJson = JSONObject()
363
+ stringResult.side(AlphabetType.Latin)?.let {
364
+ sideJson.put("latin", it.ordinal)
365
+ }
366
+ stringResult.side(AlphabetType.Arabic)?.let {
367
+ sideJson.put("arabic", it.ordinal)
368
+ }
369
+ stringResult.side(AlphabetType.Cyrillic)?.let {
370
+ sideJson.put("cyrillic", it.ordinal)
371
+ }
372
+ stringResult.side(AlphabetType.Greek)?.let {
373
+ sideJson.put("greek", it.ordinal)
374
+ }
375
+ stringResultJson.put("side", sideJson)
376
+
377
+ return stringResultJson
378
+ }
379
+
380
+ private fun serializeLocation(rectangle: Rectangle): JSONObject {
381
+ val locationJson = JSONObject()
382
+ locationJson.put("x", rectangle.x.toDouble())
383
+ locationJson.put("y", rectangle.y.toDouble())
384
+ locationJson.put("width", rectangle.width.toDouble())
385
+ locationJson.put("height", rectangle.height.toDouble())
386
+ return locationJson
387
+ }
388
+
389
+ private fun <T> serializeDriverLicenseDetailedInfo(
390
+ driverLicenseDetailedInfo: DriverLicenseDetailedInfo<T>?
391
+ ): JSONObject {
392
+ val json = JSONObject()
393
+
394
+ json.put("conditions", serializeStringType(driverLicenseDetailedInfo?.conditions))
395
+ json.put("endorsements", serializeStringType(driverLicenseDetailedInfo?.endorsements))
396
+ json.put("restrictions", serializeStringType(driverLicenseDetailedInfo?.restrictions))
397
+ json.put("vehicleClass", serializeStringType(driverLicenseDetailedInfo?.vehicleClass))
398
+
399
+ driverLicenseDetailedInfo?.vehicleClassesInfo?.let { vehicleClasses ->
400
+ val array = JSONArray()
401
+ for (info in vehicleClasses) {
402
+ array.put(serializeVehicleClassInfo(info))
403
+ }
404
+ json.put("vehicleClassesInfo", array)
405
+ }
406
+
407
+ return json
408
+ }
409
+
410
+ private fun <T> serializeVehicleClassInfo(vehicleClassInfo: VehicleClassInfo<T>): JSONObject {
411
+ val vehicleClassInfoJson = JSONObject()
412
+ vehicleClassInfoJson.put(
413
+ "effectiveDate",
414
+ serializeDateResult(vehicleClassInfo.effectiveDate)
415
+ )
416
+ vehicleClassInfoJson.put("expiryDate", serializeDateResult(vehicleClassInfo.expiryDate))
417
+ vehicleClassInfoJson.put("licenceType", serializeStringType(vehicleClassInfo.licenceType))
418
+ vehicleClassInfoJson.put("vehicleClass", serializeStringType(vehicleClassInfo.vehicleClass))
419
+ return vehicleClassInfoJson
420
+ }
421
+
422
+ private fun serializeDependentInfo(dependentInfo: DependentInfo): JSONObject {
423
+ val dependentInfoJson = JSONObject()
424
+
425
+ dependentInfo.fullName?.let {
426
+ dependentInfoJson.put("fullName", serializeStringResult(it))
427
+ }
428
+ dependentInfo.sex?.let {
429
+ dependentInfoJson.put("sex", serializeStringResult(it))
430
+ }
431
+ dependentInfo.dateOfBirth?.let {
432
+ dependentInfoJson.put("dateOfBirth", serializeDateResult(it))
433
+ }
434
+
435
+ dependentInfo.documentNumber?.let {
436
+ dependentInfoJson.put("documentNumber", serializeStringResult(it))
437
+ }
438
+
439
+ return dependentInfoJson
440
+ }
441
+
442
+ private fun serializeSubResult(subResult: SingleSideScanningResult): JSONObject {
443
+ val subResultJson = JSONObject()
444
+ subResultJson.put("barcode", serializeBarcodeResult(subResult.barcode))
445
+ subResultJson.put(
446
+ "barcodeInputImage",
447
+ encodeBase64Image(subResult.barcodeInputImage?.bitmap)
448
+ )
449
+ subResultJson.put("documentImage", encodeBase64Image(subResult.documentImage?.bitmap))
450
+ subResultJson.put("faceImage", serializeDetailedCroppedImageResult(subResult.faceImage))
451
+ subResultJson.put("inputImage", encodeBase64Image(subResult.inputImage?.bitmap))
452
+ subResultJson.put("mrz", serializeMrzResult(subResult.mrz))
453
+ subResultJson.put(
454
+ "signatureImage",
455
+ serializeDetailedCroppedImageResult(subResult.signatureImage)
456
+ )
457
+ subResultJson.put("viz", serializeVizResult(subResult.viz))
458
+ return subResultJson
703
459
  }
704
- return detailedCroppedImageResultJson
705
- }
706
460
 
707
- private fun serializeBarcodeExtendedElements(barcodeExtendedElements: Array<BarcodeElement>?): JSONObject {
708
- val barcodeExtendedElementsJson = JSONObject()
709
-
710
- barcodeExtendedElements?.let {
711
- it.map { element ->
712
- barcodeExtendedElementsJson.put(
713
- element.key.name.replaceFirstChar { char -> char.lowercase() },
714
- element.value
461
+ private fun serializeBarcodeResult(barcodeResult: BarcodeResult?): JSONObject {
462
+ val barcodeResultJson = JSONObject()
463
+ barcodeResultJson.put("additionalNameInformation", barcodeResult?.additionalNameInformation)
464
+ barcodeResultJson.put("address", barcodeResult?.address)
465
+ barcodeResultJson.put(
466
+ "addressDetailedInfo",
467
+ serializeAddressDetailedInfo(barcodeResult?.addressDetailedInfo)
715
468
  )
716
- }
717
- }
718
- return barcodeExtendedElementsJson
719
- }
720
-
721
- private fun serializeStringType(value: Any?): Any? {
722
- return when (value) {
723
- is StringResult -> serializeStringResult(value)
724
- is String -> value
725
- else -> null
726
- }
727
- }
728
-
729
- private fun encodeBase64Image(image: Bitmap?): String? {
730
- return image?.let { bmp ->
731
- val outputStream = ByteArrayOutputStream()
732
- outputStream.use { stream ->
733
- bmp.compress(Bitmap.CompressFormat.JPEG, 95, stream)
734
- Base64.encodeToString(
735
- stream.toByteArray(),
736
- Base64.NO_WRAP
469
+ barcodeResultJson.put("barcodeData", serializeBarcodeData(barcodeResult?.barcodeData))
470
+ barcodeResultJson.put("dateOfBirth", serializeDateResult(barcodeResult?.dateOfBirth))
471
+ barcodeResultJson.put("dateOfExpiry", serializeDateResult(barcodeResult?.dateOfExpiry))
472
+ barcodeResultJson.put("dateOfIssue", serializeDateResult(barcodeResult?.dateOfIssue))
473
+ barcodeResultJson.put("documentAdditionalNumber", barcodeResult?.documentAdditionalNumber)
474
+ barcodeResultJson.put("documentNumber", barcodeResult?.documentNumber)
475
+ barcodeResultJson.put(
476
+ "driverLicenseDetailedInfo",
477
+ serializeDriverLicenseDetailedInfo(barcodeResult?.driverLicenseDetailedInfo)
737
478
  )
738
- }
479
+ barcodeResultJson.put("employer", barcodeResult?.employer)
480
+ barcodeResultJson.put("firstName", barcodeResult?.firstName)
481
+ barcodeResultJson.put("fullName", barcodeResult?.fullName)
482
+ barcodeResultJson.put("issuingAuthority", barcodeResult?.issuingAuthority)
483
+ barcodeResultJson.put("lastName", barcodeResult?.lastName)
484
+ barcodeResultJson.put("maritalStatus", barcodeResult?.maritalStatus)
485
+ barcodeResultJson.put("middleName", barcodeResult?.middleName)
486
+ barcodeResultJson.put("nationality", barcodeResult?.nationality)
487
+ barcodeResultJson.put("personalIdNumber", barcodeResult?.personalIdNumber)
488
+ barcodeResultJson.put("placeOfBirth", barcodeResult?.placeOfBirth)
489
+ barcodeResultJson.put("profession", barcodeResult?.profession)
490
+ barcodeResultJson.put("race", barcodeResult?.race)
491
+ barcodeResultJson.put("religion", barcodeResult?.religion)
492
+ barcodeResultJson.put("residentialStatus", barcodeResult?.residentialStatus)
493
+ barcodeResultJson.put("sex", barcodeResult?.sex)
494
+ barcodeResultJson.put("parsed", barcodeResult?.parsed)
495
+ barcodeResultJson.put(
496
+ "extendedElements",
497
+ serializeBarcodeExtendedElements(barcodeResult?.extendedElements?.barcodeElements)
498
+ )
499
+
500
+ return barcodeResultJson
501
+ }
502
+
503
+ private fun serializeAddressDetailedInfo(addressDetailedInfo: AddressDetailedInfo?): JSONObject {
504
+ val addressDetailedInfoJson = JSONObject()
505
+ addressDetailedInfoJson.put("city", addressDetailedInfo?.city)
506
+ addressDetailedInfoJson.put("postalCode", addressDetailedInfo?.postalCode)
507
+ addressDetailedInfoJson.put("jurisdiction", addressDetailedInfo?.jurisdiction)
508
+ addressDetailedInfoJson.put("street", addressDetailedInfo?.street)
509
+
510
+ return addressDetailedInfoJson
511
+ }
512
+
513
+ private fun serializeBarcodeData(barcodeData: BarcodeData?): JSONObject {
514
+ val barcodeDataJson = JSONObject()
515
+ barcodeDataJson.put("barcodeType", barcodeData?.barcodeType?.ordinal)
516
+ barcodeDataJson.put("rawData", barcodeData?.rawData.toString())
517
+ barcodeDataJson.put("stringData", barcodeData?.stringData)
518
+ barcodeDataJson.put("uncertain", barcodeData?.uncertain)
519
+
520
+ return barcodeDataJson
521
+ }
522
+
523
+ private fun serializeMrzResult(mrzResult: MrzResult?): JSONObject {
524
+ val mrzResultJson = JSONObject()
525
+ mrzResultJson.put("dateOfBirth", serializeDateResult(mrzResult?.dateOfBirth))
526
+ mrzResultJson.put("dateOfExpiry", serializeDateResult(mrzResult?.dateOfExpiry))
527
+ mrzResultJson.put("documentCode", mrzResult?.documentCode)
528
+ mrzResultJson.put("documentNumber", mrzResult?.documentNumber)
529
+ mrzResultJson.put("documentType", mrzResult?.documentType?.ordinal)
530
+ mrzResultJson.put("gender", mrzResult?.gender)
531
+ mrzResultJson.put("issuer", mrzResult?.issuer)
532
+ mrzResultJson.put("issuerName", mrzResult?.issuerName)
533
+ mrzResultJson.put("nationality", mrzResult?.nationality)
534
+ mrzResultJson.put("nationalityName", mrzResult?.nationalityName)
535
+ mrzResultJson.put("opt1", mrzResult?.opt1)
536
+ mrzResultJson.put("opt2", mrzResult?.opt2)
537
+ mrzResultJson.put("primaryID", mrzResult?.primaryID)
538
+ mrzResultJson.put("rawMRZString", mrzResult?.rawMRZString)
539
+ mrzResultJson.put("sanitizedDocumentCode", mrzResult?.sanitizedDocumentCode)
540
+ mrzResultJson.put("sanitizedDocumentNumber", mrzResult?.sanitizedDocumentNumber)
541
+ mrzResultJson.put("sanitizedIssuer", mrzResult?.sanitizedIssuer)
542
+ mrzResultJson.put("sanitizedNationality", mrzResult?.sanitizedNationality)
543
+ mrzResultJson.put("sanitizedOpt1", mrzResult?.sanitizedOpt1)
544
+ mrzResultJson.put("sanitizedOpt2", mrzResult?.sanitizedOpt2)
545
+ mrzResultJson.put("secondaryID", mrzResult?.secondaryID)
546
+ mrzResultJson.put("verified", mrzResult?.verified)
547
+
548
+ return mrzResultJson
549
+ }
550
+
551
+ private fun serializeVizResult(vizResult: VizResult?): JSONObject {
552
+ val vizResultJson = JSONObject()
553
+
554
+ vizResult?.additionalAddressInformation?.let {
555
+ vizResultJson.put("additionalAddressInformation", serializeStringResult(it))
556
+ }
557
+ vizResult?.additionalNameInformation?.let {
558
+ vizResultJson.put("additionalNameInformation", serializeStringResult(it))
559
+ }
560
+ vizResult?.additionalOptionalAddressInformation?.let {
561
+ vizResultJson.put("additionalOptionalAddressInformation", serializeStringResult(it))
562
+ }
563
+ vizResult?.additionalPersonalIdNumber?.let {
564
+ vizResultJson.put("additionalPersonalIdNumber", serializeStringResult(it))
565
+ }
566
+ vizResult?.address?.let {
567
+ vizResultJson.put("address", serializeStringResult(it))
568
+ }
569
+ vizResult?.bloodType?.let {
570
+ vizResultJson.put("bloodType", serializeStringResult(it))
571
+ }
572
+ vizResult?.dateOfBirth?.let {
573
+ vizResultJson.put("dateOfBirth", serializeDateResult(it))
574
+ }
575
+ vizResult?.dateOfExpiry?.let {
576
+ vizResultJson.put("dateOfExpiry", serializeDateResult(it))
577
+ }
578
+ vizResult?.dateOfIssue?.let {
579
+ vizResultJson.put("dateOfIssue", serializeDateResult(it))
580
+ }
581
+ vizResult?.dateOfEntry?.let {
582
+ vizResultJson.put("dateOfEntry", serializeDateResult(it))
583
+ }
584
+ vizResult?.localityCode?.let {
585
+ vizResultJson.put("localityCode", serializeStringResult(it))
586
+ }
587
+ vizResult?.maidenName?.let {
588
+ vizResultJson.put("maidenName", serializeStringResult(it))
589
+ }
590
+ vizResult?.municipalityCode?.let {
591
+ vizResultJson.put("municipalityCode", serializeStringResult(it))
592
+ }
593
+ vizResult?.municipalityOfRegistration?.let {
594
+ vizResultJson.put("municipalityOfRegistration", serializeStringResult(it))
595
+ }
596
+ vizResult?.pollingStationCode?.let {
597
+ vizResultJson.put("pollingStationCode", serializeStringResult(it))
598
+ }
599
+ vizResult?.registrationCenterCode?.let {
600
+ vizResultJson.put("registrationCenterCode", serializeStringResult(it))
601
+ }
602
+ vizResult?.sectionCode?.let {
603
+ vizResultJson.put("sectionCode", serializeStringResult(it))
604
+ }
605
+ vizResult?.stateCode?.let {
606
+ vizResultJson.put("stateCode", serializeStringResult(it))
607
+ }
608
+ vizResult?.stateName?.let {
609
+ vizResultJson.put("stateName", serializeStringResult(it))
610
+ }
611
+ vizResult?.dateOfExpiryPermanent?.let {
612
+ vizResultJson.put("dateOfExpiryPermanent", it)
613
+ }
614
+ vizResult?.documentAdditionalNumber?.let {
615
+ vizResultJson.put("documentAdditionalNumber", serializeStringResult(it))
616
+ }
617
+ vizResult?.dependentsInfo.let {
618
+ vizResultJson.put(
619
+ "dependentsInfo",
620
+ JSONArray(it?.map { dependentInfo -> serializeDependentInfo(dependentInfo) })
621
+ )
622
+ }
623
+ vizResult?.documentNumber?.let {
624
+ vizResultJson.put("documentNumber", serializeStringResult(it))
625
+ }
626
+ vizResult?.documentOptionalAdditionalNumber?.let {
627
+ vizResultJson.put("documentOptionalAdditionalNumber", serializeStringResult(it))
628
+ }
629
+ vizResult?.documentSubtype?.let {
630
+ vizResultJson.put("documentSubtype", serializeStringResult(it))
631
+ }
632
+ vizResult?.driverLicenseDetailedInfo?.let {
633
+ vizResultJson.put("driverLicenseDetailedInfo", serializeDriverLicenseDetailedInfo(it))
634
+ }
635
+ vizResult?.eligibilityCategory?.let {
636
+ vizResultJson.put("eligibilityCategory", serializeStringResult(it))
637
+ }
638
+ vizResult?.employer?.let {
639
+ vizResultJson.put("employer", serializeStringResult(it))
640
+ }
641
+ vizResult?.fathersName?.let {
642
+ vizResultJson.put("fathersName", serializeStringResult(it))
643
+ }
644
+ vizResult?.firstName?.let {
645
+ vizResultJson.put("firstName", serializeStringResult(it))
646
+ }
647
+ vizResult?.fullName?.let {
648
+ vizResultJson.put("fullName", serializeStringResult(it))
649
+ }
650
+ vizResult?.issuingAuthority?.let {
651
+ vizResultJson.put("issuingAuthority", serializeStringResult(it))
652
+ }
653
+ vizResult?.lastName?.let {
654
+ vizResultJson.put("lastName", serializeStringResult(it))
655
+ }
656
+ vizResult?.localizedName?.let {
657
+ vizResultJson.put("localizedName", serializeStringResult(it))
658
+ }
659
+ vizResult?.profession?.let {
660
+ vizResultJson.put("profession", serializeStringResult(it))
661
+ }
662
+ vizResult?.placeOfBirth?.let {
663
+ vizResultJson.put("placeOfBirth", serializeStringResult(it))
664
+ }
665
+ vizResult?.personalIdNumber?.let {
666
+ vizResultJson.put("personalIdNumber", serializeStringResult(it))
667
+ }
668
+ vizResult?.nationality?.let {
669
+ vizResultJson.put("nationality", serializeStringResult(it))
670
+ }
671
+ vizResult?.mothersName?.let {
672
+ vizResultJson.put("mothersName", serializeStringResult(it))
673
+ }
674
+ vizResult?.maritalStatus?.let {
675
+ vizResultJson.put("maritalStatus", serializeStringResult(it))
676
+ }
677
+ vizResult?.manufacturingYear?.let {
678
+ vizResultJson.put("manufacturingYear", serializeStringResult(it))
679
+ }
680
+ vizResult?.race?.let {
681
+ vizResultJson.put("race", serializeStringResult(it))
682
+ }
683
+ vizResult?.religion?.let {
684
+ vizResultJson.put("religion", serializeStringResult(it))
685
+ }
686
+ vizResult?.remarks?.let {
687
+ vizResultJson.put("remarks", serializeStringResult(it))
688
+ }
689
+ vizResult?.residencePermitType?.let {
690
+ vizResultJson.put("residencePermitType", serializeStringResult(it))
691
+ }
692
+ vizResult?.residentialStatus?.let {
693
+ vizResultJson.put("residentialStatus", serializeStringResult(it))
694
+ }
695
+ vizResult?.sex?.let {
696
+ vizResultJson.put("sex", serializeStringResult(it))
697
+ }
698
+ vizResult?.specificDocumentValidity?.let {
699
+ vizResultJson.put("specificDocumentValidity", serializeStringResult(it))
700
+ }
701
+ vizResult?.sponsor?.let {
702
+ vizResultJson.put("sponsor", serializeStringResult(it))
703
+ }
704
+ vizResult?.vehicleOwner?.let {
705
+ vizResultJson.put("vehicleOwner", serializeStringResult(it))
706
+ }
707
+ vizResult?.vehicleType?.let {
708
+ vizResultJson.put("vehicleType", serializeStringResult(it))
709
+ }
710
+ vizResult?.visaType?.let {
711
+ vizResultJson.put("visaType", serializeStringResult(it))
712
+ }
713
+ vizResult?.countryCode?.let {
714
+ vizResultJson.put("countryCode", serializeStringResult(it))
715
+ }
716
+ vizResult?.certificateNumber?.let {
717
+ vizResultJson.put("certificateNumber", serializeStringResult(it))
718
+ }
719
+ vizResult?.nationalInsuranceNumber?.let {
720
+ vizResultJson.put("nationalInsuranceNumber", serializeStringResult(it))
721
+ }
722
+ vizResult?.parentsInfo?.let {
723
+ vizResultJson.put(
724
+ "parentsInfo",
725
+ JSONArray(it.map { parentInfo -> serializeParentInfo(parentInfo) })
726
+ )
727
+ }
728
+ vizResult?.effectiveDate?.let {
729
+ vizResultJson.put("effectiveDate", serializeDateResult(it))
730
+ }
731
+ vizResult?.husbandName?.let {
732
+ vizResultJson.put("husbandName", serializeStringResult(it))
733
+ }
734
+ vizResult?.legalStatus?.let {
735
+ vizResultJson.put("legalStatus", serializeStringResult(it))
736
+ }
737
+ vizResult?.socialSecurityStatus?.let {
738
+ vizResultJson.put("socialSecurityStatus", serializeStringResult(it))
739
+ }
740
+ vizResult?.workRestriction?.let {
741
+ vizResultJson.put("workRestriction", serializeStringResult(it))
742
+ }
743
+ return vizResultJson
744
+ }
745
+
746
+ private fun serializeDetailedCroppedImageResult(detailedCroppedImageResult: DetailedCroppedImageResult?): JSONObject {
747
+ val detailedCroppedImageResultJson = JSONObject()
748
+
749
+ detailedCroppedImageResult?.bitmap?.let {
750
+ encodeBase64Image(it)?.let { image ->
751
+ detailedCroppedImageResultJson.put("image", image)
752
+ }
753
+ }
754
+ detailedCroppedImageResult?.location?.let {
755
+ detailedCroppedImageResultJson.put("location", serializeLocation(it))
756
+ }
757
+ detailedCroppedImageResult?.side?.let {
758
+ detailedCroppedImageResultJson.put("side", it.ordinal)
759
+
760
+ }
761
+ return detailedCroppedImageResultJson
762
+ }
763
+
764
+ private fun serializeBarcodeExtendedElements(barcodeExtendedElements: Array<BarcodeElement>?): JSONObject {
765
+ val barcodeExtendedElementsJson = JSONObject()
766
+
767
+ barcodeExtendedElements?.let {
768
+ it.map { element ->
769
+ barcodeExtendedElementsJson.put(
770
+ element.key.name.replaceFirstChar { char -> char.lowercase() },
771
+ element.value
772
+ )
773
+ }
774
+ }
775
+ return barcodeExtendedElementsJson
776
+ }
777
+
778
+ private fun serializeParentInfo(parentInfo: ParentInfo): JSONObject {
779
+ val parentInfoJson = JSONObject()
780
+
781
+ parentInfo.firstName?.let {
782
+ parentInfoJson.put("firstName", serializeStringResult(it))
783
+ }
784
+
785
+ parentInfo.lastName?.let {
786
+ parentInfoJson.put("lastName", serializeStringResult(it))
787
+ }
788
+
789
+ return parentInfoJson
790
+ }
791
+
792
+ private fun serializeStringType(value: Any?): Any? {
793
+ return when (value) {
794
+ is StringResult -> serializeStringResult(value)
795
+ is String -> value
796
+ else -> null
797
+ }
798
+ }
799
+
800
+ private fun encodeBase64Image(image: Bitmap?): String? {
801
+ return image?.let { bmp ->
802
+ val outputStream = ByteArrayOutputStream()
803
+ outputStream.use { stream ->
804
+ bmp.compress(Bitmap.CompressFormat.JPEG, 95, stream)
805
+ Base64.encodeToString(
806
+ stream.toByteArray(),
807
+ Base64.NO_WRAP
808
+ )
809
+ }
810
+ }
739
811
  }
740
- }
741
812
  }