Split out adding HTTP routes from making internal APIs for clarity

This commit is contained in:
Kegan Dougal 2020-06-08 14:07:25 +01:00
parent 67784ecb56
commit 3a150ce35f
7 changed files with 23 additions and 21 deletions

View file

@ -147,7 +147,7 @@ func main() {
rsAPI := roomserver.SetupRoomServerComponent( rsAPI := roomserver.SetupRoomServerComponent(
&base.Base, keyRing, federation, &base.Base, keyRing, federation,
) )
eduInputAPI := eduserver.SetupEDUServerComponent( eduInputAPI := eduserver.NewInternalAPI(
&base.Base, cache.New(), deviceDB, &base.Base, cache.New(), deviceDB,
) )
asAPI := appservice.SetupAppServiceAPIComponent( asAPI := appservice.SetupAppServiceAPIComponent(
@ -164,7 +164,7 @@ func main() {
eduInputAPI, asAPI, transactions.New(), fsAPI, eduInputAPI, asAPI, transactions.New(), fsAPI,
) )
eduProducer := producers.NewEDUServerProducer(eduInputAPI) eduProducer := producers.NewEDUServerProducer(eduInputAPI)
federationapi.SetupFederationAPIComponent(&base.Base, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer) federationapi.AddRoutes(&base.Base, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer)
mediaapi.SetupMediaAPIComponent(&base.Base, deviceDB) mediaapi.SetupMediaAPIComponent(&base.Base, deviceDB)
publicRoomsDB, err := storage.NewPublicRoomsServerDatabaseWithPubSub(string(base.Base.Cfg.Database.PublicRoomsAPI), base.LibP2PPubsub, cfg.Matrix.ServerName) publicRoomsDB, err := storage.NewPublicRoomsServerDatabaseWithPubSub(string(base.Base.Cfg.Database.PublicRoomsAPI), base.LibP2PPubsub, cfg.Matrix.ServerName)
if err != nil { if err != nil {

View file

@ -31,7 +31,8 @@ func main() {
}() }()
deviceDB := base.CreateDeviceDB() deviceDB := base.CreateDeviceDB()
eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB) intAPI := eduserver.NewInternalAPI(base, cache.New(), deviceDB)
eduserver.AddRoutes(base.InternalAPIMux, intAPI)
base.SetupAndServeHTTP(string(base.Cfg.Bind.EDUServer), string(base.Cfg.Listen.EDUServer)) base.SetupAndServeHTTP(string(base.Cfg.Bind.EDUServer), string(base.Cfg.Listen.EDUServer))

View file

@ -36,7 +36,7 @@ func main() {
// TODO: this isn't a producer // TODO: this isn't a producer
eduProducer := producers.NewEDUServerProducer(base.EDUServerClient()) eduProducer := producers.NewEDUServerProducer(base.EDUServerClient())
federationapi.SetupFederationAPIComponent( federationapi.AddRoutes(
base, accountDB, deviceDB, federation, keyRing, base, accountDB, deviceDB, federation, keyRing,
rsAPI, asAPI, fsAPI, eduProducer, rsAPI, asAPI, fsAPI, eduProducer,
) )

View file

@ -86,10 +86,11 @@ func main() {
rsAPI = base.RoomserverHTTPClient() rsAPI = base.RoomserverHTTPClient()
} }
eduInputAPI := eduserver.SetupEDUServerComponent( eduInputAPI := eduserver.NewInternalAPI(
base, cache.New(), deviceDB, base, cache.New(), deviceDB,
) )
if base.UseHTTPAPIs { if base.UseHTTPAPIs {
eduserver.AddRoutes(base.InternalAPIMux, eduInputAPI)
eduInputAPI = base.EDUServerClient() eduInputAPI = base.EDUServerClient()
} }
@ -118,7 +119,7 @@ func main() {
base, deviceDB, accountDB, base, deviceDB, accountDB,
) )
eduProducer := producers.NewEDUServerProducer(eduInputAPI) eduProducer := producers.NewEDUServerProducer(eduInputAPI)
federationapi.SetupFederationAPIComponent(base, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer) federationapi.AddRoutes(base, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer)
mediaapi.SetupMediaAPIComponent(base, deviceDB) mediaapi.SetupMediaAPIComponent(base, deviceDB)
publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), base.Cfg.DbProperties(), cfg.Matrix.ServerName) publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), base.Cfg.DbProperties(), cfg.Matrix.ServerName)
if err != nil { if err != nil {

View file

@ -207,7 +207,7 @@ func main() {
} }
rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation) rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation)
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB) eduInputAPI := eduserver.NewInternalAPI(base, cache.New(), deviceDB)
asQuery := appservice.SetupAppServiceAPIComponent( asQuery := appservice.SetupAppServiceAPIComponent(
base, accountDB, deviceDB, federation, rsAPI, transactions.New(), base, accountDB, deviceDB, federation, rsAPI, transactions.New(),
) )
@ -221,7 +221,7 @@ func main() {
eduInputAPI, asQuery, transactions.New(), fedSenderAPI, eduInputAPI, asQuery, transactions.New(), fedSenderAPI,
) )
eduProducer := producers.NewEDUServerProducer(eduInputAPI) eduProducer := producers.NewEDUServerProducer(eduInputAPI)
federationapi.SetupFederationAPIComponent(base, accountDB, deviceDB, federation, &keyRing, rsAPI, asQuery, fedSenderAPI, eduProducer) federationapi.AddRoutes(base, accountDB, deviceDB, federation, &keyRing, rsAPI, asQuery, fedSenderAPI, eduProducer)
mediaapi.SetupMediaAPIComponent(base, deviceDB) mediaapi.SetupMediaAPIComponent(base, deviceDB)
publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), cfg.Matrix.ServerName) publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), cfg.Matrix.ServerName)
if err != nil { if err != nil {

View file

@ -17,6 +17,7 @@
package eduserver package eduserver
import ( import (
"github.com/gorilla/mux"
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices" "github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
"github.com/matrix-org/dendrite/eduserver/api" "github.com/matrix-org/dendrite/eduserver/api"
"github.com/matrix-org/dendrite/eduserver/cache" "github.com/matrix-org/dendrite/eduserver/cache"
@ -25,16 +26,20 @@ import (
"github.com/matrix-org/dendrite/internal/basecomponent" "github.com/matrix-org/dendrite/internal/basecomponent"
) )
// SetupEDUServerComponent sets up and registers HTTP handlers for the // AddRoutes registers HTTP handlers for the internal API. Invokes functions
// EDUServer component. Returns instances of the various roomserver APIs, // on the given input API.
// allowing other components running in the same process to hit the query the func AddRoutes(internalMux *mux.Router, inputAPI api.EDUServerInputAPI) {
// APIs directly instead of having to use HTTP. inthttp.AddRoutes(inputAPI, internalMux)
func SetupEDUServerComponent( }
// NewInternalAPI returns a concerete implementation of the internal API. Callers
// can call functions directly on the returned API or via an HTTP interface using AddRoutes.
func NewInternalAPI(
base *basecomponent.BaseDendrite, base *basecomponent.BaseDendrite,
eduCache *cache.EDUCache, eduCache *cache.EDUCache,
deviceDB devices.Database, deviceDB devices.Database,
) api.EDUServerInputAPI { ) api.EDUServerInputAPI {
inputAPI := &input.EDUServerInputAPI{ return &input.EDUServerInputAPI{
Cache: eduCache, Cache: eduCache,
DeviceDB: deviceDB, DeviceDB: deviceDB,
Producer: base.KafkaProducer, Producer: base.KafkaProducer,
@ -42,8 +47,4 @@ func SetupEDUServerComponent(
OutputSendToDeviceEventTopic: string(base.Cfg.Kafka.Topics.OutputSendToDeviceEvent), OutputSendToDeviceEventTopic: string(base.Cfg.Kafka.Topics.OutputSendToDeviceEvent),
ServerName: base.Cfg.Matrix.ServerName, ServerName: base.Cfg.Matrix.ServerName,
} }
inthttp.AddRoutes(inputAPI, base.InternalAPIMux)
return inputAPI
} }

View file

@ -28,9 +28,8 @@ import (
"github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/gomatrixserverlib"
) )
// SetupFederationAPIComponent sets up and registers HTTP handlers for the // AddRoutes sets up and registers HTTP handlers on the base API muxes for the FederationAPI component.
// FederationAPI component. func AddRoutes(
func SetupFederationAPIComponent(
base *basecomponent.BaseDendrite, base *basecomponent.BaseDendrite,
accountsDB accounts.Database, accountsDB accounts.Database,
deviceDB devices.Database, deviceDB devices.Database,