dendrite/clientapi
Neil 738686ae68
Add /_dendrite/admin/purgeRoom/{roomID} (#2662)
This adds a new admin endpoint `/_dendrite/admin/purgeRoom/{roomID}`. It
completely erases all database entries for a given room ID.

The roomserver will start by clearing all data for that room and then
will generate an output event to notify downstream components (i.e. the
sync API and federation API) to do the same.

It does not currently clear media and it is currently not implemented
for SQLite since it relies on SQL array operations right now.

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
Co-authored-by: Till Faelligen <2353100+S7evinK@users.noreply.github.com>
2023-01-19 21:02:32 +01:00
..
api Implement ExtraPublicRoomsProvider for p2p demos (#1180) 2020-07-03 12:59:00 +01:00
auth Fix /login issue causing wrong device list updates (#2922) 2023-01-10 17:02:38 +01:00
httputil Do not use ioutil as it is deprecated (#2625) 2022-08-05 10:26:59 +01:00
jsonerror Generic-based internal HTTP API (#2626) 2022-08-11 15:29:33 +01:00
producers Send-to-device consumer/producer tweaks (#2713) 2022-09-13 09:35:45 +02:00
routing Add /_dendrite/admin/purgeRoom/{roomID} (#2662) 2023-01-19 21:02:32 +01:00
threepid Federation fixes for virtual hosting 2022-11-15 15:05:23 +00:00
userutil Fix registration for virtual hosting 2022-11-18 13:24:02 +00:00
admin_test.go Add /_dendrite/admin/purgeRoom/{roomID} (#2662) 2023-01-19 21:02:32 +01:00
clientapi.go Handle guest access [1/2?] (#2872) 2022-12-22 13:05:59 +01:00
README.md use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00

This component roughly corresponds to "Client Room Send" and "Client Sync" on the WIRING diagram. This component produces multiple binaries.

Internals

  • HTTP routing is done using gorilla/mux and the routing paths are in the routing package.

Writers

  • Each HTTP "write operation" (/createRoom, /rooms/$room_id/send/$type, etc) is contained entirely to a single file in the writers package.
  • This file contains the request and response struct definitions, as well as a Validate() bool function to validate incoming requests.
  • The entry point for each write operation is a stand-alone function as this makes testing easier. All dependencies should be injected into this function, including server keys/name, etc.