// Copyright 2021, Henrik Sölver henrik.solver@gmail.com // SPDX-License-Identifier: BSD-3-Clause package main import "ippserver/packages/ipp" func handleGetPrinterAttributes(r *ipp.Request) *ipp.Response { response := ipp.NewResponse(ipp.SuccessfulOk, r.RequestID()) response.AddOperatonAttribute(ipp.NewCharSetValue("attributes-charset", "utf-8")) response.AddOperatonAttribute(ipp.NewNaturalLanguage("attributes-natural-language", "en")) response.AddPrinterAttribute(ipp.NewURIValue("printer-uri", "ipp://drpork:1234/ipp/print")) response.AddPrinterAttribute(ipp.NewtextWithoutLanguage("printer-make-and-model", "ChroBroPrint")) response.AddPrinterAttribute(ipp.NewEnum("printer-state", int32(ipp.Idle))) response.AddPrinterAttribute(ipp.NewEnum("operations-supported", int32(ipp.PrintJob), int32(ipp.ValidateJob), int32(ipp.CancelJob), int32(ipp.GetJobAttributes), int32(ipp.GetJobs), int32(ipp.GetPrinterAttributes))) response.AddPrinterAttribute(ipp.NewKeyWord("printer-state-reasons", "none")) response.AddPrinterAttribute(ipp.NewKeyWord("ipp-versions-supported", "1.0", "1.1", "2.0")) response.AddPrinterAttribute(ipp.NewKeyWord("ipp-features-supported", "wfds-print-1.0")) response.AddPrinterAttribute(ipp.NewMimeMediaType("document-format-supported", "image/pwg-raster")) response.AddPrinterAttribute(ipp.NewKeyWord("media-supported", "iso_a4_210x297mm")) response.AddPrinterAttribute(ipp.NewKeyWord("media-default", "iso_a4_210x297mm")) response.AddPrinterAttribute(ipp.NewKeyWord("output-mode-supported", "color", "auto", "monochrome")) response.AddPrinterAttribute(ipp.NewKeyWord("output-mode-default", "color")) response.AddPrinterAttribute(ipp.NewBoolean("color-supported", true)) response.AddPrinterAttribute(ipp.NewKeyWord("sides-supported", "one-sided", "two-sided-long-edge", "two-sided-short-edge")) response.AddPrinterAttribute(ipp.NewKeyWord("print-color-mode-supported", "auto", "color", "monochrome")) response.AddPrinterAttribute(ipp.NewKeyWord("job-creation-attributes-supported", "copies", "finishings", "ipp-attribute-fidelity", "job-name", "media", "media-col", "orientation-requested", "output-bin", "output-mode", "print-quality", "printer-resolution", "requesting-user-name", "sides", "print-color-mode")) response.AddPrinterAttribute(ipp.NewEnum("print-quality-supported", int32(4), int32(5))) //normal,high res1 := ipp.Resolution{CrossFeedResolution: 600, FeedResolution: 600, Unit: 3} res2 := ipp.Resolution{CrossFeedResolution: 2400, FeedResolution: 600, Unit: 3} response.AddPrinterAttribute(ipp.NewSetOfResolution("printer-resolution-default", res1)) response.AddPrinterAttribute(ipp.NewSetOfResolution("printer-resolution-supported", res1, res2)) response.AddPrinterAttribute(ipp.NewBoolean("printer-is-accepting-jobs", true)) return response }