Metadata-Version: 2.4
Name: moonlette
Version: 0.0.3
Summary: A simple web server with websocket support based on starlette and uvicorn
Author-email: Visual Topology <dev@visualtopology.com>
License-Expression: MIT
Project-URL: Homepage, https://codeberg.org/visual-topology/moonlette
Project-URL: Documentation, https://codeberg.org/visual-topology/moonlette
Project-URL: Repository, https://codeberg.org/visual-topology/moonlette
Project-URL: Issues, https://codeberg.org/visual-topology/moonlette/issues
Project-URL: Changelog, https://codeberg.org/visual-topology/moonlette/src/branch/main/CHANGELOG.md
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: JavaScript
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Development Status :: 3 - Alpha
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: starlette[full]
Requires-Dist: uvicorn[standard]
Requires-Dist: requests
Provides-Extra: auth
Requires-Dist: authlib; extra == "auth"
Dynamic: license-file

from moonlette.ws_request_context import WSRequestContext

# moonlette

A simple web server with websockets support based on starlette, uvicorn and authlib.

This library adapts the asynchronous websocket ASGI API to offer a synchronous thread-based API

## Installation

```
pip install moonlette
```

## Example usage (http)

```python
from moonlette.http_request_context import HTTPRequestContext
from moonlette.server import Server

server = Server(port=8081, host="localhost")


def handler(request_context: HTTPRequestContext):
    return (200, b"It Worked!", "text/plain", {})


server.attach_handler("GET", "/test", handler)
server.run()
```

## Example usage (websockets)

```python
from moonlette.server import Server
from moonlette.ws_request_context import WSRequestContext

server = Server(port=8081, host="localhost")

class EchoHandler:

    def __init__(self, ctx:WSRequestContext):
        self.ctx = ctx

    def recv(self, msg):
        # echo the message back
        self.ctx.sender(msg)
        
server.attach_ws_handler("/echo", EchoHandler)
server.run()
```

## Documentation

Coming Soon
