Skip to content

Commit 99e660f

Browse files
Merge pull request #45 from regulaforensics/rcl-request
ContainerList as process param
2 parents be13143 + 1f44f04 commit 99e660f

File tree

15 files changed

+442
-18
lines changed

15 files changed

+442
-18
lines changed

.github/workflows/nuget-publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ jobs:
1111
- uses: actions/checkout@v2
1212
- uses: actions/setup-dotnet@v1
1313
with:
14-
dotnet-version: '3.1.x'
14+
dotnet-version: '6.0.x'
1515
- run: dotnet pack src/Regula.DocumentReader.WebClient -c Release -p:PackageVersion=${{github.event.release.name}}
1616
- run: dotnet nuget push src/Regula.DocumentReader.WebClient/bin/Release/Regula.DocumentReader.WebClient.${{github.event.release.name}}.nupkg -k ${{secrets.NUGET_AUTH_TOKEN}} -s https://api.nuget.org/v3/index.json

.github/workflows/run-smoke-test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ jobs:
1515
- uses: actions/checkout@v2
1616
- uses: actions/setup-dotnet@v1
1717
with:
18-
dotnet-version: '3.1.x'
18+
dotnet-version: '6.0.x'
1919
- run: dotnet build src/Regula.DocumentReader.NetCoreExample -c Release
20-
- working-directory: src/Regula.DocumentReader.NetCoreExample/bin/Release/netcoreapp3.1/
20+
- working-directory: src/Regula.DocumentReader.NetCoreExample/bin/Release/net6.0/
2121
run: ./Regula.DocumentReader.NetCoreExample
2222
env:
2323
API_BASE_PATH: "https://test-api.regulaforensics.com"

.openapi-generator/FILES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ src/Regula.DocumentReader.WebClient/Model/DocumentPositionResult.cs
2828
src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidates.cs
2929
src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesList.cs
3030
src/Regula.DocumentReader.WebClient/Model/DocumentTypesCandidatesResult.cs
31+
src/Regula.DocumentReader.WebClient/Model/EncryptedRCLResult.cs
3132
src/Regula.DocumentReader.WebClient/Model/FDSIDList.cs
3233
src/Regula.DocumentReader.WebClient/Model/FiberResult.cs
3334
src/Regula.DocumentReader.WebClient/Model/GraphicField.cs
@@ -45,6 +46,7 @@ src/Regula.DocumentReader.WebClient/Model/ImagesField.cs
4546
src/Regula.DocumentReader.WebClient/Model/ImagesFieldValue.cs
4647
src/Regula.DocumentReader.WebClient/Model/ImagesResult.cs
4748
src/Regula.DocumentReader.WebClient/Model/LexicalAnalysisResult.cs
49+
src/Regula.DocumentReader.WebClient/Model/LicenseResult.cs
4850
src/Regula.DocumentReader.WebClient/Model/ListVerifiedFields.cs
4951
src/Regula.DocumentReader.WebClient/Model/OCRSecurityTextResult.cs
5052
src/Regula.DocumentReader.WebClient/Model/OneCandidate.cs

Regula.DocumentReader.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Regula.DocumentReader.WebCl
66
EndProject
77
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Regula.DocumentReader.NetCoreExample", "src\Regula.DocumentReader.NetCoreExample\Regula.DocumentReader.NetCoreExample.csproj", "{EA417402-2843-4CA5-B712-4CD9425C02E4}"
88
EndProject
9+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Regula.DocumentReader.NetCoreExampleEncryptedRcl", "src\Regula.DocumentReader.NetCoreExampleEncryptedRcl\Regula.DocumentReader.NetCoreExampleEncryptedRcl.csproj", "{1A61741A-298F-4722-8626-00DF9787C683}"
10+
EndProject
911
Global
1012
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1113
Debug|Any CPU = Debug|Any CPU
@@ -20,6 +22,10 @@ Global
2022
{EA417402-2843-4CA5-B712-4CD9425C02E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
2123
{EA417402-2843-4CA5-B712-4CD9425C02E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
2224
{EA417402-2843-4CA5-B712-4CD9425C02E4}.Release|Any CPU.Build.0 = Release|Any CPU
25+
{1A61741A-298F-4722-8626-00DF9787C683}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26+
{1A61741A-298F-4722-8626-00DF9787C683}.Debug|Any CPU.Build.0 = Debug|Any CPU
27+
{1A61741A-298F-4722-8626-00DF9787C683}.Release|Any CPU.ActiveCfg = Release|Any CPU
28+
{1A61741A-298F-4722-8626-00DF9787C683}.Release|Any CPU.Build.0 = Release|Any CPU
2329
EndGlobalSection
2430
GlobalSection(SolutionProperties) = preSolution
2531
HideSolutionNode = FALSE

src/Regula.DocumentReader.NetCoreExample/Regula.DocumentReader.NetCoreExample.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<OutputType>Exe</OutputType>
4-
<TargetFramework>netcoreapp3.1</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
55
<Product>DocumentReader WebClient Example</Product>
66
<PackageId>Regula.DocumentReader.NetCoreExampple</PackageId>
77
</PropertyGroup>
88
<ItemGroup>
9-
<ProjectReference Include="..\Regula.DocumentReader.WebClient\Regula.DocumentReader.WebClient.csproj"/>
9+
<ProjectReference Include="..\Regula.DocumentReader.WebClient\Regula.DocumentReader.WebClient.csproj" />
1010
<None Update="WHITE.jpg">
1111
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1212
</None>
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using Regula.DocumentReader.WebClient.Api;
5+
using Regula.DocumentReader.WebClient.Model;
6+
using Regula.DocumentReader.WebClient.Model.Ext;
7+
using Regula.DocumentReader.WebClient.Model.Ext.Autheticity;
8+
9+
namespace Regula.DocumentReader.NetCoreExampleEncryptedRcl
10+
{
11+
internal static class Program
12+
{
13+
private const string API_BASE_PATH = "API_BASE_PATH";
14+
15+
public static void Main()
16+
{
17+
var apiBaseUrl = Environment.GetEnvironmentVariable(API_BASE_PATH)
18+
?? "https://api.regulaforensics.com";
19+
20+
var requestParams = new RecognitionParams()
21+
.WithScenario(Scenario.FULL_AUTH)
22+
.WithResultTypeOutput(new List<int>
23+
{
24+
// actual results
25+
Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES,
26+
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES, Result.DOCUMENT_POSITION,
27+
// legacy results
28+
Result.MRZ_TEXT, Result.VISUAL_TEXT, Result.BARCODE_TEXT, Result.RFID_TEXT,
29+
Result.VISUAL_GRAPHICS, Result.BARCODE_GRAPHICS, Result.RFID_GRAPHICS,
30+
Result.LEXICAL_ANALYSIS, Result.IMAGE_QUALITY
31+
});
32+
33+
var licenseString = File.ReadAllText("license.txt");
34+
var encryptedRclString = File.ReadAllText("encrypted-rcl.txt");
35+
36+
var licenseData = Convert.FromBase64String(licenseString);
37+
var encryptedRclData = Convert.FromBase64String(encryptedRclString);
38+
39+
var request = new RecognitionRequest(requestParams, new ContainerList(new List<ResultItem>()
40+
{
41+
new LicenseResult(licenseData, licenseData.Length, 0, 0, 0, Result.LICENSE),
42+
new EncryptedRCLResult(encryptedRclData, encryptedRclData.Length, 0, 0, 0, Result.ENCRYPTED_RCL)
43+
}));
44+
45+
var api = new DocumentReaderApi(apiBaseUrl);
46+
47+
var response = api.Process(request);
48+
49+
// overall status results
50+
var status = response.Status();
51+
var docOverallStatus = status.OverallStatus == CheckResult.OK ? "valid" : "not valid";
52+
var docOpticalTextStatus = status.DetailsOptical.Text == CheckResult.OK ? "valid" : "not valid";
53+
54+
// text results
55+
var docNumberField = response.Text().GetField(TextFieldType.DOCUMENT_NUMBER);
56+
var docNumberVisual = docNumberField.GetValue(Source.VISUAL);
57+
var docNumberMrz = docNumberField.GetValue(Source.MRZ);
58+
var docNumberVisualValidity = docNumberField.SourceValidity(Source.VISUAL);
59+
var docNumberMrzValidity = docNumberField.SourceValidity(Source.MRZ);
60+
var docNumberMrzVisualMatching = docNumberField.CrossSourceComparison(Source.MRZ, Source.VISUAL);
61+
62+
var docAuthenticity = response.Authenticity();
63+
var docIRB900 = docAuthenticity.IrB900Checks();
64+
var docIRB900Blank = docIRB900?.ChecksByElement(SecurityFeatureType.BLANK);
65+
66+
var docImagePattern = docAuthenticity.ImagePatternChecks();
67+
var docImagePatternBlank = docImagePattern?.ChecksByElement(SecurityFeatureType.BLANK);
68+
69+
var docImageQuality = response.ImageQualityChecks();
70+
71+
var info = api.Ping();
72+
Console.WriteLine("-----------------------------------------------------------------");
73+
Console.WriteLine($" API Version: {info.Version}");
74+
Console.WriteLine("-----------------------------------------------------------------");
75+
Console.WriteLine($" Document Overall Status: {docOverallStatus}");
76+
Console.WriteLine($" Document Optical Text Status: {docOpticalTextStatus}");
77+
Console.WriteLine($" Document Number Visual: {docNumberVisual}");
78+
Console.WriteLine($" Document Number MRZ: {docNumberMrz}", docNumberMrz);
79+
Console.WriteLine($"Validity Of Document Number Visual: {docNumberVisualValidity}");
80+
Console.WriteLine($" Validity Of Document Number MRZ: {docNumberMrzValidity}");
81+
Console.WriteLine($" MRZ-Visual values comparison: {docNumberMrzVisualMatching}");
82+
Console.WriteLine("-----------------------------------------------------------------");
83+
84+
// images results
85+
var documentImage = response.Images().GetField(GraphicFieldType.DOCUMENT_FRONT).GetValue();
86+
var portraitField = response.Images().GetField(GraphicFieldType.PORTRAIT);
87+
var portraitFromVisual = portraitField.GetValue(Source.VISUAL);
88+
89+
File.WriteAllBytes("document-image.jpg", documentImage);
90+
File.WriteAllBytes("portrait.jpg", portraitFromVisual);
91+
92+
// how to get low lvl individual results
93+
// var lexResult = response.ResultByType<LexicalAnalysisResult>(Result.LEXICAL_ANALYSIS);
94+
}
95+
}
96+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<OutputType>Exe</OutputType>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<Product>DocumentReader WebClient Example EncryptedRcl</Product>
6+
<PackageId>Regula.DocumentReader.NetCoreExampleEncryptedRcl</PackageId>
7+
</PropertyGroup>
8+
<ItemGroup>
9+
<ProjectReference Include="..\Regula.DocumentReader.WebClient\Regula.DocumentReader.WebClient.csproj"/>
10+
<None Update="license.txt">
11+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
12+
</None>
13+
<None Update="encrypted-rcl.txt">
14+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
15+
</None>
16+
</ItemGroup>
17+
</Project>

src/Regula.DocumentReader.NetCoreExampleEncryptedRcl/encrypted-rcl.txt

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AAEAAK/WKOtEs17ikF4B/IKdpwmj9p0KTx2OSFFdNba1eoDT5+8tDMeZEM4ucNYB3zqKknTIxH/7zTNpQtFLtzZlwmtWEgwfLLSdFdWTA63AI7RjRxD9gr2ci++l32k7iJvUnLy1XAMM6sEhij4Ui3s+MpObMhu6/EJWe9y/57uFB4Jzdwx34D9VAS1wj9O6MliCqKs9sIZNwohaddcg8sVYHKd76VqVvrZKN5HcW7nSjWoDDXWsLA3LW6INaU3SuWJJkDD1EqE6lvjWjKlxwe7B5h77csirRjI58HCXrbXL1g84n1FZ3uTgw7KfISxlQ+i99Zj9TbhSEiGPfnZFvk6LHARUBAAAAAAAECcDDWmiV6FtvHfS/mQmG7iPG16AxSAM1CZkciHkBeXKD+P3qYfPPKvOoC+VmgsKy3+YtFZbNtdrzWILttCv9PDHshglkIaC5qIwJCJUwmj7o2LHMtLyVVzLq15v3JULQ89HGa0Mgcjoo4Rporb/ARsRq5f9YaEamP6i2zmc88Fa4a4pxl3bBI3pDlu6qZ2SGRyysrkh19PUf3wNigE5i1kK7CMqi5TuUkuoyboog+bypE5CV8peAnrhcH0O8PzoDz0R8U3K+cy/BuyeP6eZ/0J8mk4QgVcaYDGRIeKPYWtvhdRa2j3ybItNfA2S2piTL6Mf9fEli5mpifBTNNGoZuzwEWxUH0vmco/zAFkH8dmkRQGSe9u8WjbgQHhIUIQ0aifGSJEbNocc/3kQsRTBhMT1By8C2cSJ20A0OnyY9nmWx9vpAeuCdMkTNOjAP/AZuZNZtmmRmBsoXpsAP+TOZ1hbimumcw/QSVUhKDVdLbIH03g45byy8Db1xe2uohSY65p9pRqIzgEMoCs/Is5ga+2jRxNlfGwer2AKxhWpxjqnGQJt9Asr9LI7IfCxrJnzBHxsH4a8iEZaSZXIhgwy6NhwIALVhRnohljzs/LBo2gpEVugBIdWHdbS/juGma8vGstWEj1yDpPBuavlj8/+lRpt8OVPZG99hMvaph50D3Q1hwlsxPw2Nz/8hQlP7PQ1JmzYULpVsnL2jPjpMdvjGOsyf3Niv4FakLHGyLpUb8GErzQpF4hCTyJyhAMCR2E6dBMT8E95BGSV8tEo5LzYK4nfSYJk8LDGVU4dvtxrLhbLeLr9OmNigVImKDKrZrIQLOJtCcb4q3V8HDQ5XeGsJ2pPRHDOJL7RjUEEbhb0w8ewTpJdDec2BUvZXMTwVLk4CED8mZwMssO6HEcnjy2JqVHU47sVwhpfKJIT+9deAzybEkTi+Mibs4MLBcaO6iaoQsaORvk87ERwXe4F/5JUz0uMoSoEbIPrR4s+MakfFsEDNSOBEl5LCmM2BvIFkqoVnzV5Ft+1mLhvYNgnkrwntnCf0Nt81ragY83Jumvs3QvSBw7M4WW1ANlKJfrGfgwwroISK0Ma5mXc40oKUIb7Jmgp+uwxr+Nka3DNBGG3qUUI/lM3N4ZkmPAOTbNwVHv+TDo62nFaCtCeaK31owNYKojWbc5Gf+FL8K34j01DzIJiUO+3wHs2pH39ePDregf8uvx/kTvvA8oqEZWMzjmYdMkV1o43/nvnlHiwl8Pyq4O2F5NX9LVxcQpw6nMPWlKe6zrluztm/gYO7h2Rt1ualZbO4DQvt8OuTwXvzxR1X9XWJ6qNZjYbMmnZp+tPpL+iO3St6sWWGEc5nelcCPOIBOoXwYo1SZxUa0ex//aiExfoaEL1aJO95ARWnKwXnVBJyEiRume5j/qFeFkwo5/XFiBt9bRluOMdWuNTOc5A25eFmuNr0n8eeE458Huyg7DiKQ==
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
/*
2+
* Regula Document Reader Web API
3+
*
4+
* Documents recognition as easy as reading two bytes. # Clients: * [JavaScript](https://github.com/regulaforensics/DocumentReader-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/DocumentReader-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/DocumentReader-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/DocumentReader-web-csharp-client) client for .NET & .NET Core
5+
*
6+
* The version of the OpenAPI document: 6.1.0
7+
*
8+
* Generated by: https://github.com/openapitools/openapi-generator.git
9+
*/
10+
11+
using System;
12+
using System.Linq;
13+
using System.IO;
14+
using System.Text;
15+
using System.Text.RegularExpressions;
16+
using System.Collections;
17+
using System.Collections.Generic;
18+
using System.Collections.ObjectModel;
19+
using System.Runtime.Serialization;
20+
using Newtonsoft.Json;
21+
using Newtonsoft.Json.Converters;
22+
using System.ComponentModel.DataAnnotations;
23+
using OpenAPIDateConverter = Regula.DocumentReader.WebClient.Client.OpenAPIDateConverter;
24+
25+
namespace Regula.DocumentReader.WebClient.Model
26+
{
27+
/// <summary>
28+
/// EncryptedRCLResult
29+
/// </summary>
30+
[DataContract]
31+
public partial class EncryptedRCLResult : ResultItem, IEquatable<EncryptedRCLResult>, IValidatableObject
32+
{
33+
/// <summary>
34+
/// Initializes a new instance of the <see cref="EncryptedRCLResult" /> class.
35+
/// </summary>
36+
[JsonConstructorAttribute]
37+
protected EncryptedRCLResult() { }
38+
/// <summary>
39+
/// Initializes a new instance of the <see cref="EncryptedRCLResult" /> class.
40+
/// </summary>
41+
/// <param name="encryptedRCL">Base64 encoded data (required).</param>
42+
public EncryptedRCLResult(byte[] encryptedRCL = default(byte[]), int bufLength = default(int), int light = default(int), int listIdx = default(int), int pageIdx = default(int), int resultType = 0) : base(bufLength, light, listIdx, pageIdx, resultType)
43+
{
44+
// to ensure "encryptedRCL" is required (not null)
45+
if (encryptedRCL == null)
46+
{
47+
throw new InvalidDataException("encryptedRCL is a required property for EncryptedRCLResult and cannot be null");
48+
}
49+
else
50+
{
51+
this.EncryptedRCL = encryptedRCL;
52+
}
53+
54+
}
55+
56+
/// <summary>
57+
/// Base64 encoded data
58+
/// </summary>
59+
/// <value>Base64 encoded data</value>
60+
[DataMember(Name="EncryptedRCL", EmitDefaultValue=true)]
61+
public byte[] EncryptedRCL { get; set; }
62+
63+
/// <summary>
64+
/// Returns the string presentation of the object
65+
/// </summary>
66+
/// <returns>String presentation of the object</returns>
67+
public override string ToString()
68+
{
69+
var sb = new StringBuilder();
70+
sb.Append("class EncryptedRCLResult {\n");
71+
sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n");
72+
sb.Append(" EncryptedRCL: ").Append(EncryptedRCL).Append("\n");
73+
sb.Append("}\n");
74+
return sb.ToString();
75+
}
76+
77+
/// <summary>
78+
/// Returns the JSON string presentation of the object
79+
/// </summary>
80+
/// <returns>JSON string presentation of the object</returns>
81+
public override string ToJson()
82+
{
83+
return JsonConvert.SerializeObject(this, Formatting.Indented);
84+
}
85+
86+
/// <summary>
87+
/// Returns true if objects are equal
88+
/// </summary>
89+
/// <param name="input">Object to be compared</param>
90+
/// <returns>Boolean</returns>
91+
public override bool Equals(object input)
92+
{
93+
return this.Equals(input as EncryptedRCLResult);
94+
}
95+
96+
/// <summary>
97+
/// Returns true if EncryptedRCLResult instances are equal
98+
/// </summary>
99+
/// <param name="input">Instance of EncryptedRCLResult to be compared</param>
100+
/// <returns>Boolean</returns>
101+
public bool Equals(EncryptedRCLResult input)
102+
{
103+
if (input == null)
104+
return false;
105+
106+
return base.Equals(input) &&
107+
(
108+
this.EncryptedRCL == input.EncryptedRCL ||
109+
(this.EncryptedRCL != null &&
110+
this.EncryptedRCL.Equals(input.EncryptedRCL))
111+
);
112+
}
113+
114+
/// <summary>
115+
/// Gets the hash code
116+
/// </summary>
117+
/// <returns>Hash code</returns>
118+
public override int GetHashCode()
119+
{
120+
unchecked // Overflow is fine, just wrap
121+
{
122+
int hashCode = base.GetHashCode();
123+
if (this.EncryptedRCL != null)
124+
hashCode = hashCode * 59 + this.EncryptedRCL.GetHashCode();
125+
return hashCode;
126+
}
127+
}
128+
129+
/// <summary>
130+
/// To validate all properties of the instance
131+
/// </summary>
132+
/// <param name="validationContext">Validation context</param>
133+
/// <returns>Validation Result</returns>
134+
IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
135+
{
136+
foreach(var x in base.BaseValidate(validationContext)) yield return x;
137+
yield break;
138+
}
139+
}
140+
141+
}

src/Regula.DocumentReader.WebClient/Model/Ext/RecognitionRequest.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ public RecognitionRequest(ProcessParams param, byte[] image)
1515
public RecognitionRequest(ProcessParams param, List<ProcessRequestImage> images)
1616
:base(param, images)
1717
{ }
18+
19+
public RecognitionRequest(ProcessParams param, ContainerList containerList)
20+
: base(param, null, containerList)
21+
{ }
1822
}
1923
}

0 commit comments

Comments
 (0)