private static void DeletePrinter()
        {
            var client      = new GoogleCloudPrintClient(provider, token);
            var listRequest = new ListRequest {
                Proxy = proxy
            };
            var listResponse = client.ListPrinterAsync(listRequest).Result;

            if (listResponse.Printers != null && listResponse.Printers.Any())
            {
                for (int i = 0; i < listResponse.Printers.Count(); i++)
                {
                    Console.WriteLine($"{i + 1}. {listResponse.Printers.ElementAt(i).DisplayName}");
                }
                Console.Write("Please choose a printer to delete: ");
                int option = -1;
                if (int.TryParse(Console.ReadLine(), out option))
                {
                    var printer       = listResponse.Printers.ElementAt(option - 1);
                    var deleteRequest = new DeleteRequest {
                        PrinterId = printer.Id
                    };
                    var deleteResponse = client.DeletePrinterAsync(deleteRequest).Result;
                    Console.WriteLine($"Delete: {deleteResponse.Success}");
                }
            }
            else
            {
                Console.WriteLine("There is no printer to delete!");
            }
        }
        public void SubmitPrint(GoogleCloudPrintClient client)
        {
            // Create a cloud job ticket first, it contains the printer setting of the document
            var cjt = new CloudJobTicket
            {
                Print = new PrintTicketSection
                {
                    Color = new ColorTicketItem {
                        Type = Color.Type.STANDARD_MONOCHROME
                    },
                    Duplex = new DuplexTicketItem {
                        Type = Duplex.Type.LONG_EDGE
                    },
                    PageOrientation = new PageOrientationTicketItem {
                        Type = PageOrientation.Type.LANDSCAPE
                    },
                    Copies = new CopiesTicketItem {
                        Copies = 1
                    }
                }
            };

            // Create a request for file submission, you can either submit a url with SubmitFileLink class, or a local file with SubmitFileStream class
            var request = new SubmitRequest
            {
                PrinterId = "d08832da-03e4-a068-885b-46ea9750f3eb",
                Title     = "teste",
                Ticket    = cjt,
                Content   = new SubmitFileLink("https://image.slidesharecdn.com/teste-140108070830-phpapp02/95/folha-de-teste-1-638.jpg?cb=1389164960") // or new SubmitFileStream(contentType, fileName, fileStream)
            };

            // Submit request
            var response = client.SubmitJobAsync(request).Result;
        }
        private static void GetUserProfile()
        {
            var client      = new GoogleCloudPrintClient(provider, token);
            var userProfile = client.GetUserProfileAsync().Result;

            Console.WriteLine("GivenName: {0}, Email: {1}, Picture: {2}, Link: {3}", userProfile.GivenName, userProfile.Email, userProfile.Picture, userProfile.Link);
        }
 static void RegisterPrinter()
 {
     try
     {
         var client = new GoogleCloudPrintClient(provider, token);
         var pq     = GetSelectedQueue();
         if (pq != null)
         {
             //string capabilities = GetCapabilitiesFromPrintQueue(pq);
             string capabilities = File.ReadAllText("cdd.txt");
             var    request      = new RegisterRequest
             {
                 Name = pq.FullName,
                 DefaultDisplayName = pq.FullName,
                 Proxy        = proxy,
                 Capabilities = capabilities,
                 UseCdd       = true
             };
             var googlePrinter = client.RegisterPrinterAsync(request).Result;
             Console.WriteLine($"Success: {googlePrinter.Success}");
         }
     }
     catch (System.AggregateException ex)
     {
         if (ex.InnerExceptions.Any())
         {
             Console.WriteLine(ex.InnerExceptions.First().Message);
         }
     }
 }
示例#5
0
        public bool DeletePrinter(string printerId)
        {
            var request = new DeleteRequest
            {
                PrinterId = printerId
            };
            var client = new GoogleCloudPrintClient(OAuth2Provider, RefreshToken.Value);

            return(client.DeletePrinterAsync(request).Result.Success);
        }
示例#6
0
        private static async void XmppTest()
        {
            var client = new GoogleCloudPrintClient(provider, token);

            client.OnXmppDebugLogging  += Client_OnXmppLogging;
            client.OnIncomingPrintJobs += Client_OnIncomingPrintJobs;
            client.OnTokenUpdated      += Client_OnTokenUpdated;
            await client.InitXmppAsync("salmonthinlion");

            //client.StopXmppAndCleanup();
        }
        public void PrintJob(GoogleCloudPrintClient client)
        {
            // Create a request to list jobs of a printer
            var listRequest = new JobListRequest
            {
                PrinterId = "d08832da-03e4-a068-885b-46ea9750f3eb",
                Status    = "QUEUED"
            };

            // Submit request
            var response = client.ListJobAsync(listRequest).Result;
        }
