1
0
Fork 0
forked from vbatts/maubot

Refactor things and implement instance API

This commit is contained in:
Tulir Asokan 2018-11-01 18:11:54 +02:00
parent cbeff0c0cb
commit bc87b2a02b
14 changed files with 249 additions and 100 deletions

View file

@ -13,27 +13,57 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
from json import JSONDecodeError
from aiohttp import web
from mautrix.types import UserID
from ...client import Client
from .base import routes
from .responses import ErrNotImplemented
from .responses import ErrNotImplemented, ErrClientNotFound, ErrBodyNotJSON
@routes.get("/clients")
def get_clients(request: web.Request) -> web.Response:
return ErrNotImplemented
async def get_clients(request: web.Request) -> web.Response:
return web.json_response([client.to_dict() for client in Client.cache.values()])
@routes.get("/client/{id}")
def get_client(request: web.Request) -> web.Response:
async def get_client(request: web.Request) -> web.Response:
user_id = request.match_info.get("id", None)
client = Client.get(user_id, None)
if not client:
return ErrClientNotFound
return web.json_response(client.to_dict())
async def create_client(user_id: UserID, data: dict) -> web.Response:
return ErrNotImplemented
async def update_client(client: Client, data: dict) -> web.Response:
return ErrNotImplemented
@routes.put("/client/{id}")
def update_client(request: web.Request) -> web.Response:
return ErrNotImplemented
async def update_client(request: web.Request) -> web.Response:
user_id = request.match_info.get("id", None)
client = Client.get(user_id, None)
try:
data = await request.json()
except JSONDecodeError:
return ErrBodyNotJSON
if not client:
return await create_client(user_id, data)
else:
return await update_client(client, data)
@routes.delete("/client/{id}")
def delete_client(request: web.Request) -> web.Response:
async def delete_client(request: web.Request) -> web.Response:
user_id = request.match_info.get("id", None)
client = Client.get(user_id, None)
if not client:
return ErrClientNotFound
return ErrNotImplemented