craftbeerpi4-pione/cbpi/http_endpoints/http_config.py

82 lines
2.2 KiB
Python
Raw Normal View History

2019-01-02 21:20:44 +01:00
from aiohttp import web
2019-01-05 20:43:48 +01:00
from cbpi.api import *
2019-01-02 21:20:44 +01:00
2019-01-05 20:43:48 +01:00
from cbpi.utils import json_dumps
2019-01-02 21:20:44 +01:00
2021-02-16 20:37:51 +01:00
class ConfigHttpEndpoints:
2019-01-02 21:20:44 +01:00
def __init__(self, cbpi):
2021-02-16 20:37:51 +01:00
self.cbpi = cbpi
2019-01-02 21:20:44 +01:00
self.controller = cbpi.config
self.cbpi.register(self, "/config")
@request_mapping(path="/{name}/", method="PUT", auth_required=False)
2021-01-17 22:49:18 +01:00
async def http_put(self, request) -> web.Response:
2019-01-02 21:20:44 +01:00
"""
---
description: Set config parameter
tags:
- Config
parameters:
- name: "name"
in: "path"
description: "Parameter name"
required: true
type: "string"
2021-01-17 22:49:18 +01:00
- name: body
in: body
description: "Parameter Value"
required: true
schema:
type: object
properties:
value:
type: string
2019-01-02 21:20:44 +01:00
responses:
"204":
description: successful operation
"""
2019-07-27 21:08:19 +02:00
2019-01-02 21:20:44 +01:00
name = request.match_info['name']
data = await request.json()
await self.controller.set(name=name, value=data.get("value"))
return web.Response(status=204)
@request_mapping(path="/", auth_required=False)
async def http_get_all(self, request) -> web.Response:
"""
---
description: Get all config parameters
tags:
- Config
responses:
"200":
description: successful operation
"""
return web.json_response(self.controller.cache, dumps=json_dumps)
@request_mapping(path="/{name}/", auth_required=False)
async def http_paramter(self, request) -> web.Response:
"""
---
description: Get all config parameters
tags:
- Config
parameters:
- name: "name"
in: "path"
description: "Parameter name"
required: true
type: "string"
responses:
"200":
description: successful operation
"""
name = request.match_info['name']
if name not in self.cache:
raise CBPiException("Parameter %s not found" % name)
return web.json_response(self.cache.get(name), dumps=json_dumps)