Metadata-Version: 2.1
Name: sanic-utils
Version: 0.1.0
Summary: A suite of sanic sanic_utils
Home-page: https://github.com/chivandikwa/sanic-utils
Author: Thulani Chivandikwa
Author-email: chivandikwa.t@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: sanic
Requires-Dist: dataclasses
Requires-Dist: dataclasses-json

# sanic-utils

A suite of useful Sanic utilities

## from_json

A decorator for Sanic endpoints to grab the json from the request and pass it in as a parameter. 
Default Sanic approach:


```python
from sanic import Sanic, response
from sanic.request import Request

app = Sanic("App Name")

class ExampleInput:
    name: str
    identifier: str

@app.post("/test")
async def test(request: Request):
    json = request.json
    message = None # convert json to object in whatever prefered way
    return response.text("done")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8112)
```

Usage of the decorator:

```python
from dataclasses import dataclass

from dataclasses_json import dataclass_json
from sanic import Sanic, response
from sanic.request import Request

from sanic_utils.from_json import from_json

app = Sanic("App Name")

@dataclass_json
@dataclass
class ExampleInput:
    name: str
    identifier: str

@app.post("/test")
@from_json(message_type=ExampleInput)
async def test(request: Request, message: ExampleInput):
    print(message)
    return response.text("done")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8112)
```

###  Usage

Mark endpoint method with @from_json decorator passing in a single param, the resulting message type.
The message type should be marked with @dataclass_json and @dataclass.

## Dependencies

sanic 20.3.0

dataclasses 0.6

dataclasses-json 0.4.3

# [CONTRIBUTING](CONTRIBUTING.md)

# [LICENSE](LICENSE)


