Logging fixed. The connectivity between Android application and API Server fixed.

This commit is contained in:
Andrey Shabarshov 2022-02-04 17:32:40 +00:00
parent 55428f92f3
commit edfdfacb2d
8 changed files with 59 additions and 16 deletions

View File

@ -9,7 +9,7 @@ namespace QRBee.Droid.Services
{
internal class LocalSettings : ILocalSettings
{
public string QRBeeApiUrl => "https://192.169.0.12:5000";
public string QRBeeApiUrl => "https://10.0.2.2:7000";
public async Task SaveSettings(Settings settings)
{

View File

@ -7,12 +7,13 @@ namespace QRBee.Services
{
public class Settings
{
//TODO add ClientId
public string PIN { get; set; }
public bool IsRegistered { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string DateOfBirth { get; set; }
public DateTime DateOfBirth { get; set; }
public string CardNumber { get; set; }
public string ValidFrom { get; set; }
public string ExpirationDate { get; set; }

View File

@ -1,6 +1,7 @@
using System;
using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions;
using QRBee.Core;
using QRBee.Core.Data;
using QRBee.Services;
@ -38,7 +39,7 @@ namespace QRBee.ViewModels
public string Name { get; set; }
public string Email { get; set; }
public string DateOfBirth { get; set; }
public DateTime DateOfBirth { get; set; }
public string CardNumber { get; set; }
public string ValidFrom { get; set; }
public string ExpirationDate { get; set; }
@ -58,12 +59,23 @@ namespace QRBee.ViewModels
return;
_password1 = value;
Password1Color = (string.IsNullOrWhiteSpace(_password1) || _password1.Length < 8 ) ? Color.Red : Color.Green;
Password1Color = (CheckPassword(_password1)) ? Color.Green : Color.Red;
OnPropertyChanged(nameof(Password1));
OnPropertyChanged(nameof(Password1Color));
}
}
private static bool CheckPassword(string password)
{
if (string.IsNullOrWhiteSpace(password) || password.Length < 7)
{
return false;
}
return Regex.IsMatch(password, "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])");
//return string.IsNullOrWhiteSpace(password) || password.Length<8 && Regex.IsMatch(password, "[a-zA-Z0-9]");
}
public string Password2
{
get => _password2;
@ -82,13 +94,14 @@ namespace QRBee.ViewModels
private async void OnRegisterClicked(object obj)
{
using var client = new HttpClient();
using var client = new HttpClient(GetInsecureHandler());
var localSettings = DependencyService.Resolve<ILocalSettings>();
var service = new Core.Client.Client(localSettings.QRBeeApiUrl,client);
try
{
//TODO Check if ClientId already in LocalSettings. If Yes update data in database
//save local settings
var settings = new Settings
@ -109,7 +122,7 @@ namespace QRBee.ViewModels
await service.RegisterAsync(new RegistrationRequest
{
DateOfBirth = DateOfBirth,
DateOfBirth = DateOfBirth.ToString("yyyy-MM-dd"),
Email = Email,
Name = Name,
RegisterAsMerchant = false
@ -128,5 +141,19 @@ namespace QRBee.ViewModels
}
}
// This method must be in a class in a platform project, even if
// the HttpClient object is constructed in a shared project.
public HttpClientHandler GetInsecureHandler()
{
var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
{
if (cert.Issuer.Equals("CN=localhost"))
return true;
return errors == System.Net.Security.SslPolicyErrors.None;
};
return handler;
}
}
}

View File

@ -23,7 +23,7 @@ namespace QRBee.Api.Controllers
[HttpPost("Register")]
public Task<RegistrationResponse> Register([FromBody] RegistrationRequest value)
{
_logger.LogDebug($"Trying to register user {value.Name}");
_logger.LogInformation($"Trying to register user {value.Name}");
return _service.Register(value);
}

View File

@ -12,6 +12,7 @@ builder.Host.ConfigureLogging(logging =>
{
logging.ClearProviders();
GlobalContext.Properties["LOGS_ROOT"] = Environment.GetEnvironmentVariable("LOGS_ROOT") ?? "";
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
logging.AddLog4Net("log4net.config");
});

View File

@ -26,12 +26,13 @@ namespace QRBee.Api.Services
Validate(request);
var info = Convert(request);
//TODO Check that user doesn't exist(name,surname,dateOfBirth or Telephone number(get from Android))
var clientId = await _storage.PutUserInfo(info);
return new RegistrationResponse{ClientId = clientId};
}
//TODO Write an UpdateUser command
private static void Validate(RegistrationRequest request)
{
if (request == null)

View File

@ -7,8 +7,8 @@
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
"Default": "Trace"
//"Microsoft.AspNetCore": "Debug"
}
},
"AllowedHosts": "*"

View File

@ -6,10 +6,18 @@
</layout>
</appender>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<appender name="Console" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="DEBUG" />
<foreColor value="White" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<!-- Pattern to output the caller's file name and line number -->
<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
@ -25,10 +33,15 @@
</layout>
</appender>
<root>
<level value="ALL"/>
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
<bufferSize value="1"/>
<appender-ref ref="DebugAppender" />
<appender-ref ref="Console" />
<appender-ref ref="RollingFile" />
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="BufferingForwardingAppender" />
</root>
</log4net>