public static async Task <LoginRequestResponse> LoginAsync(string userName, string password, HttpClient httpClient) { LoginRequestResponse loginResponse = new LoginRequestResponse(); var response = await httpClient.PostAsJsonAsync("ExternalServicesAccount/Login", new { AccountName = userName, AccountPassword = password }); if (response.IsSuccessStatusCode) { loginResponse = await response.Content.ReadAsAsync <LoginRequestResponse>(); } else { var responseErrorData = await response.Content.ReadAsStreamAsync(); var readStream = new StreamReader(responseErrorData, Encoding.UTF8); string dataString = await readStream.ReadToEndAsync(); var errorResponse = JsonConvert.DeserializeObject <LoginErrorResponse>(dataString); loginResponse.HasError = true; loginResponse.Error = errorResponse.Error; } return(loginResponse); }
static async Task MainAsync() { // Se configura el cliente http para realizar peticiones web client.BaseAddress = new Uri(apiBaseUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // Se hace el login de la aplicación // Se pueden leer el usuario y contraseña de un archivo para que sea más configurable loginObject = await LoginController.LoginAsync(apiUserName, apiPassword, client); if (loginObject.HasError) { // Se puede imprimir en un log txt Console.WriteLine($"Error de login: {loginObject.Error}"); return; } // Si el login se realizó correctamente se procede a realizar la actualización de los datos // Se le agrega a la petición el token de autorización client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", loginObject.Token); UsersController userCrtl = new UsersController(client); CreateUpdateUserResponse requestResponse = await userCrtl.CreateUpdateUsersAsync(); //Guardamos el log logger.Info(JsonConvert.SerializeObject(requestResponse)); if (!requestResponse.HasErrors) { // Se puede imprimir en un log txt Console.WriteLine($"Se finalizó correctamente la creación / actualización de {requestResponse.ProcessedItems} items de un total de {requestResponse.LoadedItems} items"); } else { foreach (var item in requestResponse.ErrorsDescription) { // Se puede imprimir en un log txt Console.WriteLine($" Línea {item.Line} - {item.ErrorDescription}"); } } }