示例#8
0
        public Printer RegisterPrinter(string name)
        {
            var request = new RegisterRequest
            {
                Name         = name,
                Proxy        = Proxy.Value,
                Capabilities = Cdd.Value.ToCapabilities(),
                UseCdd       = true
            };
            var client = new GoogleCloudPrintClient(OAuth2Provider, RefreshToken.Value);

            return(client.RegisterPrinterAsync(request).Result.Printers[0]);
        }
        public void testeAsync()
        {
            var client = new GoogleCloudPrintClient(provider, token);


            var request1 = new ListRequest {
                Proxy = "db9ab847-832e-4a0c-ab76-3673be68e9c1"
            };
            var response1 = client.ListPrinterAsync(request1).Result;

            //SubmitPrint(client);

            PrintJob(client);
        }
示例#10
0
        private static void Test()
        {
            var googClient = new GoogleCloudPrintClient(provider, token);

            using (var client = new WebClient())
            {
                client.Headers.Add("X-CloudPrint-Proxy", proxy);
                var authToken = googClient.GetTokenAsync().Result.AccessToken;
                client.Headers.Add("Authorization", string.Format("Bearer {0}", authToken));
                client.OpenRead("https://www.google.com/cloudprint/download?id=71a1c2f9-62a8-884a-a673-114db79b87bf");
                var bytes_total = Convert.ToInt64(client.ResponseHeaders["Content-Length"]);
                Console.WriteLine(bytes_total.ToString() + " Bytes");
            }
        }
        static async Task Main(string[] args)
        {
            var clientId     = "#printClientId#";
            var clientSecret = "#printClientSecret#";
            var printerId    = "#printer-id#";
            var credPath     = $"cerd.json";

            var provider = new GoogleCloudPrintOAuth2Provider(clientId, clientSecret);

            var jsonString = System.IO.File.ReadAllText(credPath);

            Token token = JsonConvert.DeserializeObject <Token>(jsonString);

            var client = new GoogleCloudPrintClient(provider, token);

            client.OnTokenUpdated += (sender, e) =>
            {
                string json = JsonConvert.SerializeObject(e);
                System.IO.File.WriteAllText(credPath, json);
            };

            var ticket = new CloudJobTicket
            {
                Print = new PrintTicketSection
                {
                    Color = new ColorTicketItem {
                        Type = Color.Type.STANDARD_MONOCHROME
                    },
                    //Duplex = new DuplexTicketItem { Type = Duplex.Type.LONG_EDGE },
                    PageOrientation = new PageOrientationTicketItem {
                        Type = PageOrientation.Type.LANDSCAPE
                    },
                    Copies = new CopiesTicketItem {
                        Copies = 1
                    }
                }
            };

            // Create a request for file submission, you can either submit a url with SubmitFileLink class, or a local file with SubmitFileStream class
            var request = new SubmitRequest
            {
                PrinterId = printerId,
                Title     = "Ebay-Printer",
                Ticket    = ticket,
                Content   = new SubmitFileLink("URL HERE")
            };

            // Submit request
            var response = await client.SubmitJobAsync(request);
        }
示例#12
0
        public void UpdatePrinterTest()
        {
            Cleanup();

            var printer = RegisterPrinter("hello");

            var updateRequest = new UpdateRequest {
                PrinterId = printer.Id, Name = "world"
            };
            var client = new GoogleCloudPrintClient(OAuth2Provider, RefreshToken.Value);
            var u      = client.UpdatePrinterAsync(updateRequest).Result;

            Assert.Equal("world", u.Printer.Name);
        }
示例#13
0
        public void SearchPrinterTest()
        {
            Cleanup();

            RegisterPrinter("printerToSearch");

            var searchRequest = new SearchRequest()
            {
                Q = "^recent"
            };
            var client = new GoogleCloudPrintClient(OAuth2Provider, RefreshToken.Value);
            var lists  = client.SearchPrinterAsync(searchRequest).Result;

            Assert.Equal(true, lists.Success);
        }
示例#14
0
        public void GetPrinterTest()
        {
            Cleanup();

            const string PrinterName = "PrinterToGet";
            var          printer     = RegisterPrinter(PrinterName);

            var getRequest = new PrinterRequest {
                PrinterId = printer.Id
            };
            var client = new GoogleCloudPrintClient(OAuth2Provider, RefreshToken.Value);
            var p      = client.GetPrinterAsync(getRequest).Result;

            Assert.Equal(PrinterName, p.Printers[0].Name);
        }
        private static void SearchPrinter()
        {
            var client  = new GoogleCloudPrintClient(provider, token);
            var request = new SearchRequest()
            {
                Q = "^recent"
            };
            var result = client.SearchPrinterAsync(request).Result;

            Console.WriteLine("Success: {0}", result.Success);
            Console.WriteLine("Search Result: ");
            foreach (var printer in result.Printers)
            {
                Console.WriteLine(printer.Name);
            }
        }
示例#16
0
        public void Cleanup()
        {
            // Cleanup the environment
            var listRequest = new ListRequest {
                Proxy = Proxy.Value
            };
            var client = new GoogleCloudPrintClient(OAuth2Provider, RefreshToken.Value);
            var lists  = client.ListPrinterAsync(listRequest).Result;

            foreach (var p in lists.Printers)
            {
                var deleteRequest = new DeleteRequest {
                    PrinterId = p.Id
                };
                var success = client.DeletePrinterAsync(deleteRequest).Result;
            }
        }
示例#17
0
        public void ListPrinterTest()
        {
            Cleanup();

            RegisterPrinter("hihi_one");
            RegisterPrinter("hihi_two");
            RegisterPrinter("hihi_three");

            var listRequest = new ListRequest()
            {
                Proxy = Proxy.Value
            };
            var client = new GoogleCloudPrintClient(OAuth2Provider, RefreshToken.Value);
            var lists  = client.ListPrinterAsync(listRequest).Result;

            Assert.Equal(3, lists.Printers.Count);
        }
        private static void SharePrinter()
        {
            var client      = new GoogleCloudPrintClient(provider, token);
            var listRequest = new ListRequest {
                Proxy = proxy
            };
            var listResponse = client.ListPrinterAsync(listRequest).Result;

            if (listResponse.Printers != null && listResponse.Printers.Any())
            {
                for (int i = 0; i < listResponse.Printers.Count; i++)
                {
                    Console.WriteLine($"{i + 1}. {listResponse.Printers.ElementAt(i).DisplayName}");
                }
                int printerOption = -1;
                Console.Write("Please choose a printer to share: ");
                if (int.TryParse(Console.ReadLine(), out printerOption))
                {
                    var printer = listResponse.Printers.ElementAt(printerOption - 1);
                    Console.Write("Please enter a google account to send share invitation: ");
                    string account      = Console.ReadLine();
                    var    shareRequest = new ShareRequest
                    {
                        PrinterId        = printer.Id,
                        Scope            = account,
                        Role             = Role.USER,
                        SkipNotification = false
                    };
                    var shareResponse = client.SharePrinterAsync(shareRequest).Result;
                    if (shareResponse.Success)
                    {
                        Console.WriteLine($"Invitaion is sent to {account}");
                    }
                    else
                    {
                        Console.WriteLine($"Invitation is not sent, error: {shareResponse.Message}");
                    }
                }
            }
            else
            {
                Console.WriteLine("There is no printer in the list");
            }
        }
