Skip to main content

FastAPI/Starlette library for authentication, throttling, caching.

Project description

WebTool(Alpha)

Well-Architected FastAPI/Starlette library for JWT authentication, throttling, caching, logging, and utilities.

Requirements

  • Python 3.11+

Installation

pip install webtool
poetry add webtool

Features

Authentication

JWT token management system with Redis-backed refresh tokens.

from webtool.auth import JWTService
from webtool.cache import RedisCache

cache_client = RedisCache("redis://localhost:6379/0")
jwt_service = JWTService(cache_client)


async def get_token():
    access, refresh = jwt_service.create_token({"sub": 123, "scope": ["write"]})
    return access, refresh

Throttling

Rate limiting system for FastAPI/Starlette applications.

from fastapi import FastAPI
from starlette.middleware import Middleware
from webtool.auth import JWTService
from webtool.cache import RedisCache
from webtool.throttle import limiter, LimitMiddleware, JWTBackend

cache = RedisCache("redis://127.0.0.1:6379/0")
jwt_backend = JWTBackend(JWTService(cache, secret_key="test"))

app = FastAPI(
    middleware=[
        Middleware(
            LimitMiddleware,
            cache=cache,
            auth_backend=jwt_backend,
        ),
    ],
)


@app.get("/api/resource")
@limiter(max_requests=50, interval=3600, scopes=["user"])
@limiter(max_requests=10, interval=3600, scopes=["anno"])
async def get_resource():
    return {"status": "success"}

MsgPack Response

MessagePack-based response.

from webtool.utils import MsgSpecJSONResponse
from fastapi import FastAPI

app = FastAPI(
    default_response_class=MsgSpecJSONResponse,
)


@app.get("/api/resource")
async def get_resource():
    return {"status": "success"}

License

This project is licensed under the Apache-2.0 License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

webtool-0.1.14.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

webtool-0.1.14-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file webtool-0.1.14.tar.gz.

File metadata

  • Download URL: webtool-0.1.14.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.4 Linux/6.11.0-1015-azure

File hashes

Hashes for webtool-0.1.14.tar.gz
Algorithm Hash digest
SHA256 5c11ca1e2dc3486fb1029da77d47acc5adffac84e640ded4965883daf1d49464
MD5 214c3ae1f08c2a69f49df63d4b043bc0
BLAKE2b-256 11c22b38aa345c52260597322dd8b22c1d90edf8b2b7e51a121b3acfb593951a

See more details on using hashes here.

File details

Details for the file webtool-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: webtool-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.4 Linux/6.11.0-1015-azure

File hashes

Hashes for webtool-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 fd13d93b716b3ff35e626971ab052c92df1aa07e4de495d9a63183eb58e4e427
MD5 b977e4d8da2bec8e81b515f634b588d4
BLAKE2b-256 0ab1e81d0493691e5ecd0732d614bafea925b27422182db13f27665727d4f59f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page