Changeset 21 for pkipplib/trunk

Show
Ignore:
Timestamp:
06/02/06 21:10:02 (18 years ago)
Author:
jerome
Message:

Added support for HTTP Basic authentication ("AuthType? Basic"
and "AuthClass? User" in cupsd.conf).
Improved reliability.

Location:
pkipplib/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • pkipplib/trunk/pkipplib/pkipplib.py

    r18 r21  
    2525import sys 
    2626import urllib2 
     27import socket 
    2728from struct import pack, unpack 
    2829 
     
    293294             debug : a boolean value to output debug info on stderr. 
    294295        """ 
    295         self.url = url 
     296        if url.endswith("/") : 
     297            url = url[:-1] 
     298        self.url = url.replace("ipp://", "http://") 
    296299        self.username = username 
    297300        self.password = password 
     
    299302        self._data = data 
    300303        self.parsed = False 
     304        self.error = None 
    301305         
    302306        # Initializes message 
     
    571575        if not samerequestid : 
    572576            self.nextRequestId() 
    573         cx = urllib2.Request(url=url or self.url or "http://localhost:631/",  
     577             
     578        url = url or self.url or "http://localhost:631" 
     579        cx = urllib2.Request(url=url, \ 
    574580                             data=self.dump()) 
    575581        cx.add_header("Content-Type", "application/ipp") 
    576         response = urllib2.urlopen(cx) 
    577         datas = response.read() 
    578         ippresponse = IPPRequest(datas) 
    579         ippresponse.parse() 
    580         return ippresponse 
     582         
     583        username = username or self.username 
     584        password = password or self.password 
     585        if username : 
     586            password = password or "" 
     587            pwmanager = urllib2.HTTPPasswordMgrWithDefaultRealm() 
     588            pwmanager.add_password(None, \ 
     589                                   "%s%s" % (cx.get_host(), cx.get_selector()), \ 
     590                                   username, \ 
     591                                   password) 
     592            authhandler = urllib2.HTTPBasicAuthHandler(pwmanager)                        
     593            opener = urllib2.build_opener(authhandler) 
     594            urllib2.install_opener(opener) 
     595             
     596        try :     
     597            response = urllib2.urlopen(cx) 
     598        except (urllib2.HTTPError, socket.error), error :     
     599            self.error = error 
     600            return None 
     601        else :     
     602            self.error = None 
     603            datas = response.read() 
     604            ippresponse = IPPRequest(datas) 
     605            ippresponse.parse() 
     606            return ippresponse 
    581607         
    582608             
  • pkipplib/trunk/pkipplib/version.py

    r14 r21  
    2121# 
    2222 
    23 __version__ = "0.03" 
     23__version__ = "0.04" 
    2424 
    2525__doc__ = "pkipplib : IPP and CUPS support for Python." 
  • pkipplib/trunk/README

    r19 r21  
    109109from pkipplib import pkipplib 
    110110 
    111 # By default, connects to http://localhost:631 
     111# Create a CUPS client instance 
     112# cups = pkipplib.CUPS(url="http://server:631", username="john", password="blah!") 
    112113cups = pkipplib.CUPS() 
    113114 
  • pkipplib/trunk/tests/test.py

    r13 r21  
    2626import pkipplib         
    2727     
    28 cups = pkipplib.CUPS()     
    29 answer = cups.getPPD("HL6050DN") 
    30 #answer = cups.getJobAttributes(566) 
     28# cups = pkipplib.CUPS() 
     29cups = pkipplib.CUPS(url="http://localhost:631", \ 
     30                     username="jerome", \ 
     31                     password="9!kijd.7") 
     32# answer = cups.getPPD("HP2100") 
     33answer = cups.getJobAttributes(150) 
     34 
    3135print answer 
     36 
    3237#print answer.operation["attributes-charset"] 
    3338