1#![allow(unused)]
5
6use num_traits::FromPrimitive;
7
8use ipp_proto::{
9 ipp::{Operation, StatusCode},
10 request::IppRequestResponse,
11 IppVersion,
12};
13
14pub type IppServerResult = Result<IppRequestResponse, StatusCode>;
15
16pub trait IppRequestHandler {
18 fn print_job(&self, req: IppRequestResponse) -> IppServerResult {
20 Err(StatusCode::ServerErrorOperationNotSupported)
21 }
22
23 fn print_uri(&self, req: IppRequestResponse) -> IppServerResult {
25 Err(StatusCode::ServerErrorOperationNotSupported)
26 }
27
28 fn validate_job(&self, req: IppRequestResponse) -> IppServerResult {
30 Err(StatusCode::ServerErrorOperationNotSupported)
31 }
32
33 fn create_job(&self, req: IppRequestResponse) -> IppServerResult {
35 Err(StatusCode::ServerErrorOperationNotSupported)
36 }
37
38 fn send_document(&self, req: IppRequestResponse) -> IppServerResult {
40 Err(StatusCode::ServerErrorOperationNotSupported)
41 }
42
43 fn send_uri(&self, req: IppRequestResponse) -> IppServerResult {
45 Err(StatusCode::ServerErrorOperationNotSupported)
46 }
47
48 fn cancel_job(&self, req: IppRequestResponse) -> IppServerResult {
50 Err(StatusCode::ServerErrorOperationNotSupported)
51 }
52
53 fn get_job_attributes(&self, req: IppRequestResponse) -> IppServerResult {
55 Err(StatusCode::ServerErrorOperationNotSupported)
56 }
57
58 fn get_jobs(&self, req: IppRequestResponse) -> IppServerResult {
60 Err(StatusCode::ServerErrorOperationNotSupported)
61 }
62
63 fn get_printer_attributes(&self, req: IppRequestResponse) -> IppServerResult {
65 Err(StatusCode::ServerErrorOperationNotSupported)
66 }
67
68 fn hold_job(&self, req: IppRequestResponse) -> IppServerResult {
70 Err(StatusCode::ServerErrorOperationNotSupported)
71 }
72
73 fn release_job(&self, req: IppRequestResponse) -> IppServerResult {
75 Err(StatusCode::ServerErrorOperationNotSupported)
76 }
77
78 fn restart_job(&self, req: IppRequestResponse) -> IppServerResult {
80 Err(StatusCode::ServerErrorOperationNotSupported)
81 }
82
83 fn pause_printer(&self, req: IppRequestResponse) -> IppServerResult {
85 Err(StatusCode::ServerErrorOperationNotSupported)
86 }
87
88 fn resume_printer(&self, req: IppRequestResponse) -> IppServerResult {
90 Err(StatusCode::ServerErrorOperationNotSupported)
91 }
92
93 fn purge_jobs(&self, req: IppRequestResponse) -> IppServerResult {
95 Err(StatusCode::ServerErrorOperationNotSupported)
96 }
97
98 fn version(&self) -> IppVersion {
100 IppVersion::Ipp11
101 }
102
103 fn handle_request(&self, req: IppRequestResponse) -> IppServerResult {
105 match req.header().operation()? {
106 Operation::PrintJob => self.print_job(req),
107 Operation::PrintUri => self.print_uri(req),
108 Operation::ValidateJob => self.validate_job(req),
109 Operation::CreateJob => self.create_job(req),
110 Operation::SendDocument => self.send_document(req),
111 Operation::SendUri => self.send_uri(req),
112 Operation::CancelJob => self.cancel_job(req),
113 Operation::GetJobAttributes => self.get_job_attributes(req),
114 Operation::GetJobs => self.get_jobs(req),
115 Operation::GetPrinterAttributes => self.get_printer_attributes(req),
116 Operation::HoldJob => self.hold_job(req),
117 Operation::ReleaseJob => self.release_job(req),
118 Operation::RestartJob => self.restart_job(req),
119 Operation::PausePrinter => self.pause_printer(req),
120 Operation::ResumePrinter => self.resume_printer(req),
121 Operation::PurgeJobs => self.purge_jobs(req),
122 _ => Err(StatusCode::ServerErrorOperationNotSupported),
123 }
124 }
125}