dendrite/clientapi
Matthew Hodgson b9342d9ee2 a very very WIP first cut of peeking via MSC2753.
doesn't yet compile or work.
needs to actually add the peeking block into the sync response.
checking in now before it gets any bigger, and to gather any initial feedback on the vague shape of it.
2020-08-30 17:46:15 +03:00
..
api Implement ExtraPublicRoomsProvider for p2p demos (#1180) 2020-07-03 12:59:00 +01:00
auth Configuration format v1 (#1230) 2020-08-10 14:18:04 +01:00
httputil Remove httputil.LogThenError so that the line numbers are reported properly - make error reporting slightly more useful (#879) 2020-03-02 16:20:44 +00:00
jsonerror Return remote errors from FS.PerformJoin (#1164) 2020-06-25 15:04:48 +01:00
producers Rehuffle where things are in the internal package (#1122) 2020-06-12 14:55:57 +01:00
routing a very very WIP first cut of peeking via MSC2753. 2020-08-30 17:46:15 +03:00
threepid Configuration format v1 (#1230) 2020-08-10 14:18:04 +01:00
userutil use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00
clientapi.go Prefix-defined Kafka topics (#1254) 2020-08-10 15:18:37 +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.