/// <summary> /// Get printer detail /// reference: https://developers.google.com/cloud-print/docs/appInterfaces#printer /// </summary> /// <param name="request">Parameters for /printer interface</param> /// <param name="cancellationToken">Cancellation token</param> /// <returns>Response from google cloud</returns> public async Task <PrinterResponse> GetPrinterAsync(PrinterRequest request, CancellationToken cancellationToken = default(CancellationToken)) { await UpdateTokenAsync(cancellationToken); var form = new Dictionary <string, string>(); form.Add("printerid", request.PrinterId); if (!string.IsNullOrEmpty(request.Client)) { form.Add("client", request.Client); } if (!string.IsNullOrEmpty(request.ExtraFields)) { form.Add("extra_fields", request.ExtraFields); } form.Add("use_cdd", request.UseCdd.ToString()); if (request.PrinterConnectionStatus) { form.Add("printer_connection_status", request.PrinterConnectionStatus.ToString()); } return(await GoogleCloudPrintBaseUrl .AppendPathSegment("printer") .WithOAuthBearerToken(_token.AccessToken) .PostUrlEncodedAsync(form, cancellationToken) .ReceiveJsonButThrowIfFails <PrinterResponse>() .ConfigureAwait(false)); }
public async Task UpdatePrinter_ValidRequest_ShouldCommit() { //Arrange var guid = Guid.Parse("BF521211-CEAF-4DCA-82C7-40446D4C46ED"); var fakePrinter = new SiteConfiguration.API.Printers.Models.Data.Printer { PrinterKey = guid, PrinterModelKey = guid }; var fakePrinterModel = new SiteConfiguration.API.Printers.Models.Data.PrinterModel { PrinterModelKey = guid }; var fakePrinterRequest = new PrinterRequest(); _printerRepository.Setup(x => x.GetAsync(It.IsAny <Guid>())).ReturnsAsync(fakePrinter); _printerModelRepository.Setup(x => x.GetAsync(It.IsAny <Guid>())).ReturnsAsync(fakePrinterModel); //Act await printerBusiness.UpdatePrinter(guid, guid, fakePrinterRequest); //Assert _unitOfWork.Verify(x => x.CommitChanges(), Times.Once); }
public async Task AddPrinter_ValidRequest_ShouldReturnStatusCode201() { //Arrange var fakePrinterRequest = new PrinterRequest(); //Act var response = await printerController.AddPrinter(fakePrinterRequest) as StatusCodeResult; //Assert Assert.Equal(201, response.StatusCode); }
public async Task UpdatePrinter_ValidRequest_ShouldReturnOkStatus() { //Arrange var fakePrinterRequest = new PrinterRequest(); //Act var response = await printerController.UpdatePrinter(fakePrinterRequest) as OkResult; //Assert Assert.Equal(200, response.StatusCode); }
/// <summary> /// Get printer detail /// reference: https://developers.google.com/cloud-print/docs/appInterfaces#printer /// </summary> /// <param name="request">Parameters for /printer interface</param> /// <param name="cancellationToken">Cancellation token</param> /// <returns>Response from google cloud</returns> public async Task <PrintersResponse <PrinterRequest> > GetPrinterAsync(PrinterRequest request, CancellationToken cancellationToken = default(CancellationToken)) { await UpdateTokenAsync(cancellationToken); return(await GoogleCloudPrintBaseUrl .AppendPathSegment("printer") .WithOAuthBearerToken(_token.AccessToken) .PostRequestAsync(request, cancellationToken) .ReceiveJsonButThrowIfFails <PrintersResponse <PrinterRequest> >() .ConfigureAwait(false)); }
public async Task AddPrinter_Exception_ShouldReturnStatusCode500() { //Arrange _printerBusiness.Setup(x => x.AddPrinter(It.IsAny <PrinterRequest>(), It.IsAny <Guid>())).Throws(new Exception()); var fakePrinterRequest = new PrinterRequest(); //Act var response = await printerController.AddPrinter(fakePrinterRequest) as StatusCodeResult; //Assert Assert.Equal(500, response.StatusCode); }
public async Task UpdatePrinter_PrinterException_ShouldReturnBadRequest() { //Arrange var fakePrinterRequest = new PrinterRequest(); _printerBusiness.Setup(x => x.UpdatePrinter(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <PrinterRequest>())).ThrowsAsync(new InvalidPrinterException(Resource.ResourceManager.GetString($"E{ErrorCode.ResourceNotFound}"), ErrorCode.ResourceNotFound)); //Act var response = await printerController.UpdatePrinter(fakePrinterRequest) as BadRequestObjectResult; //Assert Assert.Equal(400, response.StatusCode); }
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); }
/// <summary> /// Adds a printer /// </summary> /// <param name="printerRequest"></param> /// <param name="facilityKey"></param> /// <returns></returns> public async Task AddPrinter(PrinterRequest printerRequest, Guid facilityKey) { var printerModel = await _printerModelRepository.GetAsync(printerRequest.PrinterModelKey); if (printerModel == null) { throw new InvalidPrinterException(Resource.ResourceManager.GetString($"E{ErrorCode.InvalidInput}"), ErrorCode.InvalidInput); } var printer = _mapper.Map <Models.Data.Printer>(printerRequest); var Id = Guid.NewGuid(); printer.PrinterKey = Id; printer.FacilityKey = facilityKey; await _printerRepository.AddAsync(printer); _unitOfWork.CommitChanges(); }
public async Task UpdatePrinter_InvalidRequest_ShouldNotCommit() { //Arrange var guid = Guid.Parse("BF521211-CEAF-4DCA-82C7-40446D4C46ED"); var fakePrinterRequest = new PrinterRequest(); //Act try { await printerBusiness.UpdatePrinter(guid, guid, fakePrinterRequest); } //Assert catch (Exception ex) { _unitOfWork.Verify(x => x.CommitChanges(), Times.Never); } }
public async Task AddPrinterKey_ValidRequest_ShouldCommit() { //Arrange var guid = Guid.Parse("BF521211-CEAF-4DCA-82C7-40446D4C46ED"); var fakeRequest = new PrinterRequest(); var fakeprintermodel = new SiteConfiguration.API.Printers.Models.Data.PrinterModel { PrinterModelKey = Guid.NewGuid(), DescriptionText = "testdescription" }; _printerModelRepository.Setup(x => x.GetAsync(It.IsAny <Guid>())).ReturnsAsync(fakeprintermodel); //Act await printerBusiness.AddPrinter(fakeRequest, guid); //Assert _unitOfWork.Verify(x => x.CommitChanges(), Times.Once); }
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"); } }
public async Task <IActionResult> AddPrinter([FromBody] PrinterRequest printer) { try { var facilityKey = Guid.Parse(_executionContextAccessor.Current.Facility.FacilityKey); _logger.LogInformation(string.Format(Constants.PostPrinterRequestReceived, facilityKey)); await _printerBusiness.AddPrinter(printer, facilityKey); return(StatusCode(201)); } catch (InvalidPrinterException invalidprinterexception) { _logger.LogError(invalidprinterexception.Message); return(BadRequest(new ErrorResponse(invalidprinterexception.Message, invalidprinterexception.HResult, ResponsePayloadType.BusinessException))); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode(500)); } }
/// <summary> /// update printer database /// </summary> /// <param name="key"></param> /// <param name="facilityKey"></param> /// <param name="printer"></param> /// <returns></returns> public async Task UpdatePrinter(Guid key, Guid facilityKey, PrinterRequest printer) { var printerModel = await _printerModelRepository.GetAsync(printer.PrinterModelKey); if (printerModel == null) { throw new InvalidPrinterException(Resource.ResourceManager.GetString($"E{ErrorCode.InvalidInput}"), ErrorCode.InvalidInput); } var dataModel = await _printerRepository.GetAsync(key); if (dataModel == null) { throw new InvalidPrinterException(Resource.ResourceManager.GetString($"E{ErrorCode.ResourceNotFound}"), ErrorCode.ResourceNotFound); } _mapper.Map(printer, dataModel); _printerRepository.Update(dataModel); _unitOfWork.CommitChanges(); }
public async Task <IActionResult> UpdatePrinter(PrinterRequest printer) { try { var key = Guid.Parse(RouteData.Values["key"].ToString()); var facilityKey = Guid.Parse(_executionContextAccessor.Current.Facility.FacilityKey); _logger.LogInformation(string.Format(Constants.PutPrinterRequestReceived, key)); await _printerBusiness.UpdatePrinter(key, facilityKey, printer); return(Ok()); } catch (InvalidPrinterException printerException) { _logger.LogError(printerException.Message); return(BadRequest(new ErrorResponse(printerException.Message, printerException.HResult, ResponsePayloadType.BusinessException))); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode(500)); } }
public List <PrinterModel> GetListPrinter(string StoreId, string AppKey, string AppSecret) { List <PrinterModel> model = new List <PrinterModel>(); try { PrinterRequest paraBody = new PrinterRequest(); paraBody.IsOnlyShowActiveItem = true; paraBody.StoreId = StoreId; paraBody.AppKey = AppKey; paraBody.AppSecret = AppSecret; NSLog.Logger.Info("GetListPrinter_Request: ", paraBody); var result = (ResponseBaseModels)ApiResponse.Post <ResponseBaseModels>(Commons.Printer_Get, null, paraBody); dynamic dataDynamic = result.Data; NSLog.Logger.Info("GetListPrinter_Response: ", result); var lstContent = JsonConvert.SerializeObject(dataDynamic["ListPrinter"]); model = JsonConvert.DeserializeObject <List <PrinterModel> >(lstContent); } catch (Exception ex) { NSLog.Logger.Info("GetListPrinter_False: ", ex); } return(model); }
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"); } }