예제 #1
0
        private IEnumerable <CloudPrintJob> UpdateCloudPrintJobs(CloudPrinter printer)
        {
            List <CloudPrintJob> jobs;

            dynamic fetchdata = HTTPHelper.PostCloudPrintUrlEncodedRequest(OAuthTicket, "fetch", new { printerid = printer.PrinterID });

            if (fetchdata.success)
            {
                jobs = ((IEnumerable <dynamic>)fetchdata.jobs).Select(j => new CloudPrintJobImpl(this, printer, j)).OfType <CloudPrintJob>().ToList();
            }
            else
            {
                jobs = new List <CloudPrintJob>();
            }

            foreach (CloudPrintJob job in jobs)
            {
                if (!_PrintJobs.ContainsKey(job.JobID))
                {
                    _PrintJobs[job.JobID] = job;
                    PrintJobProcessor.AddJob(job);
                    //Logger.Log(LogLevel.Info, "Received new print job {0} [{1}] owned by {2} for printer [{3}]", job.JobID, job.JobTitle, job.Username, job.Printer.Name);
                }
            }

            return(jobs);
        }
예제 #2
0
        public void DrawCloud_TestData_CorrectBitmap()
        {
            var imageSize    = new Size(1920, 1080);
            var cloudPrinter = new CloudPrinter(new[] { new TxtFileReader() });
            var bitmap       = cloudPrinter.DrawCloud("test.txt", new RectangleLayouter(new Point(imageSize / 2)), imageSize,
                                                      FontFamily.Families.First(x => x.Name == "Arial"), new SingleColorSelector(Color.Black));
            var correctResult = (Bitmap)Image.FromFile("test.png");

            Comparison(bitmap, correctResult).Should().BeTrue();
        }
예제 #3
0
 public Form1(CloudPrinter cloudPrinter, IEnumerable <IColorSelectorFabric> colorSelectors,
              IEnumerable <IBaseCloudLayouterFabric> layouters)
 {
     InitializeComponent();
     fontSelector.Items.AddRange(FontFamily.Families.Select(x => x.Name).ToArray());
     this.colorSelectors = colorSelectors.ToList();
     this.layouters      = layouters.ToList();
     layouterSelector.Items.AddRange(this.layouters.Select(x => x.Name).ToArray());
     colorSelectorSelector.Items.AddRange(this.colorSelectors.Select(x => x.Name).ToArray());
     this.cloudPrinter = cloudPrinter;
 }
예제 #4
0
        private void cboPrinters_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblNameFromList.Text = string.Empty;
            CloudPrinter printerInfo = (CloudPrinter)cboPrinters.SelectedItem;

            if (cboPrinters.SelectedItem != null)
            {
                lblNameFromList.Text        = printerInfo.defaultDisplayName;
                lblPrinterID.Text           = printerInfo.id;
                lblPrinterNameFromList.Text = printerInfo.defaultDisplayName;
            }
        }
예제 #5
0
 public Form1(CloudPrinter cloudPrinter, IEnumerable <IColorSelectorFabric> colorSelectors,
              IEnumerable <IBaseCloudLayouterFabric> layouters)
 {
     Result.OfAction(InitializeComponent).Then(_ =>
                                               fontSelector.Items.AddRange(FontFamily.Families.Select(x => x.Name).ToArray()))
     .Then(_ => this.colorSelectors = colorSelectors.ToList())
     .Then(_ => this.layouters      = layouters.ToList())
     .Then(_ => layouterSelector.Items.AddRange(this.layouters.Select(x => x.Name).ToArray()))
     .Then(_ => colorSelectorSelector.Items.AddRange(this.colorSelectors.Select(x => x.Name).ToArray()))
     .Then(_ => this.cloudPrinter = cloudPrinter)
     .OnFail(x => MessageBox.Show(x));
 }
예제 #6
0
        public IEnumerable <CloudPrintJob> UpdateCloudPrintJobs(string printerid)
        {
            CloudPrinter printer = GetCloudPrinterById(printerid);

            if (printer != null)
            {
                return(UpdateCloudPrintJobs(printer));
            }
            else
            {
                return(new CloudPrintJob[0]);
            }
        }
        public CloudPrintJobImpl(CloudPrintProxy proxy, CloudPrinter printer, dynamic job)
        {
            this._Proxy = proxy;
            this._Printer = printer;
            this._JobAttributes = job;
            string jobdirname = Path.Combine(Config.DataDirName, "PrintJobs", this.Username);
            this._PrintDataBasename = Path.Combine(jobdirname, job.id);
            this._PrintDataFileName = _PrintDataBasename + ".pdf";

            Directory.CreateDirectory(jobdirname);

            WriteJobData();
            WriteJobTicket();
            WriteJobXml();
            WriteJobJson();

            _PrintJobs[this.JobID] = this;
        }
예제 #8
0
        public CloudPrintJobImpl(CloudPrintProxy proxy, CloudPrinter printer, dynamic job)
        {
            this._Proxy         = proxy;
            this._Printer       = printer;
            this._JobAttributes = job;
            string jobdirname = Path.Combine(Config.DataDirName, "PrintJobs", this.Username);

            this._PrintDataBasename = Path.Combine(jobdirname, job.id);
            this._PrintDataFileName = _PrintDataBasename + ".pdf";

            Directory.CreateDirectory(jobdirname);

            WriteJobData();
            WriteJobTicket();
            WriteJobXml();
            WriteJobJson();

            _PrintJobs[this.JobID] = this;
        }
