Wire AS API into roomserver again

This commit is contained in:
Neil Alexander 2020-04-30 16:41:47 +01:00
parent 17b7a91c1c
commit b99f31ae6b
9 changed files with 23 additions and 17 deletions

View file

@ -38,6 +38,7 @@ func main() {
asQuery := base.CreateHTTPAppServiceAPIs() asQuery := base.CreateHTTPAppServiceAPIs()
rsAPI := base.CreateHTTPRoomserverAPIs() rsAPI := base.CreateHTTPRoomserverAPIs()
fsAPI := base.CreateHTTPFederationSenderAPIs() fsAPI := base.CreateHTTPFederationSenderAPIs()
rsAPI.SetFederationSenderAPI(fsAPI)
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New()) eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New())
clientapi.SetupClientAPIComponent( clientapi.SetupClientAPIComponent(

View file

@ -160,6 +160,7 @@ func main() {
fsAPI := federationsender.SetupFederationSenderComponent( fsAPI := federationsender.SetupFederationSenderComponent(
&base.Base, federation, rsAPI, &keyRing, &base.Base, federation, rsAPI, &keyRing,
) )
rsAPI.SetFederationSenderAPI(fsAPI)
clientapi.SetupClientAPIComponent( clientapi.SetupClientAPIComponent(
&base.Base, deviceDB, accountDB, &base.Base, deviceDB, accountDB,

View file

@ -37,6 +37,7 @@ func main() {
rsAPI := base.CreateHTTPRoomserverAPIs() rsAPI := base.CreateHTTPRoomserverAPIs()
asAPI := base.CreateHTTPAppServiceAPIs() asAPI := base.CreateHTTPAppServiceAPIs()
rsAPI.SetFederationSenderAPI(fsAPI)
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New()) eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New())
eduProducer := producers.NewEDUServerProducer(eduInputAPI) eduProducer := producers.NewEDUServerProducer(eduInputAPI)

View file

@ -28,12 +28,11 @@ func main() {
federation := base.CreateFederationClient() federation := base.CreateFederationClient()
keyDB := base.CreateKeyDB() keyDB := base.CreateKeyDB()
keyRing := keydb.CreateKeyRing(federation.Client, keyDB, cfg.Matrix.KeyPerspectives) keyRing := keydb.CreateKeyRing(federation.Client, keyDB, cfg.Matrix.KeyPerspectives)
rsAPI := base.CreateHTTPRoomserverAPIs() rsAPI := base.CreateHTTPRoomserverAPIs()
fsAPI := federationsender.SetupFederationSenderComponent(
federationsender.SetupFederationSenderComponent(
base, federation, rsAPI, &keyRing, base, federation, rsAPI, &keyRing,
) )
rsAPI.SetFederationSenderAPI(fsAPI)
base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationSender), string(base.Cfg.Listen.FederationSender)) base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationSender), string(base.Cfg.Listen.FederationSender))

View file

@ -28,7 +28,10 @@ func main() {
deviceDB := base.CreateDeviceDB() deviceDB := base.CreateDeviceDB()
fsAPI := base.CreateHTTPFederationSenderAPIs()
rsAPI := base.CreateHTTPRoomserverAPIs() rsAPI := base.CreateHTTPRoomserverAPIs()
rsAPI.SetFederationSenderAPI(fsAPI)
publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI)) publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI))
if err != nil { if err != nil {
logrus.WithError(err).Panicf("failed to connect to public rooms db") logrus.WithError(err).Panicf("failed to connect to public rooms db")

View file

@ -30,8 +30,9 @@ func main() {
federation := base.CreateFederationClient() federation := base.CreateFederationClient()
keyRing := keydb.CreateKeyRing(federation.Client, keyDB, cfg.Matrix.KeyPerspectives) keyRing := keydb.CreateKeyRing(federation.Client, keyDB, cfg.Matrix.KeyPerspectives)
asAPI := base.CreateHTTPAppServiceAPIs()
fsAPI := base.CreateHTTPFederationSenderAPIs() fsAPI := base.CreateHTTPFederationSenderAPIs()
rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation, nil) // TODO: AS API here rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation, asAPI) // TODO: AS API here
rsAPI.SetFederationSenderAPI(fsAPI) rsAPI.SetFederationSenderAPI(fsAPI)
base.SetupAndServeHTTP(string(base.Cfg.Bind.RoomServer), string(base.Cfg.Listen.RoomServer)) base.SetupAndServeHTTP(string(base.Cfg.Bind.RoomServer), string(base.Cfg.Listen.RoomServer))

View file

@ -28,7 +28,9 @@ func main() {
accountDB := base.CreateAccountsDB() accountDB := base.CreateAccountsDB()
federation := base.CreateFederationClient() federation := base.CreateFederationClient()
fsAPI := base.CreateHTTPFederationSenderAPIs()
rsAPI := base.CreateHTTPRoomserverAPIs() rsAPI := base.CreateHTTPRoomserverAPIs()
rsAPI.SetFederationSenderAPI(fsAPI)
syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg) syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg)

View file

@ -9,8 +9,9 @@ import (
// RoomserverInputAPI is used to write events to the room server. // RoomserverInputAPI is used to write events to the room server.
type RoomserverInternalAPI interface { type RoomserverInternalAPI interface {
// needed to avoid chicken and egg scenario when setting up the // needed to avoid chicken and egg scenario when setting up the
// interdependencies between the roomserver and the FS input API // interdependencies between the roomserver and other input APIs
SetFederationSenderAPI(fsInputAPI fsAPI.FederationSenderInternalAPI) SetFederationSenderAPI(fsAPI fsAPI.FederationSenderInternalAPI)
InputRoomEvents( InputRoomEvents(
ctx context.Context, ctx context.Context,
request *InputRoomEventsRequest, request *InputRoomEventsRequest,

View file

@ -5,15 +5,13 @@ import (
"net/http" "net/http"
"github.com/matrix-org/dendrite/common/caching" "github.com/matrix-org/dendrite/common/caching"
fsAPI "github.com/matrix-org/dendrite/federationsender/api" fsInputAPI "github.com/matrix-org/dendrite/federationsender/api"
) )
type httpRoomserverInternalAPI struct { type httpRoomserverInternalAPI struct {
roomserverURL string roomserverURL string
httpClient *http.Client httpClient *http.Client
// The federation sender API allows us to send federation fsAPI fsInputAPI.FederationSenderInternalAPI
// requests from the new perform input requests, still TODO.
fsInputAPI fsAPI.FederationSenderInternalAPI
immutableCache caching.ImmutableCache immutableCache caching.ImmutableCache
} }
@ -31,7 +29,6 @@ func NewRoomserverInternalAPIHTTP(
return &httpRoomserverInternalAPI{ return &httpRoomserverInternalAPI{
roomserverURL: roomserverURL, roomserverURL: roomserverURL,
httpClient: httpClient, httpClient: httpClient,
//fsInputAPI: fsInputAPI,
immutableCache: immutableCache, immutableCache: immutableCache,
}, nil }, nil
} }
@ -39,6 +36,6 @@ func NewRoomserverInternalAPIHTTP(
// SetFederationSenderInputAPI passes in a federation sender input API reference // SetFederationSenderInputAPI passes in a federation sender input API reference
// so that we can avoid the chicken-and-egg problem of both the roomserver input API // so that we can avoid the chicken-and-egg problem of both the roomserver input API
// and the federation sender input API being interdependent. // and the federation sender input API being interdependent.
func (h *httpRoomserverInternalAPI) SetFederationSenderAPI(fsInputAPI fsAPI.FederationSenderInternalAPI) { func (h *httpRoomserverInternalAPI) SetFederationSenderAPI(fsAPI fsInputAPI.FederationSenderInternalAPI) {
h.fsInputAPI = fsInputAPI h.fsAPI = fsAPI
} }