dendrite/clientapi
Andrew Morgan 78032b3f4c
Correctly create new device when device_id is passed to /login (#753)
Fixes https://github.com/matrix-org/dendrite/issues/401

Currently when passing a `device_id` parameter to `/login`, which is [supposed](https://matrix.org/docs/spec/client_server/unstable#post-matrix-client-r0-login) to return a device with that ID set, it instead just generates a random `device_id` and hands that back to you.

The code was already there to do this correctly, it looks like it had just been broken during some change. Hopefully sytest will prevent this from becoming broken again.
2019-07-22 15:05:38 +01:00
..
auth Correctly create new device when device_id is passed to /login (#753) 2019-07-22 15:05:38 +01:00
consumers use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00
httputil use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00
jsonerror Fix pipeline, emoji and syntax (#713) 2019-06-19 14:05:03 +01:00
producers use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00
routing Correctly create new device when device_id is passed to /login (#753) 2019-07-22 15:05:38 +01:00
threepid use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00
userutil use go module for dependencies (#594) 2019-05-21 21:56:55 +01:00
clientapi.go use go module for dependencies (#594) 2019-05-21 21:56:55 +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.