mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-08 07:23:10 -06:00
Merge branch 'master' into kegan/device-db-glue
This commit is contained in:
commit
9d5eb03a67
|
|
@ -7,3 +7,9 @@ go fmt ./src/...
|
||||||
go tool vet --all --shadow ./src
|
go tool vet --all --shadow ./src
|
||||||
gocyclo -over 12 src/
|
gocyclo -over 12 src/
|
||||||
gb test
|
gb test
|
||||||
|
|
||||||
|
# Check that all the packages can build.
|
||||||
|
# When `go build` is given multiple packages it won't output anything, and just
|
||||||
|
# checks that everything builds. This seems to do a better job of handling
|
||||||
|
# missing imports than `gb build` does.
|
||||||
|
GOPATH=$(pwd):$(pwd)/vendor go build github.com/matrix-org/dendrite/cmd/...
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,9 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage"
|
"github.com/matrix-org/dendrite/clientapi/auth"
|
||||||
|
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
||||||
|
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/types"
|
"github.com/matrix-org/dendrite/clientapi/auth/types"
|
||||||
"github.com/matrix-org/dendrite/clientapi/config"
|
"github.com/matrix-org/dendrite/clientapi/config"
|
||||||
"github.com/matrix-org/dendrite/clientapi/producers"
|
"github.com/matrix-org/dendrite/clientapi/producers"
|
||||||
|
|
@ -34,7 +36,7 @@ const pathPrefixR0 = "/_matrix/client/r0"
|
||||||
|
|
||||||
// Setup registers HTTP handlers with the given ServeMux. It also supplies the given http.Client
|
// Setup registers HTTP handlers with the given ServeMux. It also supplies the given http.Client
|
||||||
// to clients which need to make outbound HTTP requests.
|
// to clients which need to make outbound HTTP requests.
|
||||||
func Setup(servMux *http.ServeMux, httpClient *http.Client, cfg config.ClientAPI, producer *producers.RoomserverProducer, queryAPI api.RoomserverQueryAPI, accountDB *storage.AccountDatabase) {
|
func Setup(servMux *http.ServeMux, httpClient *http.Client, cfg config.ClientAPI, producer *producers.RoomserverProducer, queryAPI api.RoomserverQueryAPI, accountDB *accounts.Database) {
|
||||||
apiMux := mux.NewRouter()
|
apiMux := mux.NewRouter()
|
||||||
r0mux := apiMux.PathPrefix(pathPrefixR0).Subrouter()
|
r0mux := apiMux.PathPrefix(pathPrefixR0).Subrouter()
|
||||||
r0mux.Handle("/createRoom",
|
r0mux.Handle("/createRoom",
|
||||||
|
|
@ -155,11 +157,11 @@ func Setup(servMux *http.ServeMux, httpClient *http.Client, cfg config.ClientAPI
|
||||||
// make a util.JSONRequestHandler function into an http.Handler which checks the access token in the request.
|
// make a util.JSONRequestHandler function into an http.Handler which checks the access token in the request.
|
||||||
func makeAuthAPI(metricsName string, deviceDB *devices.Database, f func(*http.Request, types.Device) util.JSONResponse) http.Handler {
|
func makeAuthAPI(metricsName string, deviceDB *devices.Database, f func(*http.Request, types.Device) util.JSONResponse) http.Handler {
|
||||||
h := util.NewJSONRequestHandler(func(req *http.Request) util.JSONResponse {
|
h := util.NewJSONRequestHandler(func(req *http.Request) util.JSONResponse {
|
||||||
device, resErr := auth.VerifyAccessToken(req, deviceDB)
|
device, resErr := auth.VerifyAccessTokenNew(req, deviceDB)
|
||||||
if resErr != nil {
|
if resErr != nil {
|
||||||
return resErr
|
return *resErr
|
||||||
}
|
}
|
||||||
return f(req, device)
|
return f(req, *device)
|
||||||
})
|
})
|
||||||
return prometheus.InstrumentHandler(metricsName, util.MakeJSONAPI(h))
|
return prometheus.InstrumentHandler(metricsName, util.MakeJSONAPI(h))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
log "github.com/Sirupsen/logrus"
|
log "github.com/Sirupsen/logrus"
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage"
|
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/types"
|
"github.com/matrix-org/dendrite/clientapi/auth/types"
|
||||||
"github.com/matrix-org/dendrite/clientapi/httputil"
|
"github.com/matrix-org/dendrite/clientapi/httputil"
|
||||||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||||
|
|
@ -90,7 +90,7 @@ func (r *registerRequest) Validate() *util.JSONResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register processes a /register request. http://matrix.org/speculator/spec/HEAD/client_server/unstable.html#post-matrix-client-unstable-register
|
// Register processes a /register request. http://matrix.org/speculator/spec/HEAD/client_server/unstable.html#post-matrix-client-unstable-register
|
||||||
func Register(req *http.Request, accountDB *storage.AccountDatabase) util.JSONResponse {
|
func Register(req *http.Request, accountDB *accounts.Database) util.JSONResponse {
|
||||||
var r registerRequest
|
var r registerRequest
|
||||||
resErr := httputil.UnmarshalJSONRequest(req, &r)
|
resErr := httputil.UnmarshalJSONRequest(req, &r)
|
||||||
if resErr != nil {
|
if resErr != nil {
|
||||||
|
|
@ -140,7 +140,7 @@ func Register(req *http.Request, accountDB *storage.AccountDatabase) util.JSONRe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func completeRegistration(accountDB *storage.AccountDatabase, username, password string) util.JSONResponse {
|
func completeRegistration(accountDB *accounts.Database, username, password string) util.JSONResponse {
|
||||||
acc, err := accountDB.CreateAccount(username, password)
|
acc, err := accountDB.CreateAccount(username, password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
|
|
|
||||||
2
vendor/manifest
vendored
2
vendor/manifest
vendored
|
|
@ -98,7 +98,7 @@
|
||||||
{
|
{
|
||||||
"importpath": "github.com/matrix-org/gomatrixserverlib",
|
"importpath": "github.com/matrix-org/gomatrixserverlib",
|
||||||
"repository": "https://github.com/matrix-org/gomatrixserverlib",
|
"repository": "https://github.com/matrix-org/gomatrixserverlib",
|
||||||
"revision": "8e7504f3b62366e621525c962314f53c045512e3",
|
"revision": "785a53c41170526aa7a91a1fc534afac6ce01a9b",
|
||||||
"branch": "master"
|
"branch": "master"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,10 @@ func (eb *EventBuilder) Build(eventID string, now time.Time, origin ServerName,
|
||||||
EventID string `json:"event_id"`
|
EventID string `json:"event_id"`
|
||||||
OriginServerTS Timestamp `json:"origin_server_ts"`
|
OriginServerTS Timestamp `json:"origin_server_ts"`
|
||||||
Origin ServerName `json:"origin"`
|
Origin ServerName `json:"origin"`
|
||||||
|
// This key is either absent or an empty list.
|
||||||
|
// If it is absent then the pointer is nil and omitempty removes it.
|
||||||
|
// Otherwise it points to an empty list and omitempty keeps it.
|
||||||
|
PrevState *[]EventReference `json:"prev_state,omitempty"`
|
||||||
}
|
}
|
||||||
event.EventBuilder = *eb
|
event.EventBuilder = *eb
|
||||||
if event.PrevEvents == nil {
|
if event.PrevEvents == nil {
|
||||||
|
|
@ -131,6 +135,16 @@ func (eb *EventBuilder) Build(eventID string, now time.Time, origin ServerName,
|
||||||
event.Origin = origin
|
event.Origin = origin
|
||||||
event.EventID = eventID
|
event.EventID = eventID
|
||||||
|
|
||||||
|
if event.StateKey != nil {
|
||||||
|
// In early versions of the matrix protocol state events
|
||||||
|
// had a "prev_state" key that listed the state events with
|
||||||
|
// the same type and state key that this event replaced.
|
||||||
|
// This was later dropped from the protocol.
|
||||||
|
// Synapse ignores the contents of the key but still expects
|
||||||
|
// the key to be present in state events.
|
||||||
|
event.PrevState = &emptyEventReferenceList
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Check size limits.
|
// TODO: Check size limits.
|
||||||
|
|
||||||
var eventJSON []byte
|
var eventJSON []byte
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue