/// <summary> /// Create Printer Job. /// </summary> /// <param name="printer"></param> /// <param name="printerJobObject"></param> /// <returns></returns> public static EFI_Fiery_API.FieryJobs.PrinterJobs CreatePrinterJob(Printer printer, EFI_Fiery_API.FieryJobs.CreatePrinterJob printerJobObject) { EFI_Fiery_API.FieryJobs.PrinterJobs printerJobs = null; Task task = Task.Run(async() => { string url = $"https://{printer.IPAddress}/live/api/v4/jobs"; using (Stream fileStream = new FileStream(printerJobObject.FilePath, FileMode.Open)) { CookieContainer cookieContainer = new CookieContainer(); cookieContainer.Add(SessionIDCookie); HttpClientHandler.Value.CookieContainer = cookieContainer; MultipartFormDataContent request = new MultipartFormDataContent { { new StreamContent(fileStream), "file", Path.GetFileName(printerJobObject.FilePath) }, { new StringContent(printerJobObject.NumberOfCopies.ToString()), "attributes[num copies]" } }; HttpResponseMessage response = await HttpClient.PostAsync(url, request); string data = await response.Content.ReadAsStringAsync(); printerJobs = Newtonsoft.Json.JsonConvert.DeserializeObject <EFI_Fiery_API.FieryJobs.PrinterJobs>(data); } }); Task.WaitAll(task); return(printerJobs); }
/// <summary> /// Update Printer Job. /// </summary> /// <param name="printer"></param> /// <param name="printerJobObjects"></param> /// <returns></returns> public static EFI_Fiery_API.FieryJobs.PrinterJobs UpdatePrinterJob(Printer printer, EFI_Fiery_API.FieryJobs.PrinterJobs printerJobObjects) { EFI_Fiery_API.FieryJobs.PrinterJobs printerJobs = new EFI_Fiery_API.FieryJobs.PrinterJobs { Data = new EFI_Fiery_API.FieryJobs.Data() { Items = new System.Collections.Generic.List <EFI_Fiery_API.FieryJobs.Item>() { } } }; foreach (EFI_Fiery_API.FieryJobs.Item printerJob in printerJobObjects.Data.Items) { Task task = Task.Run(async() => { string url = $"https://{printer.IPAddress}/live/api/v4/jobs/{printerJob.Id}"; using (HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Put, url)) { CookieContainer cookieContainer = new CookieContainer(); cookieContainer.Add(SessionIDCookie); HttpClientHandler.Value.CookieContainer = cookieContainer; JObject attributes = new JObject(); foreach (System.Reflection.PropertyInfo propertyInfo in printerJob.GetType().GetProperties()) { if (propertyInfo.CustomAttributes.Any(x => x.AttributeType.FullName == "Newtonsoft.Json.JsonPropertyAttribute")) { attributes[propertyInfo.CustomAttributes.Where(x => x.AttributeType.FullName == "Newtonsoft.Json.JsonPropertyAttribute") .Select(x => x.ConstructorArguments.First()) .First().Value.ToString()] = (dynamic)propertyInfo.GetValue(printerJob) ?? default; } else { attributes[propertyInfo.Name] = (dynamic)propertyInfo.GetValue(printerJob) ?? default; } } JObject payload = new JObject { ["attributes"] = attributes }; httpRequestMessage.Content = new StringContent(payload.ToString(), Encoding.UTF8, MEDIA_TYPE); HttpResponseMessage response = await HttpClient.SendAsync(httpRequestMessage); string data = await response.Content.ReadAsStringAsync(); EFI_Fiery_API.FieryJobs.PrinterJobs results = Newtonsoft.Json.JsonConvert.DeserializeObject <EFI_Fiery_API.FieryJobs.PrinterJobs>(data); printerJobs.Data.Items.Add(EFI.Fiery.PrinterJobs(printer, results.Data.Items[0].Id).Data.Items.First()); } }); Task.WaitAll(task); } return(printerJobs); }