Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }