Changeset 1933 for TI07-MOLES/trunk


Ignore:
Timestamp:
02/01/07 14:23:54 (13 years ago)
Author:
lawrence
Message:

Working shell for a wsgi security gatekeeper

Location:
TI07-MOLES/trunk/PythonCode/wsgi
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/PythonCode/wsgi/ndg.ini

    r1925 r1933  
    1616use=egg:paste#urlmap 
    1717/discovery=ndgWrapDiscovery 
    18 /browse=ndgBrowse 
     18/browse=ndgWrapGateBrowse 
    1919/cookie=cookieEG 
    2020/layout=layout 
    2121/retrieve=ndgWrapRetrieve 
     22 
     23#[filter-app:exception] 
     24#use=egg:paste#evalexception 
     25#next=ndgWrapGateBrowse 
    2226 
    2327[app:layout] 
     
    3337next = retrieve 
    3438 
     39[filter-app:ndgWrapGateBrowse] 
     40use=DiscoveryFrame 
     41next=GateKeeper 
     42 
     43[filter-app:GateKeeper] 
     44use=ndgGateKeeper 
     45next=retrieve 
     46 
     47[filter:ndgGateKeeper] 
     48paste.filter_factory = ndgGateKeeper:keeperFactory 
     49 
    3550[filter:DiscoveryFrame] 
    3651paste.filter_factory = ndgPageLayout:DiscoveryFrameFactory 
     
    3954paste.app_factory = ndgDiscovery:discoveryFactory 
    4055 
    41 [app:ndgBrowse] 
    42 paste.app_factory = ndgBrowse:browseFactory 
    43  
    4456[app:cookieEG] 
    4557paste.app_factory = cookieEG:cookieFactory 
  • TI07-MOLES/trunk/PythonCode/wsgi/ndgRetrieve.py

    r1925 r1933  
    2929    return ndg 
    3030 
    31           
     31class showDoc: 
     32    ''' Given an xml document (xml), of format ('DIF','DC','NDG-B1'), return 
     33    either the document rendered as "pretty" xml for printing, or as html  
     34    rendered by an appropriate application''' 
     35     
     36    def __init__(self,config): 
     37        self.config=config 
     38        self.renderer=renderEntity(self.config) 
     39         
     40    def get(self,xml,format,otype='html'): 
     41        if otype=='html': 
     42            if format=='DIF': 
     43                r=DIF(xml,self.config) 
     44            elif format=='NDG-B1': 
     45                r=stubB(xml,self.config) 
     46            elif format=='DC': 
     47                r=DC(xml) 
     48            r=self.renderer.render(r) 
     49        elif otype=='print': 
     50            x=xmlHandler.xmlHandler(xml,string=1) 
     51            r=x.html 
     52        elif otype=='xml': 
     53            return xml 
     54        else: 
     55            raise TypeError('Invalid output type [%s]'%otype) 
     56        return r 
     57 
    3258class ndgRetrieve: 
    3359     
     
    4571        self.configDir=configDir 
    4672        self.config=myConfig(configDir+'ndgDiscovery.config') 
    47         self.renderer=renderEntity(self.config) 
    48          
     73        self.shower=showDoc(self.config) 
    4974        # nb ... we don't instantiate the retrieval web service, since 
    5075        # we expect to potentially have multiple web services pointing 
     
    5883         
    5984        inputs=dict(parse_querystring(environ)) 
     85        print inputs 
    6086         
    61         ctype='text/html'   # default content type 
     87        ctype='text/html'   # default content type (since the default 
     88                            # may be an error return ...) the actual default 
     89                            # data type for return is xml. 
    6290        if 'uri' not in inputs.keys(): 
    6391            r=self.__prompt() 
     
    86114                    ws=DocumentRetrieve(db) 
    87115                    self.WScursors[db]=ws 
    88                  
    89116                try: 
    90                  
    91117                    if 'format' not in inputs.keys(): 
    92118                        format='NDG-B0' 
     
    100126                    r='<p> Unable to retrieve [%s], reason was [%s]</p>'%(uri,e) 
    101127                    ok=0 
     128            if ok: 
     129                outputType=inputs['type'] 
     130                if outputType!='xml':  
     131                    r=self.shower.get(r,format,otype=outputType) 
     132                else: 
     133                    ctype='text/xml' 
     134            start_response('200 OK', [('Content-Type', ctype)]) 
     135            return [r]     
    102136                 
    103             if ok: 
    104                 if 'type' not in inputs.keys():  
    105                     outputType='html' 
    106                 else: outputType=inputs['type'] 
    107                 if outputType=='xml': 
    108                     ctype='text/xml' 
    109                 elif outputType=='html': 
    110                     if format=='DIF': 
    111                         r=DIF(r,self.config) 
    112                     elif format=='NDG-B1': 
    113                         r=stubB(r,self.config) 
    114                     elif format=='DC': 
    115                         r=DC(r) 
    116                     r=self.renderer.render(r) 
    117                 elif outputType=='print': 
    118                     x=xmlHandler.xmlHandler(r,string=1) 
    119                     r=x.html 
    120                 else: 
    121                     raise TypeError('Invalid output type [%s]'%outputType) 
    122                      
    123         start_response('200 OK', [('Content-Type', ctype)]) 
    124         return [r] 
    125137     
    126138     
Note: See TracChangeset for help on using the changeset viewer.