Skip to main content

No project description provided

Project description

llsd-asgi

llsd-asgi adds automatic LLSD content negotiation to ASGI applications (Starlette, FastAPI, Quart, etc.) with a single line of code:

app.add_middleware(LLSDMiddleware)

The code for llsd-asgi is based on msgpack-asgi, a similar middleware library for the MessagePack binary format.

Installation

Install with pip:

pip install llsd-asgi

Quickstart (FastAPI)

You can use llsd-asgi with FastAPI like so:

from fastapi import FastAPI
from llsd_asgi import LLSDMiddleware

app = FastAPI()
app.add_middleware(LLSDMiddleware)

Quickstart (Starlette)

As a lower level example using Starlette:

from llsd_asgi import LLSDMiddleware
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route


async def homepage(request):
    return JSONResponse({"hello": "world"})


app = Starlette(debug=True, routes=[
    Route('/', homepage),
])

# Wrap your application with the LLSD middleware
app = LLSDMiddleware(app)

How it works

flowchart TD
    A(Client) <-->|LLSD| B(LLSDMiddleware)
    B <-->|JSON| C(App)

Your ASGI application is wrapped around the LLSDMiddleware, which performs content negotiation based on Content-Type and Accept HTTP headers.

Quirks mode

Passing quirks=True to the middleware enables 🤪 quirks mode. The behavior of this mode matches that of poorly behaved Linden Lab services, where the server returns LLSD even if the client has not requested it.

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

llsd-asgi-0.2.2.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

llsd_asgi-0.2.2-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file llsd-asgi-0.2.2.tar.gz.

File metadata

  • Download URL: llsd-asgi-0.2.2.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for llsd-asgi-0.2.2.tar.gz
Algorithm Hash digest
SHA256 24ecbaefa22e3fb85ff1fbb99d35c5e53bc504553b2ad590d7ccbba4cbebd6ee
MD5 536e36ed8de1e3c55adcb6f5e7f8fdcc
BLAKE2b-256 2f73478988ce5f6f63ecfb0dfd9ad4c1f6513c4703e250322ae616f4b48893a3

See more details on using hashes here.

File details

Details for the file llsd_asgi-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: llsd_asgi-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for llsd_asgi-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5b3eb346eaa32b60f4cf5a5244737c027f83c44c85ed475ba63964148a8f51f2
MD5 f9dee36aa57b6b8a8a3c0dcc41c19308
BLAKE2b-256 558477a264fded7e29777b29910bf177b8eb7e48d8d9585ff9ee480159070594

See more details on using hashes here.

Supported by

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