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.7.tar.gz (24.6 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.7-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: webtool-0.1.7.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.3 Linux/6.8.0-1021-azure

File hashes

Hashes for webtool-0.1.7.tar.gz
Algorithm Hash digest
SHA256 ac95a1810071aed89fa526ba0a7f4374cb7e78681f2972cc4d7053d1623c0854
MD5 355bb280f6d4c2fad413239a0d9bbb8d
BLAKE2b-256 b46137f28aa5a0aa7ecc2d6982c1ba93fd3f5988615854dbd033ad2d35d4d3b1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: webtool-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 31.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.3 Linux/6.8.0-1021-azure

File hashes

Hashes for webtool-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 69cc35c5484588572e1b460d4eb331e3d79db7664c2a63feda05f33721fad86f
MD5 2009dbc154625f64087dece8d6dbc34c
BLAKE2b-256 17245755330407ec6667f7edf9d33744cdc1b69362407e46bbdb5ff96fbc8d64

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