Skip to content
Snippets Groups Projects
Select Git revision
  • 5e6616d2eae45a5bca4045ea7fcffd6f668c659b
  • main default protected
2 results

get_pub_from_input.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    main.py 2.50 KiB
    from fastapi import FastAPI, Request, Query
    from fastapi.staticfiles import StaticFiles
    from fastapi.templating import Jinja2Templates
    from fastapi.encoders import jsonable_encoder
    from fastapi.responses import JSONResponse
    from common.query_parser import QueryParser
    from common.enums import *
    from common.diagnostics import Diagnostic
    from common.config import ResourceConfig
    import json
    import os
    import re
    import uvicorn
    
    rxExt = re.compile('\\.[^.]*$')
    
    app = FastAPI()
    app.mount('/static', StaticFiles(directory='static'), name='static')
    templates = Jinja2Templates(directory='static')
    
    app.qp = QueryParser()
    app.configs = {}
    i = 0
    for fname in os.listdir('config'):
        if not fname.lower().endswith('.json'):
            continue
        i += 1
        fnameFull = os.path.join('config', fname)
        fnameNoExt = rxExt.sub('', fname)
        app.configs[fnameNoExt] = ResourceConfig(fnameFull)
    
    
    @app.get('/')
    def root():
        return {"message": "Hello World"}
    
    
    @app.get('/fcs-endpoint/{platform}/{corpusID}')
    def endpoint(
            platform: CorpPlatform,
            corpusID: str,
            operation: Operation = Operation.explain,
            version: SRUVersion = SRUVersion.v2_0,
            queryType: QueryType = QueryType.fcs,
            query: str = '',
            xFcsEndpointDescription: str = Query(
                default='',
                alias='x-fcs-endpoint-description'
            ),
            xFcsContext: str = Query(
                default='',
                alias='x-fcs-context'
            ),
            xFcsDataviews: str = Query(
                default='',
                alias='x-fcs-dataviews'
            ),
            xFcsRewritesAllowed: str = Query(
                default='',
                alias='x-fcs-rewrites-allowed'
            )
            ):
        diagnostics = app.qp.validate_query(operation, version, queryType, query,
                                            xFcsEndpointDescription, xFcsContext,
                                            xFcsDataviews, xFcsRewritesAllowed)
        if any(d.is_fatal() for d in diagnostics):
            return '\n'.join(str(d) for d in diagnostics)
    
        if platform == CorpPlatform.annis:
            return {'platform': 'annis', 'operation': operation, 'version': version}
        elif platform == CorpPlatform.litterae:
            return {'platform': 'litterae', 'operation': operation, 'version': version}
        elif platform == CorpPlatform.tsakorpus:
            return {'platform': 'tsakorpus', 'operation': operation, 'version': version}
        return
    
    
    if __name__ == '__main__':
        uvicorn.run(
            'main:app',
            host='0.0.0.0',
            port=5000,
            reload=True
        )