示例#19
0
        static void ListAndGetPrinter()
        {
            var client      = new GoogleCloudPrintClient(provider, token);
            var listRequest = new ListRequest {
                Proxy = proxy
            };
            var listResponse = client.ListPrinterAsync(listRequest).Result;

            if (listResponse.Printers != null && listResponse.Printers.Any())
            {
                for (int i = 0; i < listResponse.Printers.Count; i++)
                {
                    Console.WriteLine($"{i + 1}. {listResponse.Printers.ElementAt(i).DisplayName}");
                }
                int printerOption = -1;
                Console.Write("Please choose a printer to look for details: ");
                if (int.TryParse(Console.ReadLine(), out printerOption))
                {
                    var printer        = listResponse.Printers.ElementAt(printerOption - 1);
                    var printerRequest = new PrinterRequest {
                        PrinterId = printer.Id
                    };
                    var printerResponse = client.GetPrinterAsync(printerRequest).Result;
                    if (printerResponse.Printers != null && printerResponse.Printers.Any())
                    {
                        var thePrinter = printerResponse.Printers.ElementAt(0);
                        var message    = new StringBuilder()
                                         .AppendLine($"Printer: {thePrinter.Name}")
                                         .AppendLine($"Model: {thePrinter.Model}")
                                         .ToString();
                        Console.WriteLine(message);
                    }
                    else
                    {
                        Console.WriteLine("No relevant printer is found.");
                    }
                }
            }
            else
            {
                Console.WriteLine("There is no printer in the list");
            }
        }
        private static void UnsharePrinter()
        {
            var client      = new GoogleCloudPrintClient(provider, token);
            var listRequest = new ListRequest {
                Proxy = proxy
            };
            var listResponse = client.ListPrinterAsync(listRequest).Result;

            if (listResponse.Printers != null && listResponse.Printers.Any())
            {
                for (int i = 0; i < listResponse.Printers.Count; i++)
                {
                    Console.WriteLine($"{i + 1}. {listResponse.Printers.ElementAt(i).DisplayName}");
                }
                int printerOption = -1;
                Console.Write("Please choose a printer to unshare: ");
                if (int.TryParse(Console.ReadLine(), out printerOption))
                {
                    var printer = listResponse.Printers.ElementAt(printerOption - 1);
                    Console.Write("Please enter a google account to unshare: ");
                    string account        = Console.ReadLine();
                    var    unshareRequest = new UnshareRequest
                    {
                        PrinterId = printer.Id,
                        Scope     = account
                    };
                    var unshareResponse = client.UnsharePrinterAsync(unshareRequest).Result;
                    if (unshareResponse.Success)
                    {
                        Console.WriteLine($"Printer {printer.Name} is unshared from {account}");
                    }
                    else
                    {
                        Console.WriteLine($"Printer unshare failed, error: {unshareResponse.Message}");
                    }
                }
            }
            else
            {
                Console.WriteLine("There is no printer in the list");
            }
        }
        private static bool DownloadTicket(GoogleCloudPrintClient client, Models.Job.Job printJob)
        {
            try
            {
                var ticket = client.GetTicketAsync(printJob.TicketUrl, proxy).Result;
                //var request = new TicketRequest { JobId = printJob.Id };
                //var ticket = client.GetCloudJobTicketAsync(request).Result;
                Directory.CreateDirectory(TicketFolderPath);
                string path = $"{Path.Combine(TicketFolderPath, Path.GetFileNameWithoutExtension(printJob.Title))}.xml";
                using (var s = File.Create(path))
                    ticket.Save(s);

                Console.WriteLine($"Ticket {printJob.Title} is saved.");
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(false);
            }
            return(true);
        }
 private static bool DownloadDocument(GoogleCloudPrintClient client, Models.Job.Job printJob)
 {
     try
     {
         using (var documentStream = client.GetDocumentAsync(printJob.FileUrl, proxy).Result)
         {
             Directory.CreateDirectory(DocumentFolderPath);
             string path = $"{Path.Combine(DocumentFolderPath, Path.GetFileNameWithoutExtension(printJob.Title))}.pdf";
             using (var fs = File.Create(path))
             {
                 documentStream.CopyTo(fs);
             }
         }
         Console.WriteLine($"Document {printJob.Title} is saved.");
     }
     catch (System.Exception ex)
     {
         Console.WriteLine(ex.ToString());
         return(false);
     }
     return(true);
 }
示例#23
0
        private static void RegisterPrinter()
        {
            try
            {
                var client = new GoogleCloudPrintClient(provider, token);
                var pqs    = GetPrintQueues();

                for (int i = 0; i < pqs.Count(); i++)
                {
                    Console.WriteLine("{0}. {1}", i, pqs.ElementAt(i).Key);
                }
                Console.Write("Select 1 printer to register: ");
                int index = Convert.ToInt32(Console.ReadLine());

                var request = new RegisterRequest
                {
                    Name = pqs.ElementAt(index).Key,
                    DefaultDisplayName = pqs.ElementAt(index).Key,
                    Proxy        = proxy,
                    Capabilities = File.ReadAllText(pqs.ElementAt(index).Value),
                    UseCdd       = false
                };

                Console.WriteLine("Prepare to register: {0} to {1}\n{2}", request.Name, request.Proxy, request.Capabilities.Substring(0, 32));
                Console.ReadLine();
                var googlePrinter = client.RegisterPrinterAsync(request).Result;
                Console.WriteLine($"Success: {googlePrinter.Success}");
            }
            catch (System.AggregateException ex)
            {
                if (ex.InnerExceptions.Any())
                {
                    Console.WriteLine(ex.InnerExceptions.First().Message);
                }
            }
        }
