forked from vbatts/maubot
Refactor things and implement instance API
This commit is contained in:
parent
cbeff0c0cb
commit
bc87b2a02b
14 changed files with 249 additions and 100 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue