Advertisement
Guest User

Untitled

a guest
Jan 14th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.53 KB | None | 0 0
  1. public async Task<LoginResponse> SendLoginRequestAsync(string email, string password)
  2.         {
  3.             var request = new LoginRequest
  4.             {
  5.                 Email = email,
  6.                 Password = password,
  7.                 TenantId = BaseConstants.VVP_TENANT_ID,
  8.                 UserDevice = CreateUserDevice()
  9.             };
  10.  
  11.             var device = JsonConvert.SerializeObject(request.UserDevice);
  12.  
  13.             try
  14.             {
  15.                 HttpResponseMessage response;
  16.                 using (var nativeHandler = new NativeMessageHandler { DisableCaching = true })
  17.                 using (var client = new HttpClient(nativeHandler))
  18.                 {
  19.                     client.Timeout = TimeSpan.FromMilliseconds(10000);
  20.                     var cancellationTokenSrc = new CancellationTokenSource(TimeSpan.FromSeconds(10));
  21.                     var token = cancellationTokenSrc.Token;
  22.                     var url = $"{EnvironmentVariables.ServiceBaseUrl}api/User/Login";
  23.  
  24.                     var httpRequest = new HttpRequestMessage
  25.                     {
  26.                         Method = HttpMethod.Post,
  27.                         RequestUri = new Uri(url),
  28.                         Content =
  29.                             new StringContent(
  30.                                 $"grant_type=password&username={email}&password={password}&device={device}&tenantId={request.TenantId}&deviceId={_deviceId}")
  31.                     };
  32.                     httpRequest.Content.Headers.ContentType =
  33.                         new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded") { CharSet = "UTF-8" };
  34.  
  35.                     httpRequest.Headers.Add(Constants.DeviceHeaderKey, request.UserDevice.Id);
  36.                     response = await client.SendAsync(httpRequest, token);
  37.                 }
  38.  
  39.                 var result = await response.Content.ReadAsStringAsync();
  40.  
  41.                 if (result == null)
  42.                     return new LoginResponse
  43.                     {
  44.                         IsValid = false,
  45.                         IsLogged = false,
  46.                         Message = new MessageDto
  47.                         {
  48.                             Description = "Ocorreu um erro, por favor tente novamente mais tarde."
  49.                         }
  50.                     };
  51.  
  52.                 var bearerToken = JObject.Parse(result).ToString();
  53.  
  54.                 var error = JObject.Parse(bearerToken)["error_description"];
  55.                 if (error != null)
  56.                     return new LoginResponse
  57.                     {
  58.                         IsValid = false,
  59.                         IsLogged = false,
  60.                         Message = new MessageDto
  61.                         {
  62.                             Description = error.ToString()
  63.                         }
  64.                     };
  65.  
  66.                 _token = JObject.Parse(bearerToken)["access_token"].ToString();
  67.  
  68.                 var oauth = JObject.Parse(bearerToken)["OAuth"].ToString();
  69.  
  70.                 var loginResponseJson = DependencyService.Get<IEncryptionService>()
  71.                     .DESDecrypt(oauth, true, Constants.EncryptionKey);
  72.                 var loginResponse = JsonConvert.DeserializeObject<LoginResponse>(loginResponseJson);
  73.  
  74.                 if ((loginResponse != null) && loginResponse.IsLogged)
  75.                 {
  76.                     loginResponse.Token = _token;
  77.                     User = loginResponse.User;
  78.  
  79.                     Settings.AddOrUpdateValue(Constants.IsLoggedInKey, true);
  80.                     Settings.AddOrUpdateValue(Constants.LoginResponseKey,
  81.                         JsonConvert.SerializeObject(loginResponse));
  82.                 }
  83.                 LoginResponse = loginResponse;
  84.                 return loginResponse;
  85.             }
  86.             catch (Exception e)
  87.             {
  88.                 return new LoginResponse
  89.                 {
  90.                     IsValid = false,
  91.                     IsLogged = false,
  92.                     Message = new MessageDto
  93.                     {
  94.                         Description = "Ocorreu um erro, por favor tente novamente mais tarde."
  95.                     }
  96.                 };
  97.             }
  98.         }
  99.  
  100.  private UserDevice CreateUserDevice()
  101.         {
  102.             try
  103.             {
  104.                 var device = new UserDevice
  105.                 {
  106.                     Id = CrossDeviceInfo.Current.Id,
  107.                     OSVersion = CrossDeviceInfo.Current.Version,
  108.                     OS = CrossDeviceInfo.Current.Platform.ToString(),
  109.                     Model = CrossDeviceInfo.Current.Model,
  110.                     Manufacturer = DependencyService.Get<IDeviceService>().Manufacturer,
  111.                     AppVersion =
  112.                         EnvironmentVariables.Environment == AppEnvironment.Beta
  113.                             ? AppResources.AppVersionBeta
  114.                             : AppResources.AppVersionAlpha
  115.                 };
  116.  
  117.                 Settings.AddOrUpdateValue(Constants.DeviceHeaderKey, device.Id);
  118.  
  119.                 return device;
  120.             }
  121.             catch (Exception)
  122.             {
  123.                 return new UserDevice
  124.                 {
  125.                     OSVersion = "N/D",
  126.                     OS = "N/D",
  127.                     Model = "N/D",
  128.                     Manufacturer = "N/D",
  129.                     AppVersion =
  130.                         EnvironmentVariables.Environment == AppEnvironment.Beta
  131.                             ? AppResources.AppVersionBeta
  132.                             : AppResources.AppVersionAlpha
  133.                 };
  134.             }
  135.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement