Add ApiController

This commit is contained in:
DucDangAnh 2020-06-25 13:39:28 +07:00
parent 7529efa6d2
commit 73a13a249d
2 changed files with 181 additions and 0 deletions

View File

@ -76,6 +76,7 @@
<Compile Include="AIParkingApplicationForm.Designer.cs"> <Compile Include="AIParkingApplicationForm.Designer.cs">
<DependentUpon>AIParkingApplicationForm.cs</DependentUpon> <DependentUpon>AIParkingApplicationForm.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ApiController.cs" />
<Compile Include="AppConstant.cs" /> <Compile Include="AppConstant.cs" />
<Compile Include="C3DeviceController.cs" /> <Compile Include="C3DeviceController.cs" />
<Compile Include="Camera.cs" /> <Compile Include="Camera.cs" />

View File

@ -0,0 +1,180 @@
using System;
using System.Net.Http;
using System.Threading.Tasks;
using OpenCvSharp;
using Newtonsoft.Json;
namespace AIParkingApplication
{
public class ApiController : IDisposable
{
private HttpClient httpClient;
private bool isHttpClientDisposabled;
private int numberOfRetry;
private ApiPath apiPath;
public ApiController(string baseAddress, int numberOfRetry = 5)
{
httpClient = new HttpClient
{
BaseAddress = new Uri(baseAddress),
Timeout = TimeSpan.FromSeconds(5)
};
isHttpClientDisposabled = false;
this.numberOfRetry = numberOfRetry;
}
~ApiController()
{
Dispose();
}
//TODO Old API
public async Task<LoginResponseModel> Login(LoginModel loginData)
{
try
{
HttpResponseMessage response = await httpClient.PostAsJsonAsync("/api/login", loginData);
response.EnsureSuccessStatusCode();
var loginResult = await response.Content.ReadAsAsync<LoginResponseModel>();
return loginResult;
}
catch (Exception ex)
{
Console.WriteLine($"SendEngineRequest : {ex.Message}");
return new LoginResponseModel
{
IsLoggedIn = false
};
}
}
//TODO For New API
//public async Task<LoginResponseModel> Login(LoginModel loginData)
//{
// try
// {
// HttpResponseMessage response = await httpClient.PostAsJsonAsync("/api/login", loginData);
// response.EnsureSuccessStatusCode();
// var loginResult = await response.Content.ReadAsAsync<LoginResponseModel>();
// return loginResult;
// }
// catch (Exception ex)
// {
// Console.WriteLine($"SendEngineRequest : {ex.Message}");
// return new LoginResponseModel
// {
// IsLoggedIn = false
// };
// }
//}
public async void GetApiPathFromServer()
{
try
{
var request = new PlateRequestEngineModel
{
};
HttpResponseMessage response = await httpClient.PostAsJsonAsync("/get-from-frame", request);
response.EnsureSuccessStatusCode();
var ocrResult = await response.Content.ReadAsAsync<OcrResult>();
}
catch (Exception ex)
{
Console.WriteLine($"SendEngineRequest : {ex.Message}");
}
}
public async Task<OcrResult> SaveLogIn(Mat plateImage, PlateType plateType)
{
string plateImageBase64 = Convert.ToBase64String(plateImage.ToBytes());
try
{
var request = new PlateRequestEngineModel
{
Img64 = plateImageBase64,
Mode = plateType == PlateType.Square ? "square" : "long",
Display = "full"
};
HttpResponseMessage response = await httpClient.PostAsJsonAsync("/get-from-frame", request);
response.EnsureSuccessStatusCode();
var ocrResult = await response.Content.ReadAsAsync<OcrResult>();
return ocrResult;
}
catch (Exception ex)
{
Console.WriteLine($"SendEngineRequest : {ex.Message}");
return new OcrResult();
}
}
public void Dispose()
{
if (httpClient != null && !isHttpClientDisposabled)
{
isHttpClientDisposabled = true;
httpClient.Dispose();
}
}
}
public class ApiPath
{
[JsonProperty("savelogsin")] //wtf is this from server.
public string SaveVehicleIn { get; set; }
}
public class LoginModel
{
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
}
public class LoginResponseOldModel
{
}
public class LoginResponseModel
{
[JsonProperty("")]
public bool IsLoggedIn { get; set; }
}
public class PlateLogModel
{
[JsonProperty("card")]
public string CardID { get; set; }
[JsonProperty("plate")]
public string PlateString { get; set; }
[JsonProperty("type")]
public string LaneType { get; set; }
[JsonProperty("mod")]
public string PlateMode { get; set; } //0 or 1
[JsonProperty("camera")]
public string CameraID { get; set; }
[JsonProperty("time")]
public string Time { get; set; }
[JsonProperty("plateImage")]
public string PlateImageBase64 { get; set; }
[JsonProperty("plateResultImage")]
public string PlateResultImageBase64 { get; set; }
[JsonProperty("plateFrameImage")]
public string PlateFrameImageBase64 { get; set; }
[JsonProperty("frameImage")]
public string FrameImageBase64 { get; set; }
}
}