* Implement filter POSTing and GETting.
Signed-off-by: Jan Christian Grünhage <jan.christian@gruenhage.xyz>
* Add missing '}' typo introduced during merge
* Still trying to fix that merge...
* Fix linting
* Specify HTTP methods for the client API
* Specify HTTP methods for the federation API
* Specify HTTP methods for the media API
* Specify HTTP methods for the sync API
* Add config for trusted ID servers
* Add new error
* Implement check for trusted ID server
* Complete unfinished comment
* Make comment more explicit in the config file
* Use go standard errors in membership.go
* Use standard errors instead of JSON responses in threepid
* Doc errors
* Remove unused parameter
* Create package for handling 3pid processes and move invite processing there
* Add database table and functions for tracking 3PIDs
* Add structures and functions to interact with an ID server
* Add handlers for 3PIDs management
* Fix 3PIDs retrieval sending null if no 3PID known for a user
* Include medium in database requests and function calls
* Publish an association if it has been validated and requested
* Add TODO markers for tursted ID server check
* Use a structure instead of a map to represent a 3PID
* Implement case where user left the room
* Filter by membership event
* Move the logic from the storage to the query API
* Fix check on state entries iteration
* Remove aliases methods from query API
* Use structure for response to match with the spec
* Remove filtering on /members and implement /joined_members
* Move events contents to common
* Basic database structure
* Complete database update
* Support visibility update and retrieval
* Add HTTP methods for visibility update and retrieval
* Add the database for the new component
* Add a listener for the new component
* Fix attribute update statements
* Create public rooms component
* Fix failing test
* Add roomserver consumer
* Fix a bug in aliases creation
* Add a check on type
* Implement public rooms directory
* Use auth API for visibility update
* Support filtering
* Add component to monolith
* Various fixes
* Fix computation of next public rooms batch
* Retrieve state events from the roomserver query API + avoid dupes on join
* Split update of string or boolean attribute in two separate functions
* Use event type to detect duplicate joins
* Improve the joined members counter computation
* Use event.RoomID()
* Basic memberships retrieval
* Change the way the memberships are saved in the client API database
* Retrieve single membership
* Get memberships only if the user is or has been in the room
* Check server name on room ID instead of user ID
* Save the join membership event and updates it when necessary
* Membership events retrieval + update on leave
* Implement the API on the roomserver and client API server
* Fix comments
* Remove the functions and attributes used before the new query API
* Explicitely state what we return in query
* Remove tab
* Implement membership endpoints
* Use FillBuilder when possible
* Fix typo in membership event content
* Fix state key invite membership events not being correctly set
* Set membership content to match the profile of the user in state_key
* Move event building and rename common function
* Doc getMembershipStateKey
* Check if user is local before lookin up their profile
This makes it possible to setup all the component APIs on a single http
listener which is necessary if we want to combine all the components
into a single monolith.
* Clean roomserver consumer
* Make account data sync incremental
* Use a different name for the sync AD table
* Improved error logging
* Created missing topic in tests
* Add client API topic to tests
* Add client API topic to common
* Move data batch retrieval
* Add database index for data retrieval
* Fix typo in table name
* Fix indentation
* Add database functions to interact with aliases
* Save room alias
* Check if alias already exists
* Implement local alias lookup
* Implement alias removal
* Move alias API
* Handle case with no alias set for a room
* Apply requested changes
* Save function for account data
* Fix upsert + add empty routes and function
* Save account data
* Retrieval functions
* Implement retrieval in /sync
* Fix arrays not correctly initialised
* Merge account data retrieval functions
* Request DB only once per request
* Initialise array
* Fix comment
* Use gomatrixserverlib function to split user ID
* Propagate profile update via m.room.member events
* Send profile data on room join
* Send profile data on room creation
* Rename variable
* Move membership update to roomserver consumer
* Improve iteration
* Move event update from client API server to sync API server
* Change the way buildMembershipEvents is called
* Forbid update of someone else's profile
* Use gomatrixserverlib method
* Fix depth and previous events not being set
* Fix wrong removal in latest commit
* Update all events instead of only memberships
* Handle case where there is no state key
* Fix test
* Profile retrieval
* Saving avatar (without propagating it)
* Saving display name (without propagating it)
* Getters for display name and avatar URL
* Doc'd
* Introduced new Kafka topic and producer
* Updated config with new kafka topic
* Switched to samara producer and now sending messages
* Doc'd
* Put kafka update after the database insert
* Doc'd profileUpdate structure
* Removed unused parameter
* Moved user updates producer to clientapi/producers
* Move all the dendrite config in to a single place
* Add tests for config parsing
* replace syncserver config with common config
* Replace client API config with common config
* Replace federation API config with common config
* Replace media api config with common config
* Replace room server config with common config
* Remove unused readKey function
* Fix the integration tests
* Comment on hardcoding roomserver to HTTP
* Add a method for getting RoomServerURL
This moves the hardcoding of HTTPs into one place.
* Start implementing the join room API
* Hacks to get join room working
* Make the TLS fingerprint configurable
* Fix the client API proxy to handle '#' correctly
* Return a 200 OK response
* Write the join event along with current state to the room server
* Comment on the error handling
* Fix typos
* Fix tab
* Add TODO for moving authEventIDs to gomatrixserverlib
* Comment on why we ignore the key ID argument for local keys
* Avoid 'preceeded'
* Neaten the control flow
* Neaten the control flow even more
* Return pointers
* Rename err to lastErr for the loop
- Renamed `clientapi/auth/types` to `clientapi/auth/authtypes` for the same
horrible namespace clashing reasons as `storage`.
- Factored out `makeAPI` to `common`.
- Added in `makeAuthAPI`.
* Rename "make" to "makeAPI" and factor out some more common code into it
Naming a function the same as a go builtin function seems like a bad
idea. Also move the call to `NewJSONRequestHander` inside the function
rather than calling it everywhere.
* Fix typo
Currently the HTTP handlers are attached to an API mux which is created inside
Setup(). In the future, we'll want to split this out so a single mux can have
both sync and clientapi handlers attached to it.
This involves:
- Parsing the HTTP request
- Requesting auth events from the roomserver via the Query API
- Building the event
- Doing auth checks on the event
- Sending it to the roomserver input log