view restService/restService.py @ 25:6776aeff118c

added imageURL to the services
author dwinter
date Wed, 13 Mar 2013 10:37:32 +0100
parents 7fdd2d68fd6b
children cbae1998a2a9
line wrap: on
line source

'''
Created on 31.10.2012

@author: dwinter
'''


import web
import managePurls.manageIndexMetaPURLs as manageIndexMetaPURLs
from redirector import redirector 
import logging
from searcher import searcher
from searchService.searchLines import searchLines
from getPurls import getPurls
from searchService.searchSolr import searchSolr

import config


urls = (
    '/purl/(.+)','purl',
    '/docuview/(.+)','redirector',
    '/search','searcher',
    '/indexMeta/(.+)','indexMeta',
    '/','serviceDescription',
    '/searchLines','searchLines',
    '/searchLines/annotator/search','searchLines',
    '/getPurls','getPurls',
    '/searchSolr','searchSolr',
    '/imagePath/(.+)','imagePath',
    '/imageURL/(.+)','imageURL'
)


app = web.application(urls, globals())


SCALERPATH="http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler?fn=%s"



class serviceDescription:
    
    def __init__(self):
        self.render = web.template.render(config.TEMPLATE_PATH)
    def GET(self):
        
        return self.render.serviceDescription()

class indexMeta:
    
    def __init__(self):
        self.md=manageIndexMetaPURLs.IndexMetaPURLManager()
        

    def GET(self,purl):
        
        path,validity=self.md.getPathValidity(purl)
        
        if path is None:
            raise web.notfound("Cannnot find a URL to this path")
        
        if validity is manageIndexMetaPURLs.PERM_NON_VALID:
            raise web.notfound("PURL NON VALID ANYMORE!")
         
        if validity is manageIndexMetaPURLs.TEMP_NON_VALID:
            return web.notfound("PURL currently not VALID try later!")
       
        
        raise web.redirect(config.TEXTER_URL%path)



class purl:
    
    def __init__(self):
        self.md=manageIndexMetaPURLs.IndexMetaPURLManager()
        
    def GET(self,purl):
        
        path,validity=self.md.getPathValidity(purl)
        
        if path is None:
            raise web.notfound("Cannnot find a URL to this purl")
        
        if validity is manageIndexMetaPURLs.PERM_NON_VALID:
            raise web.notfound("PURL NON VALID ANYMORE!")
         
        if validity is manageIndexMetaPURLs.TEMP_NON_VALID:
            return web.notfound("PURL currently not VALID try later!")
       
        
        return path
        
    
class imagePath:
    
    def __init__(self):
        self.md=manageIndexMetaPURLs.IndexMetaPURLManager()
        
    def GET(self,purl):
        
        path,validity=self.md.getImagePathValidity(purl)
        
        if path is None:
            raise web.notfound("Cannnot find a URL to this purl")
        
        if validity is manageIndexMetaPURLs.PERM_NON_VALID:
            raise web.notfound("PURL NON VALID ANYMORE!")
         
        if validity is manageIndexMetaPURLs.TEMP_NON_VALID:
            return web.notfound("PURL currently not VALID try later!")
       
        
        return path
        
    
class imageURL:
    def __init__(self):
        self.md=manageIndexMetaPURLs.IndexMetaPURLManager()
        
    def GET(self,purl):
        
        #first try check if path stored
        path,validity=self.md.getImagePathValidity(purl)
        
        if path=="":
            print "no path"
            #second try gessing
            path,validity=self.md.getPathValidity(purl)
            
            path=path.replace("index.meta","pageimg") #hope that images are stored at the required place
             
            if path.startswith("http"): # there is a url stored, than this cannot be a path for the image server
                raise web.notfound("NO IMAGE PATH STORED FOUND AN URL(%s)!"%path)



        if validity is manageIndexMetaPURLs.PERM_NON_VALID:
            raise web.notfound("PURL NON VALID ANYMORE!")
         
        if validity is manageIndexMetaPURLs.TEMP_NON_VALID:
            return web.notfound("PURL currently not VALID try later!")
        
        
        data = web.input()
        
        if not 'dw' in data.keys():
            data['dw']="100"
       
        if not 'dh' in data.keys():
            data['dh']="100"
          
        
        return SCALERPATH%path+"&"+"&".join(["%s=%s"%(key,value) for key,value in data.items()])
        
 #http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler?fn=/permanent/echo/hellinomnimon/Gazis-Gram_A/img&dw=1298&dh=915&pn=3       
       
if __name__ == "__main__":
    app.run()