/// <summary> /// /// </summary> /// <param name="printer"></param> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> private static async Task <EFI_Fiery_API.FieryLogin.Login> SendLoginRequest(Printer printer, string username, string password) { EFI_Fiery_API.FieryLogin.Login loginResponse = null; Task task = Task.Run(async() => { try { string url = $"https://{printer.IPAddress}/live/api/v4/login"; using (HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, url)) { string payload = new LoginRequest(username, password).ToString(); httpRequestMessage.Content = new StringContent(new LoginRequest(username, password).ToString(), System.Text.Encoding.UTF8, MEDIA_TYPE); HttpResponseMessage httpResponseMessage = await HttpClient.SendAsync(httpRequestMessage); loginResponse = JsonConvert.DeserializeObject <EFI_Fiery_API.FieryLogin.Login>(await httpResponseMessage.Content.ReadAsStringAsync()); if (httpResponseMessage.IsSuccessStatusCode) { SessionIDCookie = new Cookie("_session_id", GetSessionID(httpResponseMessage), "/", printer.IPAddress); loginResponse.IsSuccess = true; } else { loginResponse.IsSuccess = false; } } } catch (Exception ex) { loginResponse = new EFI_Fiery_API.FieryLogin.Login() { IsSuccess = false, Error = new EFI_Fiery_API.FieryLogin.LoginError() { Message = ex.Message } }; loginResponse.Error.Errors = new System.Collections.Generic.List <EFI_Fiery_API.FieryLogin.ErrorElement>(); foreach (var error in ex.TryGetInnerExceptionsErrors().Select(x => x.Message)) { loginResponse.Error.Errors.Add(new EFI_Fiery_API.FieryLogin.ErrorElement() { Message = error }); } } }); await task; return(loginResponse); }
/// <summary> /// Establishes authorized user access to the Fiery API features /// </summary> /// <param name="ipAddress"></param> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> public static EFI_Fiery_API.FieryLogin.Login Login(string ipAddress, string username, string password) { ApplyServerCertificateValidation(); EFI_Fiery_API.FieryLogin.Login loginResponse = SendLoginRequest(new Printer(ipAddress), username, password).Result; return(loginResponse); }