示例#24
0
        private static void SubmitJob()
        {
            var client      = new GoogleCloudPrintClient(provider, token);
            var listRequest = new ListRequest {
                Proxy = proxy
            };
            var listResponse = client.ListPrinterAsync(listRequest).Result;

            if (listResponse.Printers != null && listResponse.Printers.Any())
            {
                for (int i = 0; i < listResponse.Printers.Count; i++)
                {
                    Console.WriteLine($"{i + 1}. {listResponse.Printers.ElementAt(i).DisplayName}");
                }
                int printerOption = -1;
                Console.Write("Please choose a printer to submit job: ");
                if (int.TryParse(Console.ReadLine(), out printerOption))
                {
                    var printer        = listResponse.Printers.ElementAt(printerOption - 1);
                    var printerRequest = new PrinterRequest {
                        PrinterId = printer.Id
                    };
                    var printerResponse = client.GetPrinterAsync(printerRequest).Result;
                    if (printerResponse.Printers != null && printerResponse.Printers.Any())
                    {
                        Console.Write("Do you print from Url or a local document? (Y: Url, N: Local Document)");
                        bool isUrl = Console.ReadLine().ToLower().Contains("y");
                        Console.WriteLine("Please enter the path to the url/ the local document");
                        string path = Console.ReadLine();
                        var    cjt  = new CloudJobTicket
                        {
                            Print = new PrintTicketSection
                            {
                                Color = new ColorTicketItem {
                                    Type = Color.Type.STANDARD_MONOCHROME
                                },
                                Duplex = new DuplexTicketItem {
                                    Type = Duplex.Type.LONG_EDGE
                                },
                                PageOrientation = new PageOrientationTicketItem()
                                {
                                    Type = PageOrientation.Type.LANDSCAPE
                                },
                                Copies = new CopiesTicketItem()
                                {
                                    Copies = 3
                                }
                            }
                        };

                        JobResponse <SubmitRequest> response;
                        if (isUrl)
                        {
                            var request = new SubmitRequest
                            {
                                PrinterId = printer.Id,
                                Title     = Guid.NewGuid().ToString(),
                                Ticket    = cjt,
                                Content   = new SubmitFileLink(path)
                            };
                            response = client.SubmitJobAsync(request).Result;
                        }
                        else
                        {
                            using (var s = File.Open(path, FileMode.Open))
                            {
                                var request = new SubmitRequest()
                                {
                                    PrinterId = printer.Id,
                                    Title     = Path.GetFileNameWithoutExtension(path),
                                    Ticket    = cjt,
                                    Content   = new SubmitFileStream("text/plain", path, s)
                                };
                                response = client.SubmitJobAsync(request).Result;
                            }
                        }
                        Console.WriteLine("Success: {0}", response.Success);
                    }
                    else
                    {
                        Console.WriteLine("No relevant printer is found.");
                    }
                }
            }
            else
            {
                Console.WriteLine("There is no printer in the list");
            }
        }
        static void FetchJob()
        {
            try
            {
                var client = new GoogleCloudPrintClient(provider, token);

                var listRequest = new ListRequest {
                    Proxy = proxy
                };
                var listResponse = client.ListPrinterAsync(listRequest).Result;
                if (listResponse.Printers != null && listResponse.Printers.Any())
                {
                    for (int i = 0; i < listResponse.Printers.Count(); i++)
                    {
                        Console.WriteLine($"{i + 1}. {listResponse.Printers.ElementAt(i).DisplayName}");
                    }

                    // Choose printer
                    Console.Write("Please choose a printer to fetch job: ");
                    int printerOption = -1;
                    if (int.TryParse(Console.ReadLine(), out printerOption))
                    {
                        var printer = listResponse.Printers.ElementAt(printerOption - 1);

                        var fetchRequest = new FetchRequest {
                            PrinterId = printer.Id
                        };
                        var fetchResponse = client.FetchJobAsync(fetchRequest).Result;
                        if (fetchResponse.Success && fetchResponse.Jobs.Any())
                        {
                            for (int i = 0; i < fetchResponse.Jobs.Count(); i++)
                            {
                                Console.WriteLine($"{i + 1}. {fetchResponse.Jobs.ElementAt(i).Title}");
                            }

                            // Choose job on specific printer
                            Console.Write("Please choose a print job to download: ");
                            int printJobOption = -1;
                            if (int.TryParse(Console.ReadLine(), out printJobOption))
                            {
                                if (printJobOption == -1)
                                {
                                    return;
                                }
                                var printJob = fetchResponse.Jobs.ElementAt(printJobOption - 1);
                                if (DownloadTicket(client, printJob) && DownloadDocument(client, printJob))
                                {
                                    var updateRequest = new ControlRequest
                                    {
                                        JobId  = printJob.Id,
                                        Status = Models.Job.LegacyJobStatus.DONE
                                    };
                                    var updateResponse = client.UpdateJobStatusAsync(updateRequest).Result;
                                    Console.WriteLine($"Update job status: {updateResponse.Success}");
                                }
                            }
                            else
                            {
                                Console.WriteLine("Fail to choose print job");
                            }
                        }
                        else
                        {
                            Console.WriteLine("There is currently no job!");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("There is no printer to delete!");
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }