from fastapi import FastAPI, UploadFile
from tika import parser
import uvicorn, re
from fastapi.middleware.cors import CORSMiddleware


def parse(pdf):
    content = parser.from_buffer(pdf)
    content = content['content'].split('\n')
    content = [c for c in content if c != '']
    total = float(re.findall(r'\d+[.]\d+', list(filter(lambda x: 'Razem' in x, content))[0])[-1])
    content = content[content.index('Sprzedawca:') : content.index('Nabywca:')]
    seller = content[1]
    vat_id = content[-1].replace('NIP: ', '')
    return {
        'vat_id' : vat_id,
        'seller' : seller,
        'total' : total
    }


app = FastAPI()

origins = ["*"]

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.post('/invoice')
async def root(file: UploadFile):
    return parse(file.file.read())

if __name__ == '__main__':
    uvicorn.run(app, host="0.0.0.0", port=8000)