Changeset 9eeab06 for server


Ignore:
Timestamp:
Dec 18, 2011, 11:31:27 PM (12 years ago)
Author:
Jessica B. Hamrick <jhamrick@…>
Branches:
no-cups
Children:
0ede474
Parents:
b2e077a
git-author:
Jessica B. Hamrick <jhamrick@…> (12/18/11 23:31:27)
git-committer:
Jessica B. Hamrick <jhamrick@…> (12/18/11 23:31:27)
Message:

Using logging, not print statements; move skeleton handler functions into the correct class in server/requests.py

Location:
server/lib/gutenbach
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • server/lib/gutenbach/ipp/request.py

    rd04a689 r9eeab06  
    238238
    239239    def __repr__(self):
    240         return '<IPPRequest (version=%r, operation_id=%x, request_id=%r, attribute_groups=%r)>' % (self.version, self.operation_id, self.request_id, self.attribute_groups)
     240        val = '<IPPRequest (version=%r, ' % self.version
     241        val += 'operation_id=%x, ' % self.operation_id
     242        val += 'request_id=%r, ' % self.request_id
     243        val += 'attribute_groups=%r)>' % self.attribute_groups
     244        return val
  • server/lib/gutenbach/server/requests.py

    rb2e077a r9eeab06  
    3232        # look up the handler
    3333        handler = None
     34        handler_name = None
    3435        for d in dir(self):
    3536            if getattr(getattr(self, d), "ipp_operation", None) == request.operation_id:
    36                 handler = getattr(self, d)
     37                handler_name = d
    3738                break
    3839        # we couldn't find a handler, so default to unknown operation
    39         if handler is None:
    40             handler = self.unknown_operation
     40        if handler_name is None:
     41            handler_name = "unknown_operation"
    4142        # call the handler
     43        handler = getattr(self, handler_name)
     44        logger.debug("Sending request to handler '%s'" % handler_name)
    4245        handler(request, response)
    4346
    4447    def unknown_operation(self, request, response):
    45         print "Received unknown operation %x" % request.operation_id
     48        logger.warning("Received unknown operation 0x%x" % request.operation_id)
    4649        response.operation_id = const.StatusCodes.OPERATION_NOT_SUPPORTED
     50
     51    ##### Helper functions
    4752
    4853    def _get_printer_attributes(self, printer, request, response):
     
    6469
    6570        # make sure the printer-uri value is appropriate
    66         printername_attr = request.attribute_groups[0]['printer-uri']
    67         printername_value_tag = printername_attr.values[0].value_tag
    68         if printername_value_tag != const.CharacterStringTags.URI:
     71        printer_name_attr = request.attribute_groups[0]['printer-uri']
     72        printer_name_value_tag = printer_name_attr.values[0].value_tag
     73        if printer_name_value_tag != const.CharacterStringTags.URI:
    6974            raise MalformedIPPRequestException, \
    70                   "Expected URI value tag, got %s" % printername_value_tag
     75                  "Expected URI value tag, got %s" % printer_name_value_tag
    7176
    7277        # actually get the printer name
    73         printername_value = printername_attr.values[0].value
     78        printer_name_value = printer_name_attr.values[0].value
    7479        # XXX: hack -- CUPS will strip the port from the request, so
    7580        # we can't do an exact comparison (also the hostname might be
    7681        # different, depending on the CNAME or whether it's localhost)
    77         printername = printername_value.split("/")[-1]
    78 
    79         # make sure the printername is valid
    80         if printername not in self.printers:
    81             raise ValueError, "Invalid printer uri: %s" % printername_value
    82 
    83         return printername
     82        printer_name = printer_name_value.split("/")[-1]
     83
     84        # make sure the printer name is valid
     85        if printer_name not in self.printers:
     86            raise ValueError, "Invalid printer uri: %s" % printer_name_value
     87
     88        return printer_name
     89
     90    ##### Printer Commands
     91
     92    def print_job(self, request, response):
     93        pass
     94
     95    def validate_job(self, request, response):
     96        pass
     97
     98    @handler_for(const.Operations.GET_JOBS)
     99    def get_jobs(self, request, response):
     100        printer_name = self._get_printer_name(request)
     101        # Each job will append a new job attribute group.
     102        for job in self.printers[printer_name].get_jobs():
     103            self._get_job_attributes(job, request, response)
     104        response.operation_id = const.StatusCodes.OK
     105
     106    def print_uri(self, request, response):
     107        pass
     108
     109    def create_job(self, request, response):
     110        pass
     111
     112    def pause_printer(self, request, response):
     113        pass
     114
     115    def resume_printer(self, request, response):
     116        pass
     117
     118    @handler_for(const.Operations.GET_PRINTER_ATTRIBUTES)
     119    def get_printer_attributes(self, request, response):
     120        # this is just like cups_get_default, except the printer name
     121        # is given
     122        printer_name = self._get_printer_name(request)
     123        self._get_printer_attributes(self.printers[printer_name], request, response)
     124        response.operation_id = const.StatusCodes.OK
     125
     126    def set_printer_attributes(self, request, response):
     127        pass
     128
     129    ##### Job Commands
     130
     131    def cancel_job(self, request, response):
     132        pass
     133
     134    def send_document(self, request, response):
     135        pass
     136
     137    def send_uri(self, request, response):
     138        pass
     139
     140    def get_job_attributes(self, request, response):
     141        printer_name = self._get_printer_name(request)
     142        job_id = self._get_job_id(request)
     143        self._get_job_attributes(
     144            self.printers[printer_name].get_job(job_id), request, response)
     145
     146    def set_job_attributes(self, request, response):
     147        pass
     148
     149    def cups_get_document(self, request, response):
     150        pass
     151
     152    def restart_job(self, request, response):
     153        pass
     154
     155    def promote_job(self, request, response):
     156        pass
     157
     158
     159    ##### CUPS Specific Commands
    84160
    85161    @handler_for(const.Operations.CUPS_GET_DEFAULT)
    86162    def cups_get_default(self, request, response):
    87         print "get_default called"
    88163        self._get_printer_attributes(self.printers[self.default], request, response)
    89         response.operation_id = const.StatusCodes.OK
    90 
    91     @handler_for(const.Operations.GET_PRINTER_ATTRIBUTES)
    92     def get_printer_attributes(self, request, response):
    93         print "get_printer_attributes called"
    94 
    95         # this is just like cups_get_default, except the printer name
    96         # is given
    97         printername = self._get_printer_name(request)
    98         self._get_printer_attributes(self.printers[printername], request, response)
    99164        response.operation_id = const.StatusCodes.OK
    100165
    101166    @handler_for(const.Operations.CUPS_GET_PRINTERS)
    102167    def cups_get_printers(self, request, response):
    103         print "get_printers called"
    104        
    105168        # Each printer will append a new printer attribute group.
    106169        for printer in self.printers:
     
    110173    @handler_for(const.Operations.CUPS_GET_CLASSES)
    111174    def cups_get_classes(self, request, response):
    112         print "get_classes called"
    113175        response.operation_id = const.StatusCodes.OK
    114176        # We have no printer classes, so nothing to return.
    115 
    116     @handler_for(const.Operations.GET_JOBS)
    117     def get_jobs(self, request, response):
    118         print "get_jobs called"
    119 
    120         printername = self._get_printer_name(request)
    121         # Each job will append a new job attribute group.
    122         for job in self.printers[printername].get_jobs():
    123             self._get_job_attributes(job, request, response)
    124         response.operation_id = const.StatusCodes.OK
    125177
    126178class GutenbachIPPServer(BaseHTTPServer.BaseHTTPRequestHandler):
     
    142194        length = int(self.headers.getheader('content-length', 0))
    143195        request = ipp.Request(request=self.rfile, length=length)
    144         print "Received request:", repr(request)
     196        logger.debug("Received request: %s" % repr(request))
    145197
    146198        # Attributes
     
    168220        # Get the handler and pass it the request and response objects
    169221        self.root.handle(request, response)
    170         print "Sending response:", repr(response)
     222        logger.debug("Sending response: %s" % repr(response))
    171223
    172224        # Send the response across HTTP
     
    176228        self.end_headers()
    177229        self.wfile.write(response.packed_value)
    178 
    179     ##### Printer Commands
    180 
    181     def print_job(self, request):
    182         pass
    183 
    184     def validate_job(self, request):
    185         pass
    186 
    187     #def get_jobs(self, request):
    188     #    pass
    189 
    190     def print_uri(self, request):
    191         pass
    192 
    193     def create_job(self, request):
    194         pass
    195 
    196     def pause_printer(self, request):
    197         pass
    198 
    199     def resume_printer(self, request):
    200         pass
    201 
    202     def set_printer_attributes(self, request):
    203         pass
    204 
    205     ##### Job Commands
    206 
    207     def cancel_job(self, request):
    208         pass
    209 
    210     def get_job_attributes(self, request):
    211         pass
    212 
    213     def send_document(self, request):
    214         pass
    215 
    216     def send_uri(self, request):
    217         pass
    218 
    219     def set_job_attributes(self, request):
    220         pass
    221 
    222     def cups_get_document(self, request):
    223         pass
    224 
    225     def restart_job(self, request):
    226         pass
    227 
    228     def promote_job(self, request):
    229         pass
Note: See TracChangeset for help on using the changeset viewer.