예제 #9
0
        private void UpdateCloudPrinter(CloudPrinter printer)
        {
            var reqdata = new
            {
                printproxydummyparameter = "",
                printerid    = printer.PrinterID,
                printer      = printer.Name,
                proxy        = Config.CloudPrintProxyID,
                description  = printer.Description,
                capsHash     = printer.CapsHash,
                status       = printer.Status,
                capabilities = printer.Capabilities,
                defaults     = printer.Defaults
            };

            string printersdir = Path.Combine(Config.DataDirName, "Printers");

            Directory.CreateDirectory(printersdir);
            File.WriteAllBytes(Path.Combine(printersdir, printer.PrinterID + ".capabilities.xml"), Encoding.UTF8.GetBytes(printer.Capabilities));
            File.WriteAllBytes(Path.Combine(printersdir, printer.PrinterID + ".defaults.xml"), Encoding.UTF8.GetBytes(printer.Defaults));

            var response = HTTPHelper.PostCloudPrintMultiPartRequest(OAuthTicket, "update", reqdata);
        }
예제 #10
0
        private string RegisterCloudPrinter(CloudPrinter printer)
        {
            Logger.Log(LogLevel.Debug, "Registering cloud printer [{0}]", printer.Name);

            var reqdata = new
            {
                printproxydummyparameter = "",
                printer      = printer.Name,
                proxy        = Config.CloudPrintProxyID,
                description  = printer.Description,
                capsHash     = printer.CapsHash,
                status       = printer.Status,
                capabilities = printer.Capabilities,
                defaults     = printer.Defaults
            };

            var response = HTTPHelper.PostCloudPrintMultiPartRequest(OAuthTicket, "register", reqdata);

            if (response.success == true)
            {
                printer.SetPrinterID(response.printers[0].id);

                Logger.Log(LogLevel.Debug, "Printer [{0}] has ID {1}", printer.Name, printer.PrinterID);

                if (Config.OAuthRefreshToken == null && OAuthCodePollURL == null)
                {
                    OAuthCodePollURL = response.polling_url;
                    return(response.complete_invite_url);
                }

                return(null);
            }
            else
            {
                throw new PrintProxyException(response.message);
            }
        }
예제 #11
0
        private IEnumerable<CloudPrintJob> UpdateCloudPrintJobs(CloudPrinter printer)
        {
            List<CloudPrintJob> jobs;

            dynamic fetchdata = HTTPHelper.PostCloudPrintUrlEncodedRequest(OAuthTicket, "fetch", new { printerid = printer.PrinterID });
            if (fetchdata.success)
            {
                jobs = ((IEnumerable<dynamic>)fetchdata.jobs).Select(j => new CloudPrintJobImpl(this, printer, j)).OfType<CloudPrintJob>().ToList();
            }
            else
            {
                jobs = new List<CloudPrintJob>();
            }

            foreach (CloudPrintJob job in jobs)
            {
                if (!_PrintJobs.ContainsKey(job.JobID))
                {
                    _PrintJobs[job.JobID] = job;
                    PrintJobProcessor.AddJob(job);
                    //Logger.Log(LogLevel.Info, "Received new print job {0} [{1}] owned by {2} for printer [{3}]", job.JobID, job.JobTitle, job.Username, job.Printer.Name);
                }
            }

            return jobs;
        }
예제 #12
0
        private void UpdateCloudPrinter(CloudPrinter printer)
        {
            var reqdata = new
            {
                printproxydummyparameter = "",
                printerid = printer.PrinterID,
                printer = printer.Name,
                proxy = Config.CloudPrintProxyID,
                description = printer.Description,
                capsHash = printer.CapsHash,
                status = printer.Status,
                capabilities = printer.Capabilities,
                defaults = printer.Defaults
            };

            string printersdir = Path.Combine(Config.DataDirName, "Printers");
            Directory.CreateDirectory(printersdir);
            File.WriteAllBytes(Path.Combine(printersdir, printer.Name + ".capabilities.xml"), Encoding.UTF8.GetBytes(printer.Capabilities));
            File.WriteAllBytes(Path.Combine(printersdir, printer.Name + ".defaults.xml"), Encoding.UTF8.GetBytes(printer.Defaults));

            var response = HTTPHelper.PostCloudPrintMultiPartRequest(OAuthTicket, "update", reqdata);
        }
예제 #13
0
        private string RegisterCloudPrinter(CloudPrinter printer)
        {
            Logger.Log(LogLevel.Debug, "Registering cloud printer [{0}]", printer.Name);

            var reqdata = new
            {
                printproxydummyparameter = "",
                printer = printer.Name,
                proxy = Config.CloudPrintProxyID,
                description = printer.Description,
                capsHash = printer.CapsHash,
                status = printer.Status,
                capabilities = printer.Capabilities,
                defaults = printer.Defaults
            };

            var response = HTTPHelper.PostCloudPrintMultiPartRequest(OAuthTicket, "register", reqdata);

            if (response.success == true)
            {
                printer.SetPrinterID(response.printers[0].id);

                Logger.Log(LogLevel.Debug, "Printer [{0}] has ID {1}", printer.Name, printer.PrinterID);

                if (Config.OAuthRefreshToken == null && OAuthCodePollURL == null)
                {
                    OAuthCodePollURL = response.polling_url;
                    return response.complete_invite_url;
                }

                return null;
            }
            else
            {
                throw new PrintProxyException(response.message);
            }
        }