FastAPI

It is recommended to create a virtual python environment to isolate python package installations with the local python packages. To do this, create a new venv python environment in a folder/directory.

python3 -m venv .venv

A new .venv folder/directory will be created in your current directory.

📘

Info

If python3 doesn't exist, try python or py, or check your python executable installation, and run the python installation you wish to use.

To activate the virtual environment, run the following command in a folder/ directory containing the .venv folder/directory:

.venv/bin/activate
source .venv/bin/activate
source .venv/bin/activate

After creating and activating the python virtual environment, you can then proceed to install the needed packages to start the FastAPI server, with the following command:

pip install uvicorn fastapi

After installing the needed packages, a file can then be made, with the following content:

from fastapi import FastAPI, Request
from fastapi.responses import Response
from fastapi.middleware.cors import CORSMiddleware
from requests import post

app = FastAPI()

origins = ["*"]

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


@app.post("/license/{license_id}/check")
async def license(
    license_id: str,
    request: Request,
):
    response = requests.post(
"https://api.verihubs.com/v1/license/{license_id}/check".format(license_id
=license_id),
        headers={
            "App-ID": VERIHUBS_APP_ID,
            "Api-Key": VERIHUBS_API_KEY,
},
        json=await request.json(),
    )
    return Response(
        status_code=response.status_code,
        headers=dict(response.headers),
        content=response.content,
)

@app.patch("/ocr/extract/correction")
async def correction(request: Request):
    response = post(
        "https://api.verihubs.com/ktp/id/extract/correction",
        headers={
            "App-ID": "<replace-me-with-app-id>",
            "Api-Key": "<replace-me-with-api-key>",
        },
        data=await request.body(),
    )
    return Response(
        status_code=response.status_code,
        headers=dict(response.headers),
        content=response.content,
    )

Replace the endpoint with the correct endpoint, and replace <replace-me-with-app-id> and <replace-me-with-api-key> to the App-ID and APIKey provided for your company.

The proxy middleware can then be run using this command:

uvicorn main:app

📘

Info

You can specify which port to serve the proxy middleware by adding --port <port-number> as an argument to the command.