Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public async Task<LoginResponse> SendLoginRequestAsync(string email, string password)
- {
- var request = new LoginRequest
- {
- Email = email,
- Password = password,
- TenantId = BaseConstants.VVP_TENANT_ID,
- UserDevice = CreateUserDevice()
- };
- var device = JsonConvert.SerializeObject(request.UserDevice);
- try
- {
- HttpResponseMessage response;
- using (var nativeHandler = new NativeMessageHandler { DisableCaching = true })
- using (var client = new HttpClient(nativeHandler))
- {
- client.Timeout = TimeSpan.FromMilliseconds(10000);
- var cancellationTokenSrc = new CancellationTokenSource(TimeSpan.FromSeconds(10));
- var token = cancellationTokenSrc.Token;
- var url = $"{EnvironmentVariables.ServiceBaseUrl}api/User/Login";
- var httpRequest = new HttpRequestMessage
- {
- Method = HttpMethod.Post,
- RequestUri = new Uri(url),
- Content =
- new StringContent(
- $"grant_type=password&username={email}&password={password}&device={device}&tenantId={request.TenantId}&deviceId={_deviceId}")
- };
- httpRequest.Content.Headers.ContentType =
- new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded") { CharSet = "UTF-8" };
- httpRequest.Headers.Add(Constants.DeviceHeaderKey, request.UserDevice.Id);
- response = await client.SendAsync(httpRequest, token);
- }
- var result = await response.Content.ReadAsStringAsync();
- if (result == null)
- return new LoginResponse
- {
- IsValid = false,
- IsLogged = false,
- Message = new MessageDto
- {
- Description = "Ocorreu um erro, por favor tente novamente mais tarde."
- }
- };
- var bearerToken = JObject.Parse(result).ToString();
- var error = JObject.Parse(bearerToken)["error_description"];
- if (error != null)
- return new LoginResponse
- {
- IsValid = false,
- IsLogged = false,
- Message = new MessageDto
- {
- Description = error.ToString()
- }
- };
- _token = JObject.Parse(bearerToken)["access_token"].ToString();
- var oauth = JObject.Parse(bearerToken)["OAuth"].ToString();
- var loginResponseJson = DependencyService.Get<IEncryptionService>()
- .DESDecrypt(oauth, true, Constants.EncryptionKey);
- var loginResponse = JsonConvert.DeserializeObject<LoginResponse>(loginResponseJson);
- if ((loginResponse != null) && loginResponse.IsLogged)
- {
- loginResponse.Token = _token;
- User = loginResponse.User;
- Settings.AddOrUpdateValue(Constants.IsLoggedInKey, true);
- Settings.AddOrUpdateValue(Constants.LoginResponseKey,
- JsonConvert.SerializeObject(loginResponse));
- }
- LoginResponse = loginResponse;
- return loginResponse;
- }
- catch (Exception e)
- {
- return new LoginResponse
- {
- IsValid = false,
- IsLogged = false,
- Message = new MessageDto
- {
- Description = "Ocorreu um erro, por favor tente novamente mais tarde."
- }
- };
- }
- }
- private UserDevice CreateUserDevice()
- {
- try
- {
- var device = new UserDevice
- {
- Id = CrossDeviceInfo.Current.Id,
- OSVersion = CrossDeviceInfo.Current.Version,
- OS = CrossDeviceInfo.Current.Platform.ToString(),
- Model = CrossDeviceInfo.Current.Model,
- Manufacturer = DependencyService.Get<IDeviceService>().Manufacturer,
- AppVersion =
- EnvironmentVariables.Environment == AppEnvironment.Beta
- ? AppResources.AppVersionBeta
- : AppResources.AppVersionAlpha
- };
- Settings.AddOrUpdateValue(Constants.DeviceHeaderKey, device.Id);
- return device;
- }
- catch (Exception)
- {
- return new UserDevice
- {
- OSVersion = "N/D",
- OS = "N/D",
- Model = "N/D",
- Manufacturer = "N/D",
- AppVersion =
- EnvironmentVariables.Environment == AppEnvironment.Beta
- ? AppResources.AppVersionBeta
- : AppResources.AppVersionAlpha
- };
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement