mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-20 13:23:22 -06:00
Convert roomserver to new inthttp format
This commit is contained in:
parent
f4c676ccdd
commit
14611543ba
|
|
@ -28,7 +28,7 @@ func main() {
|
||||||
accountDB := base.CreateAccountsDB()
|
accountDB := base.CreateAccountsDB()
|
||||||
deviceDB := base.CreateDeviceDB()
|
deviceDB := base.CreateDeviceDB()
|
||||||
federation := base.CreateFederationClient()
|
federation := base.CreateFederationClient()
|
||||||
rsAPI := base.CreateHTTPRoomserverAPIs()
|
rsAPI := base.RoomserverHTTPClient()
|
||||||
cache := transactions.New()
|
cache := transactions.New()
|
||||||
|
|
||||||
appservice.SetupAppServiceAPIComponent(
|
appservice.SetupAppServiceAPIComponent(
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ func main() {
|
||||||
keyRing := serverKeyAPI.KeyRing()
|
keyRing := serverKeyAPI.KeyRing()
|
||||||
|
|
||||||
asQuery := base.CreateHTTPAppServiceAPIs()
|
asQuery := base.CreateHTTPAppServiceAPIs()
|
||||||
rsAPI := base.CreateHTTPRoomserverAPIs()
|
rsAPI := base.RoomserverHTTPClient()
|
||||||
fsAPI := base.FederationSenderHTTPClient()
|
fsAPI := base.FederationSenderHTTPClient()
|
||||||
rsAPI.SetFederationSenderAPI(fsAPI)
|
rsAPI.SetFederationSenderAPI(fsAPI)
|
||||||
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB)
|
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB)
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ func main() {
|
||||||
|
|
||||||
fsAPI := base.FederationSenderHTTPClient()
|
fsAPI := base.FederationSenderHTTPClient()
|
||||||
|
|
||||||
rsAPI := base.CreateHTTPRoomserverAPIs()
|
rsAPI := base.RoomserverHTTPClient()
|
||||||
asAPI := base.CreateHTTPAppServiceAPIs()
|
asAPI := base.CreateHTTPAppServiceAPIs()
|
||||||
rsAPI.SetFederationSenderAPI(fsAPI)
|
rsAPI.SetFederationSenderAPI(fsAPI)
|
||||||
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB)
|
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB)
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ func main() {
|
||||||
serverKeyAPI := base.CreateHTTPServerKeyAPIs()
|
serverKeyAPI := base.CreateHTTPServerKeyAPIs()
|
||||||
keyRing := serverKeyAPI.KeyRing()
|
keyRing := serverKeyAPI.KeyRing()
|
||||||
|
|
||||||
rsAPI := base.CreateHTTPRoomserverAPIs()
|
rsAPI := base.RoomserverHTTPClient()
|
||||||
fsAPI := federationsender.SetupFederationSenderComponent(
|
fsAPI := federationsender.SetupFederationSenderComponent(
|
||||||
base, federation, rsAPI, keyRing,
|
base, federation, rsAPI, keyRing,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ func main() {
|
||||||
)
|
)
|
||||||
rsAPI := rsComponent
|
rsAPI := rsComponent
|
||||||
if base.UseHTTPAPIs {
|
if base.UseHTTPAPIs {
|
||||||
rsAPI = base.CreateHTTPRoomserverAPIs()
|
rsAPI = base.RoomserverHTTPClient()
|
||||||
}
|
}
|
||||||
|
|
||||||
eduInputAPI := eduserver.SetupEDUServerComponent(
|
eduInputAPI := eduserver.SetupEDUServerComponent(
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ func main() {
|
||||||
deviceDB := base.CreateDeviceDB()
|
deviceDB := base.CreateDeviceDB()
|
||||||
|
|
||||||
fsAPI := base.FederationSenderHTTPClient()
|
fsAPI := base.FederationSenderHTTPClient()
|
||||||
rsAPI := base.CreateHTTPRoomserverAPIs()
|
rsAPI := base.RoomserverHTTPClient()
|
||||||
rsAPI.SetFederationSenderAPI(fsAPI)
|
rsAPI.SetFederationSenderAPI(fsAPI)
|
||||||
|
|
||||||
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)
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ func main() {
|
||||||
accountDB := base.CreateAccountsDB()
|
accountDB := base.CreateAccountsDB()
|
||||||
federation := base.CreateFederationClient()
|
federation := base.CreateFederationClient()
|
||||||
|
|
||||||
rsAPI := base.CreateHTTPRoomserverAPIs()
|
rsAPI := base.RoomserverHTTPClient()
|
||||||
|
|
||||||
syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg)
|
syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import (
|
||||||
"github.com/matrix-org/dendrite/internal/caching"
|
"github.com/matrix-org/dendrite/internal/caching"
|
||||||
"github.com/matrix-org/dendrite/internal/test"
|
"github.com/matrix-org/dendrite/internal/test"
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
|
"github.com/matrix-org/dendrite/roomserver/inthttp"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -209,7 +210,7 @@ func writeToRoomServer(input []string, roomserverURL string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x, err := api.NewRoomserverInternalAPIHTTP(roomserverURL, &http.Client{Timeout: timeoutHTTP}, nil)
|
x, err := inthttp.NewRoomserverClient(roomserverURL, &http.Client{Timeout: timeoutHTTP}, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -276,7 +277,7 @@ func testRoomserver(input []string, wantOutput []string, checkQueries func(api.R
|
||||||
cmd.Args = []string{"dendrite-room-server", "--config", filepath.Join(dir, test.ConfigFile)}
|
cmd.Args = []string{"dendrite-room-server", "--config", filepath.Join(dir, test.ConfigFile)}
|
||||||
|
|
||||||
gotOutput, err := runAndReadFromTopic(cmd, cfg.RoomServerURL()+"/metrics", doInput, outputTopic, len(wantOutput), func() {
|
gotOutput, err := runAndReadFromTopic(cmd, cfg.RoomServerURL()+"/metrics", doInput, outputTopic, len(wantOutput), func() {
|
||||||
queryAPI, _ := api.NewRoomserverInternalAPIHTTP("http://"+string(cfg.Listen.RoomServer), &http.Client{Timeout: timeoutHTTP}, cache)
|
queryAPI, _ := inthttp.NewRoomserverClient("http://"+string(cfg.Listen.RoomServer), &http.Client{Timeout: timeoutHTTP}, cache)
|
||||||
checkQueries(queryAPI)
|
checkQueries(queryAPI)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ import (
|
||||||
"github.com/matrix-org/dendrite/federationsender/inthttp"
|
"github.com/matrix-org/dendrite/federationsender/inthttp"
|
||||||
"github.com/matrix-org/dendrite/internal/config"
|
"github.com/matrix-org/dendrite/internal/config"
|
||||||
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
|
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
|
||||||
|
rsinthttp "github.com/matrix-org/dendrite/roomserver/inthttp"
|
||||||
serverKeyAPI "github.com/matrix-org/dendrite/serverkeyapi/api"
|
serverKeyAPI "github.com/matrix-org/dendrite/serverkeyapi/api"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
|
@ -146,10 +147,9 @@ func (b *BaseDendrite) CreateHTTPAppServiceAPIs() appserviceAPI.AppServiceQueryA
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateHTTPRoomserverAPIs returns the AliasAPI, InputAPI and QueryAPI for hitting
|
// RoomserverHTTPClient returns RoomserverInternalAPI for hitting the roomserver over HTTP.
|
||||||
// the roomserver over HTTP.
|
func (b *BaseDendrite) RoomserverHTTPClient() roomserverAPI.RoomserverInternalAPI {
|
||||||
func (b *BaseDendrite) CreateHTTPRoomserverAPIs() roomserverAPI.RoomserverInternalAPI {
|
rsAPI, err := rsinthttp.NewRoomserverClient(b.Cfg.RoomServerURL(), b.httpClient, b.ImmutableCache)
|
||||||
rsAPI, err := roomserverAPI.NewRoomserverInternalAPIHTTP(b.Cfg.RoomServerURL(), b.httpClient, b.ImmutableCache)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panic("NewRoomserverInternalAPIHTTP failed", b.httpClient)
|
logrus.WithError(err).Panic("NewRoomserverInternalAPIHTTP failed", b.httpClient)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,6 @@
|
||||||
|
|
||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
internalHTTP "github.com/matrix-org/dendrite/internal/http"
|
|
||||||
opentracing "github.com/opentracing/opentracing-go"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SetRoomAliasRequest is a request to SetRoomAlias
|
// SetRoomAliasRequest is a request to SetRoomAlias
|
||||||
type SetRoomAliasRequest struct {
|
type SetRoomAliasRequest struct {
|
||||||
// ID of the user setting the alias
|
// ID of the user setting the alias
|
||||||
|
|
@ -83,83 +76,3 @@ type RemoveRoomAliasRequest struct {
|
||||||
|
|
||||||
// RemoveRoomAliasResponse is a response to RemoveRoomAlias
|
// RemoveRoomAliasResponse is a response to RemoveRoomAlias
|
||||||
type RemoveRoomAliasResponse struct{}
|
type RemoveRoomAliasResponse struct{}
|
||||||
|
|
||||||
// RoomserverSetRoomAliasPath is the HTTP path for the SetRoomAlias API.
|
|
||||||
const RoomserverSetRoomAliasPath = "/roomserver/setRoomAlias"
|
|
||||||
|
|
||||||
// RoomserverGetRoomIDForAliasPath is the HTTP path for the GetRoomIDForAlias API.
|
|
||||||
const RoomserverGetRoomIDForAliasPath = "/roomserver/GetRoomIDForAlias"
|
|
||||||
|
|
||||||
// RoomserverGetAliasesForRoomIDPath is the HTTP path for the GetAliasesForRoomID API.
|
|
||||||
const RoomserverGetAliasesForRoomIDPath = "/roomserver/GetAliasesForRoomID"
|
|
||||||
|
|
||||||
// RoomserverGetCreatorIDForAliasPath is the HTTP path for the GetCreatorIDForAlias API.
|
|
||||||
const RoomserverGetCreatorIDForAliasPath = "/roomserver/GetCreatorIDForAlias"
|
|
||||||
|
|
||||||
// RoomserverRemoveRoomAliasPath is the HTTP path for the RemoveRoomAlias API.
|
|
||||||
const RoomserverRemoveRoomAliasPath = "/roomserver/removeRoomAlias"
|
|
||||||
|
|
||||||
// SetRoomAlias implements RoomserverAliasAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) SetRoomAlias(
|
|
||||||
ctx context.Context,
|
|
||||||
request *SetRoomAliasRequest,
|
|
||||||
response *SetRoomAliasResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "SetRoomAlias")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverSetRoomAliasPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetRoomIDForAlias implements RoomserverAliasAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) GetRoomIDForAlias(
|
|
||||||
ctx context.Context,
|
|
||||||
request *GetRoomIDForAliasRequest,
|
|
||||||
response *GetRoomIDForAliasResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "GetRoomIDForAlias")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverGetRoomIDForAliasPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetAliasesForRoomID implements RoomserverAliasAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) GetAliasesForRoomID(
|
|
||||||
ctx context.Context,
|
|
||||||
request *GetAliasesForRoomIDRequest,
|
|
||||||
response *GetAliasesForRoomIDResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "GetAliasesForRoomID")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverGetAliasesForRoomIDPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetCreatorIDForAlias implements RoomserverAliasAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) GetCreatorIDForAlias(
|
|
||||||
ctx context.Context,
|
|
||||||
request *GetCreatorIDForAliasRequest,
|
|
||||||
response *GetCreatorIDForAliasResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "GetCreatorIDForAlias")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverGetCreatorIDForAliasPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemoveRoomAlias implements RoomserverAliasAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) RemoveRoomAlias(
|
|
||||||
ctx context.Context,
|
|
||||||
request *RemoveRoomAliasRequest,
|
|
||||||
response *RemoveRoomAliasResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "RemoveRoomAlias")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverRemoveRoomAliasPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
package api
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
fsInputAPI "github.com/matrix-org/dendrite/federationsender/api"
|
|
||||||
"github.com/matrix-org/dendrite/internal/caching"
|
|
||||||
)
|
|
||||||
|
|
||||||
type httpRoomserverInternalAPI struct {
|
|
||||||
roomserverURL string
|
|
||||||
httpClient *http.Client
|
|
||||||
fsAPI fsInputAPI.FederationSenderInternalAPI
|
|
||||||
immutableCache caching.ImmutableCache
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewRoomserverInputAPIHTTP creates a RoomserverInputAPI implemented by talking to a HTTP POST API.
|
|
||||||
// If httpClient is nil an error is returned
|
|
||||||
func NewRoomserverInternalAPIHTTP(
|
|
||||||
roomserverURL string,
|
|
||||||
httpClient *http.Client,
|
|
||||||
//fsInputAPI fsAPI.FederationSenderInternalAPI,
|
|
||||||
immutableCache caching.ImmutableCache,
|
|
||||||
) (RoomserverInternalAPI, error) {
|
|
||||||
if httpClient == nil {
|
|
||||||
return nil, errors.New("NewRoomserverInternalAPIHTTP: httpClient is <nil>")
|
|
||||||
}
|
|
||||||
return &httpRoomserverInternalAPI{
|
|
||||||
roomserverURL: roomserverURL,
|
|
||||||
httpClient: httpClient,
|
|
||||||
immutableCache: immutableCache,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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
|
|
||||||
// and the federation sender input API being interdependent.
|
|
||||||
func (h *httpRoomserverInternalAPI) SetFederationSenderAPI(fsAPI fsInputAPI.FederationSenderInternalAPI) {
|
|
||||||
h.fsAPI = fsAPI
|
|
||||||
}
|
|
||||||
|
|
@ -16,11 +16,7 @@
|
||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
|
|
||||||
internalHTTP "github.com/matrix-org/dendrite/internal/http"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
opentracing "github.com/opentracing/opentracing-go"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -101,19 +97,3 @@ type InputRoomEventsRequest struct {
|
||||||
type InputRoomEventsResponse struct {
|
type InputRoomEventsResponse struct {
|
||||||
EventID string `json:"event_id"`
|
EventID string `json:"event_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RoomserverInputRoomEventsPath is the HTTP path for the InputRoomEvents API.
|
|
||||||
const RoomserverInputRoomEventsPath = "/roomserver/inputRoomEvents"
|
|
||||||
|
|
||||||
// InputRoomEvents implements RoomserverInputAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) InputRoomEvents(
|
|
||||||
ctx context.Context,
|
|
||||||
request *InputRoomEventsRequest,
|
|
||||||
response *InputRoomEventsResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "InputRoomEvents")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverInputRoomEventsPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,7 @@
|
||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
|
|
||||||
internalHTTP "github.com/matrix-org/dendrite/internal/http"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
"github.com/opentracing/opentracing-go"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// RoomserverPerformJoinPath is the HTTP path for the PerformJoin API.
|
|
||||||
RoomserverPerformJoinPath = "/roomserver/performJoin"
|
|
||||||
|
|
||||||
// RoomserverPerformLeavePath is the HTTP path for the PerformLeave API.
|
|
||||||
RoomserverPerformLeavePath = "/roomserver/performLeave"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type PerformJoinRequest struct {
|
type PerformJoinRequest struct {
|
||||||
|
|
@ -27,18 +15,6 @@ type PerformJoinResponse struct {
|
||||||
RoomID string `json:"room_id"`
|
RoomID string `json:"room_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *httpRoomserverInternalAPI) PerformJoin(
|
|
||||||
ctx context.Context,
|
|
||||||
request *PerformJoinRequest,
|
|
||||||
response *PerformJoinResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "PerformJoin")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverPerformJoinPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
type PerformLeaveRequest struct {
|
type PerformLeaveRequest struct {
|
||||||
RoomID string `json:"room_id"`
|
RoomID string `json:"room_id"`
|
||||||
UserID string `json:"user_id"`
|
UserID string `json:"user_id"`
|
||||||
|
|
@ -46,15 +22,3 @@ type PerformLeaveRequest struct {
|
||||||
|
|
||||||
type PerformLeaveResponse struct {
|
type PerformLeaveResponse struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *httpRoomserverInternalAPI) PerformLeave(
|
|
||||||
ctx context.Context,
|
|
||||||
request *PerformLeaveRequest,
|
|
||||||
response *PerformLeaveResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "PerformLeave")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverPerformLeavePath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,8 @@
|
||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
|
|
||||||
internalHTTP "github.com/matrix-org/dendrite/internal/http"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
"github.com/matrix-org/util"
|
"github.com/matrix-org/util"
|
||||||
opentracing "github.com/opentracing/opentracing-go"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// QueryLatestEventsAndStateRequest is a request to QueryLatestEventsAndState
|
// QueryLatestEventsAndStateRequest is a request to QueryLatestEventsAndState
|
||||||
|
|
@ -271,204 +267,3 @@ type QueryRoomVersionForRoomRequest struct {
|
||||||
type QueryRoomVersionForRoomResponse struct {
|
type QueryRoomVersionForRoomResponse struct {
|
||||||
RoomVersion gomatrixserverlib.RoomVersion `json:"room_version"`
|
RoomVersion gomatrixserverlib.RoomVersion `json:"room_version"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RoomserverQueryLatestEventsAndStatePath is the HTTP path for the QueryLatestEventsAndState API.
|
|
||||||
const RoomserverQueryLatestEventsAndStatePath = "/roomserver/queryLatestEventsAndState"
|
|
||||||
|
|
||||||
// RoomserverQueryStateAfterEventsPath is the HTTP path for the QueryStateAfterEvents API.
|
|
||||||
const RoomserverQueryStateAfterEventsPath = "/roomserver/queryStateAfterEvents"
|
|
||||||
|
|
||||||
// RoomserverQueryEventsByIDPath is the HTTP path for the QueryEventsByID API.
|
|
||||||
const RoomserverQueryEventsByIDPath = "/roomserver/queryEventsByID"
|
|
||||||
|
|
||||||
// RoomserverQueryMembershipForUserPath is the HTTP path for the QueryMembershipForUser API.
|
|
||||||
const RoomserverQueryMembershipForUserPath = "/roomserver/queryMembershipForUser"
|
|
||||||
|
|
||||||
// RoomserverQueryMembershipsForRoomPath is the HTTP path for the QueryMembershipsForRoom API
|
|
||||||
const RoomserverQueryMembershipsForRoomPath = "/roomserver/queryMembershipsForRoom"
|
|
||||||
|
|
||||||
// RoomserverQueryInvitesForUserPath is the HTTP path for the QueryInvitesForUser API
|
|
||||||
const RoomserverQueryInvitesForUserPath = "/roomserver/queryInvitesForUser"
|
|
||||||
|
|
||||||
// RoomserverQueryServerAllowedToSeeEventPath is the HTTP path for the QueryServerAllowedToSeeEvent API
|
|
||||||
const RoomserverQueryServerAllowedToSeeEventPath = "/roomserver/queryServerAllowedToSeeEvent"
|
|
||||||
|
|
||||||
// RoomserverQueryMissingEventsPath is the HTTP path for the QueryMissingEvents API
|
|
||||||
const RoomserverQueryMissingEventsPath = "/roomserver/queryMissingEvents"
|
|
||||||
|
|
||||||
// RoomserverQueryStateAndAuthChainPath is the HTTP path for the QueryStateAndAuthChain API
|
|
||||||
const RoomserverQueryStateAndAuthChainPath = "/roomserver/queryStateAndAuthChain"
|
|
||||||
|
|
||||||
// RoomserverQueryBackfillPath is the HTTP path for the QueryBackfillPath API
|
|
||||||
const RoomserverQueryBackfillPath = "/roomserver/queryBackfill"
|
|
||||||
|
|
||||||
// RoomserverQueryRoomVersionCapabilitiesPath is the HTTP path for the QueryRoomVersionCapabilities API
|
|
||||||
const RoomserverQueryRoomVersionCapabilitiesPath = "/roomserver/queryRoomVersionCapabilities"
|
|
||||||
|
|
||||||
// RoomserverQueryRoomVersionForRoomPath is the HTTP path for the QueryRoomVersionForRoom API
|
|
||||||
const RoomserverQueryRoomVersionForRoomPath = "/roomserver/queryRoomVersionForRoom"
|
|
||||||
|
|
||||||
// QueryLatestEventsAndState implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryLatestEventsAndState(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryLatestEventsAndStateRequest,
|
|
||||||
response *QueryLatestEventsAndStateResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryLatestEventsAndState")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryLatestEventsAndStatePath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryStateAfterEvents implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryStateAfterEvents(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryStateAfterEventsRequest,
|
|
||||||
response *QueryStateAfterEventsResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryStateAfterEvents")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryStateAfterEventsPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryEventsByID implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryEventsByID(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryEventsByIDRequest,
|
|
||||||
response *QueryEventsByIDResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryEventsByID")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryEventsByIDPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryMembershipForUser implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryMembershipForUser(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryMembershipForUserRequest,
|
|
||||||
response *QueryMembershipForUserResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryMembershipForUser")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryMembershipForUserPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryMembershipsForRoom implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryMembershipsForRoom(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryMembershipsForRoomRequest,
|
|
||||||
response *QueryMembershipsForRoomResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryMembershipsForRoom")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryMembershipsForRoomPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryInvitesForUser implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryInvitesForUser(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryInvitesForUserRequest,
|
|
||||||
response *QueryInvitesForUserResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryInvitesForUser")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryInvitesForUserPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryServerAllowedToSeeEvent implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryServerAllowedToSeeEvent(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryServerAllowedToSeeEventRequest,
|
|
||||||
response *QueryServerAllowedToSeeEventResponse,
|
|
||||||
) (err error) {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryServerAllowedToSeeEvent")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryServerAllowedToSeeEventPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryMissingEvents implements RoomServerQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryMissingEvents(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryMissingEventsRequest,
|
|
||||||
response *QueryMissingEventsResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryMissingEvents")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryMissingEventsPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryStateAndAuthChain implements RoomserverQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryStateAndAuthChain(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryStateAndAuthChainRequest,
|
|
||||||
response *QueryStateAndAuthChainResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryStateAndAuthChain")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryStateAndAuthChainPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryBackfill implements RoomServerQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryBackfill(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryBackfillRequest,
|
|
||||||
response *QueryBackfillResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryBackfill")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryBackfillPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryRoomVersionCapabilities implements RoomServerQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryRoomVersionCapabilities(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryRoomVersionCapabilitiesRequest,
|
|
||||||
response *QueryRoomVersionCapabilitiesResponse,
|
|
||||||
) error {
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryRoomVersionCapabilities")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryRoomVersionCapabilitiesPath
|
|
||||||
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
}
|
|
||||||
|
|
||||||
// QueryRoomVersionForRoom implements RoomServerQueryAPI
|
|
||||||
func (h *httpRoomserverInternalAPI) QueryRoomVersionForRoom(
|
|
||||||
ctx context.Context,
|
|
||||||
request *QueryRoomVersionForRoomRequest,
|
|
||||||
response *QueryRoomVersionForRoomResponse,
|
|
||||||
) error {
|
|
||||||
if roomVersion, ok := h.immutableCache.GetRoomVersion(request.RoomID); ok {
|
|
||||||
response.RoomVersion = roomVersion
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryRoomVersionForRoom")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryRoomVersionForRoomPath
|
|
||||||
err := internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
|
||||||
if err == nil {
|
|
||||||
h.immutableCache.StoreRoomVersion(request.RoomID, response.RoomVersion)
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,14 @@
|
||||||
package internal
|
package internal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"net/http"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/Shopify/sarama"
|
"github.com/Shopify/sarama"
|
||||||
"github.com/gorilla/mux"
|
|
||||||
fsAPI "github.com/matrix-org/dendrite/federationsender/api"
|
fsAPI "github.com/matrix-org/dendrite/federationsender/api"
|
||||||
"github.com/matrix-org/dendrite/internal"
|
|
||||||
"github.com/matrix-org/dendrite/internal/caching"
|
"github.com/matrix-org/dendrite/internal/caching"
|
||||||
"github.com/matrix-org/dendrite/internal/config"
|
"github.com/matrix-org/dendrite/internal/config"
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
|
||||||
"github.com/matrix-org/dendrite/roomserver/storage"
|
"github.com/matrix-org/dendrite/roomserver/storage"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
"github.com/matrix-org/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// RoomserverInternalAPI is an implementation of api.RoomserverInternalAPI
|
// RoomserverInternalAPI is an implementation of api.RoomserverInternalAPI
|
||||||
|
|
@ -30,285 +24,3 @@ type RoomserverInternalAPI struct {
|
||||||
mutex sync.Mutex // Protects calls to processRoomEvent
|
mutex sync.Mutex // Protects calls to processRoomEvent
|
||||||
fsAPI fsAPI.FederationSenderInternalAPI
|
fsAPI fsAPI.FederationSenderInternalAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetupHTTP adds the RoomserverInternalAPI handlers to the http.ServeMux.
|
|
||||||
// nolint: gocyclo
|
|
||||||
func (r *RoomserverInternalAPI) SetupHTTP(internalAPIMux *mux.Router) {
|
|
||||||
internalAPIMux.Handle(api.RoomserverInputRoomEventsPath,
|
|
||||||
internal.MakeInternalAPI("inputRoomEvents", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.InputRoomEventsRequest
|
|
||||||
var response api.InputRoomEventsResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
|
||||||
}
|
|
||||||
if err := r.InputRoomEvents(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(api.RoomserverPerformJoinPath,
|
|
||||||
internal.MakeInternalAPI("performJoin", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.PerformJoinRequest
|
|
||||||
var response api.PerformJoinResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
|
||||||
}
|
|
||||||
if err := r.PerformJoin(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(api.RoomserverPerformLeavePath,
|
|
||||||
internal.MakeInternalAPI("performLeave", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.PerformLeaveRequest
|
|
||||||
var response api.PerformLeaveResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
|
||||||
}
|
|
||||||
if err := r.PerformLeave(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryLatestEventsAndStatePath,
|
|
||||||
internal.MakeInternalAPI("queryLatestEventsAndState", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryLatestEventsAndStateRequest
|
|
||||||
var response api.QueryLatestEventsAndStateResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryLatestEventsAndState(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryStateAfterEventsPath,
|
|
||||||
internal.MakeInternalAPI("queryStateAfterEvents", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryStateAfterEventsRequest
|
|
||||||
var response api.QueryStateAfterEventsResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryStateAfterEvents(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryEventsByIDPath,
|
|
||||||
internal.MakeInternalAPI("queryEventsByID", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryEventsByIDRequest
|
|
||||||
var response api.QueryEventsByIDResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryEventsByID(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryMembershipForUserPath,
|
|
||||||
internal.MakeInternalAPI("QueryMembershipForUser", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryMembershipForUserRequest
|
|
||||||
var response api.QueryMembershipForUserResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryMembershipForUser(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryMembershipsForRoomPath,
|
|
||||||
internal.MakeInternalAPI("queryMembershipsForRoom", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryMembershipsForRoomRequest
|
|
||||||
var response api.QueryMembershipsForRoomResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryMembershipsForRoom(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryInvitesForUserPath,
|
|
||||||
internal.MakeInternalAPI("queryInvitesForUser", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryInvitesForUserRequest
|
|
||||||
var response api.QueryInvitesForUserResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryInvitesForUser(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryServerAllowedToSeeEventPath,
|
|
||||||
internal.MakeInternalAPI("queryServerAllowedToSeeEvent", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryServerAllowedToSeeEventRequest
|
|
||||||
var response api.QueryServerAllowedToSeeEventResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryServerAllowedToSeeEvent(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryMissingEventsPath,
|
|
||||||
internal.MakeInternalAPI("queryMissingEvents", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryMissingEventsRequest
|
|
||||||
var response api.QueryMissingEventsResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryMissingEvents(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryStateAndAuthChainPath,
|
|
||||||
internal.MakeInternalAPI("queryStateAndAuthChain", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryStateAndAuthChainRequest
|
|
||||||
var response api.QueryStateAndAuthChainResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryStateAndAuthChain(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryBackfillPath,
|
|
||||||
internal.MakeInternalAPI("QueryBackfill", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryBackfillRequest
|
|
||||||
var response api.QueryBackfillResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryBackfill(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryRoomVersionCapabilitiesPath,
|
|
||||||
internal.MakeInternalAPI("QueryRoomVersionCapabilities", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryRoomVersionCapabilitiesRequest
|
|
||||||
var response api.QueryRoomVersionCapabilitiesResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryRoomVersionCapabilities(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverQueryRoomVersionForRoomPath,
|
|
||||||
internal.MakeInternalAPI("QueryRoomVersionForRoom", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.QueryRoomVersionForRoomRequest
|
|
||||||
var response api.QueryRoomVersionForRoomResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.QueryRoomVersionForRoom(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverSetRoomAliasPath,
|
|
||||||
internal.MakeInternalAPI("setRoomAlias", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.SetRoomAliasRequest
|
|
||||||
var response api.SetRoomAliasResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.SetRoomAlias(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverGetRoomIDForAliasPath,
|
|
||||||
internal.MakeInternalAPI("GetRoomIDForAlias", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.GetRoomIDForAliasRequest
|
|
||||||
var response api.GetRoomIDForAliasResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.GetRoomIDForAlias(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverGetCreatorIDForAliasPath,
|
|
||||||
internal.MakeInternalAPI("GetCreatorIDForAlias", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.GetCreatorIDForAliasRequest
|
|
||||||
var response api.GetCreatorIDForAliasResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.GetCreatorIDForAlias(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverGetAliasesForRoomIDPath,
|
|
||||||
internal.MakeInternalAPI("getAliasesForRoomID", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.GetAliasesForRoomIDRequest
|
|
||||||
var response api.GetAliasesForRoomIDResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.GetAliasesForRoomID(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
internalAPIMux.Handle(
|
|
||||||
api.RoomserverRemoveRoomAliasPath,
|
|
||||||
internal.MakeInternalAPI("removeRoomAlias", func(req *http.Request) util.JSONResponse {
|
|
||||||
var request api.RemoveRoomAliasRequest
|
|
||||||
var response api.RemoveRoomAliasResponse
|
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
if err := r.RemoveRoomAlias(req.Context(), &request, &response); err != nil {
|
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
|
||||||
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
341
roomserver/inthttp/client.go
Normal file
341
roomserver/inthttp/client.go
Normal file
|
|
@ -0,0 +1,341 @@
|
||||||
|
package inthttp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
fsInputAPI "github.com/matrix-org/dendrite/federationsender/api"
|
||||||
|
"github.com/matrix-org/dendrite/internal/caching"
|
||||||
|
internalHTTP "github.com/matrix-org/dendrite/internal/http"
|
||||||
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
|
"github.com/opentracing/opentracing-go"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Alias operations
|
||||||
|
RoomserverSetRoomAliasPath = "/roomserver/setRoomAlias"
|
||||||
|
RoomserverGetRoomIDForAliasPath = "/roomserver/GetRoomIDForAlias"
|
||||||
|
RoomserverGetAliasesForRoomIDPath = "/roomserver/GetAliasesForRoomID"
|
||||||
|
RoomserverGetCreatorIDForAliasPath = "/roomserver/GetCreatorIDForAlias"
|
||||||
|
RoomserverRemoveRoomAliasPath = "/roomserver/removeRoomAlias"
|
||||||
|
|
||||||
|
// Input operations
|
||||||
|
RoomserverInputRoomEventsPath = "/roomserver/inputRoomEvents"
|
||||||
|
|
||||||
|
// Perform operations
|
||||||
|
RoomserverPerformJoinPath = "/roomserver/performJoin"
|
||||||
|
RoomserverPerformLeavePath = "/roomserver/performLeave"
|
||||||
|
|
||||||
|
// Query operations
|
||||||
|
RoomserverQueryLatestEventsAndStatePath = "/roomserver/queryLatestEventsAndState"
|
||||||
|
RoomserverQueryStateAfterEventsPath = "/roomserver/queryStateAfterEvents"
|
||||||
|
RoomserverQueryEventsByIDPath = "/roomserver/queryEventsByID"
|
||||||
|
RoomserverQueryMembershipForUserPath = "/roomserver/queryMembershipForUser"
|
||||||
|
RoomserverQueryMembershipsForRoomPath = "/roomserver/queryMembershipsForRoom"
|
||||||
|
RoomserverQueryInvitesForUserPath = "/roomserver/queryInvitesForUser"
|
||||||
|
RoomserverQueryServerAllowedToSeeEventPath = "/roomserver/queryServerAllowedToSeeEvent"
|
||||||
|
RoomserverQueryMissingEventsPath = "/roomserver/queryMissingEvents"
|
||||||
|
RoomserverQueryStateAndAuthChainPath = "/roomserver/queryStateAndAuthChain"
|
||||||
|
RoomserverQueryBackfillPath = "/roomserver/queryBackfill"
|
||||||
|
RoomserverQueryRoomVersionCapabilitiesPath = "/roomserver/queryRoomVersionCapabilities"
|
||||||
|
RoomserverQueryRoomVersionForRoomPath = "/roomserver/queryRoomVersionForRoom"
|
||||||
|
)
|
||||||
|
|
||||||
|
type httpRoomserverInternalAPI struct {
|
||||||
|
roomserverURL string
|
||||||
|
httpClient *http.Client
|
||||||
|
fsAPI fsInputAPI.FederationSenderInternalAPI
|
||||||
|
immutableCache caching.ImmutableCache
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRoomserverClient creates a RoomserverInputAPI implemented by talking to a HTTP POST API.
|
||||||
|
// If httpClient is nil an error is returned
|
||||||
|
func NewRoomserverClient(
|
||||||
|
roomserverURL string,
|
||||||
|
httpClient *http.Client,
|
||||||
|
immutableCache caching.ImmutableCache,
|
||||||
|
) (api.RoomserverInternalAPI, error) {
|
||||||
|
if httpClient == nil {
|
||||||
|
return nil, errors.New("NewRoomserverInternalAPIHTTP: httpClient is <nil>")
|
||||||
|
}
|
||||||
|
return &httpRoomserverInternalAPI{
|
||||||
|
roomserverURL: roomserverURL,
|
||||||
|
httpClient: httpClient,
|
||||||
|
immutableCache: immutableCache,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
// and the federation sender input API being interdependent.
|
||||||
|
func (h *httpRoomserverInternalAPI) SetFederationSenderAPI(fsAPI fsInputAPI.FederationSenderInternalAPI) {
|
||||||
|
h.fsAPI = fsAPI
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetRoomAlias implements RoomserverAliasAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) SetRoomAlias(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.SetRoomAliasRequest,
|
||||||
|
response *api.SetRoomAliasResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "SetRoomAlias")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverSetRoomAliasPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetRoomIDForAlias implements RoomserverAliasAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) GetRoomIDForAlias(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.GetRoomIDForAliasRequest,
|
||||||
|
response *api.GetRoomIDForAliasResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "GetRoomIDForAlias")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverGetRoomIDForAliasPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAliasesForRoomID implements RoomserverAliasAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) GetAliasesForRoomID(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.GetAliasesForRoomIDRequest,
|
||||||
|
response *api.GetAliasesForRoomIDResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "GetAliasesForRoomID")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverGetAliasesForRoomIDPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCreatorIDForAlias implements RoomserverAliasAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) GetCreatorIDForAlias(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.GetCreatorIDForAliasRequest,
|
||||||
|
response *api.GetCreatorIDForAliasResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "GetCreatorIDForAlias")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverGetCreatorIDForAliasPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveRoomAlias implements RoomserverAliasAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) RemoveRoomAlias(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.RemoveRoomAliasRequest,
|
||||||
|
response *api.RemoveRoomAliasResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "RemoveRoomAlias")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverRemoveRoomAliasPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InputRoomEvents implements RoomserverInputAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) InputRoomEvents(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.InputRoomEventsRequest,
|
||||||
|
response *api.InputRoomEventsResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "InputRoomEvents")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverInputRoomEventsPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpRoomserverInternalAPI) PerformJoin(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.PerformJoinRequest,
|
||||||
|
response *api.PerformJoinResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "PerformJoin")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverPerformJoinPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *httpRoomserverInternalAPI) PerformLeave(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.PerformLeaveRequest,
|
||||||
|
response *api.PerformLeaveResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "PerformLeave")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverPerformLeavePath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryLatestEventsAndState implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryLatestEventsAndState(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryLatestEventsAndStateRequest,
|
||||||
|
response *api.QueryLatestEventsAndStateResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryLatestEventsAndState")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryLatestEventsAndStatePath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryStateAfterEvents implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryStateAfterEvents(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryStateAfterEventsRequest,
|
||||||
|
response *api.QueryStateAfterEventsResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryStateAfterEvents")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryStateAfterEventsPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryEventsByID implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryEventsByID(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryEventsByIDRequest,
|
||||||
|
response *api.QueryEventsByIDResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryEventsByID")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryEventsByIDPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryMembershipForUser implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryMembershipForUser(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryMembershipForUserRequest,
|
||||||
|
response *api.QueryMembershipForUserResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryMembershipForUser")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryMembershipForUserPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryMembershipsForRoom implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryMembershipsForRoom(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryMembershipsForRoomRequest,
|
||||||
|
response *api.QueryMembershipsForRoomResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryMembershipsForRoom")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryMembershipsForRoomPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryInvitesForUser implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryInvitesForUser(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryInvitesForUserRequest,
|
||||||
|
response *api.QueryInvitesForUserResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryInvitesForUser")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryInvitesForUserPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryServerAllowedToSeeEvent implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryServerAllowedToSeeEvent(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryServerAllowedToSeeEventRequest,
|
||||||
|
response *api.QueryServerAllowedToSeeEventResponse,
|
||||||
|
) (err error) {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryServerAllowedToSeeEvent")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryServerAllowedToSeeEventPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryMissingEvents implements RoomServerQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryMissingEvents(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryMissingEventsRequest,
|
||||||
|
response *api.QueryMissingEventsResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryMissingEvents")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryMissingEventsPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryStateAndAuthChain implements RoomserverQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryStateAndAuthChain(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryStateAndAuthChainRequest,
|
||||||
|
response *api.QueryStateAndAuthChainResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryStateAndAuthChain")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryStateAndAuthChainPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryBackfill implements RoomServerQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryBackfill(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryBackfillRequest,
|
||||||
|
response *api.QueryBackfillResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryBackfill")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryBackfillPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryRoomVersionCapabilities implements RoomServerQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryRoomVersionCapabilities(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryRoomVersionCapabilitiesRequest,
|
||||||
|
response *api.QueryRoomVersionCapabilitiesResponse,
|
||||||
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryRoomVersionCapabilities")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryRoomVersionCapabilitiesPath
|
||||||
|
return internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryRoomVersionForRoom implements RoomServerQueryAPI
|
||||||
|
func (h *httpRoomserverInternalAPI) QueryRoomVersionForRoom(
|
||||||
|
ctx context.Context,
|
||||||
|
request *api.QueryRoomVersionForRoomRequest,
|
||||||
|
response *api.QueryRoomVersionForRoomResponse,
|
||||||
|
) error {
|
||||||
|
if roomVersion, ok := h.immutableCache.GetRoomVersion(request.RoomID); ok {
|
||||||
|
response.RoomVersion = roomVersion
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryRoomVersionForRoom")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
apiURL := h.roomserverURL + RoomserverQueryRoomVersionForRoomPath
|
||||||
|
err := internalHTTP.PostJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
|
if err == nil {
|
||||||
|
h.immutableCache.StoreRoomVersion(request.RoomID, response.RoomVersion)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
293
roomserver/inthttp/server.go
Normal file
293
roomserver/inthttp/server.go
Normal file
|
|
@ -0,0 +1,293 @@
|
||||||
|
package inthttp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gorilla/mux"
|
||||||
|
"github.com/matrix-org/dendrite/internal"
|
||||||
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
|
"github.com/matrix-org/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AddRoutes adds the RoomserverInternalAPI handlers to the http.ServeMux.
|
||||||
|
// nolint: gocyclo
|
||||||
|
func AddRoutes(r api.RoomserverInternalAPI, internalAPIMux *mux.Router) {
|
||||||
|
internalAPIMux.Handle(RoomserverInputRoomEventsPath,
|
||||||
|
internal.MakeInternalAPI("inputRoomEvents", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.InputRoomEventsRequest
|
||||||
|
var response api.InputRoomEventsResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
||||||
|
}
|
||||||
|
if err := r.InputRoomEvents(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(RoomserverPerformJoinPath,
|
||||||
|
internal.MakeInternalAPI("performJoin", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.PerformJoinRequest
|
||||||
|
var response api.PerformJoinResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
||||||
|
}
|
||||||
|
if err := r.PerformJoin(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(RoomserverPerformLeavePath,
|
||||||
|
internal.MakeInternalAPI("performLeave", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.PerformLeaveRequest
|
||||||
|
var response api.PerformLeaveResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
||||||
|
}
|
||||||
|
if err := r.PerformLeave(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryLatestEventsAndStatePath,
|
||||||
|
internal.MakeInternalAPI("queryLatestEventsAndState", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryLatestEventsAndStateRequest
|
||||||
|
var response api.QueryLatestEventsAndStateResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryLatestEventsAndState(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryStateAfterEventsPath,
|
||||||
|
internal.MakeInternalAPI("queryStateAfterEvents", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryStateAfterEventsRequest
|
||||||
|
var response api.QueryStateAfterEventsResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryStateAfterEvents(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryEventsByIDPath,
|
||||||
|
internal.MakeInternalAPI("queryEventsByID", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryEventsByIDRequest
|
||||||
|
var response api.QueryEventsByIDResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryEventsByID(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryMembershipForUserPath,
|
||||||
|
internal.MakeInternalAPI("QueryMembershipForUser", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryMembershipForUserRequest
|
||||||
|
var response api.QueryMembershipForUserResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryMembershipForUser(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryMembershipsForRoomPath,
|
||||||
|
internal.MakeInternalAPI("queryMembershipsForRoom", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryMembershipsForRoomRequest
|
||||||
|
var response api.QueryMembershipsForRoomResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryMembershipsForRoom(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryInvitesForUserPath,
|
||||||
|
internal.MakeInternalAPI("queryInvitesForUser", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryInvitesForUserRequest
|
||||||
|
var response api.QueryInvitesForUserResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryInvitesForUser(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryServerAllowedToSeeEventPath,
|
||||||
|
internal.MakeInternalAPI("queryServerAllowedToSeeEvent", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryServerAllowedToSeeEventRequest
|
||||||
|
var response api.QueryServerAllowedToSeeEventResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryServerAllowedToSeeEvent(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryMissingEventsPath,
|
||||||
|
internal.MakeInternalAPI("queryMissingEvents", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryMissingEventsRequest
|
||||||
|
var response api.QueryMissingEventsResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryMissingEvents(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryStateAndAuthChainPath,
|
||||||
|
internal.MakeInternalAPI("queryStateAndAuthChain", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryStateAndAuthChainRequest
|
||||||
|
var response api.QueryStateAndAuthChainResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryStateAndAuthChain(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryBackfillPath,
|
||||||
|
internal.MakeInternalAPI("QueryBackfill", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryBackfillRequest
|
||||||
|
var response api.QueryBackfillResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryBackfill(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryRoomVersionCapabilitiesPath,
|
||||||
|
internal.MakeInternalAPI("QueryRoomVersionCapabilities", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryRoomVersionCapabilitiesRequest
|
||||||
|
var response api.QueryRoomVersionCapabilitiesResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryRoomVersionCapabilities(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverQueryRoomVersionForRoomPath,
|
||||||
|
internal.MakeInternalAPI("QueryRoomVersionForRoom", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.QueryRoomVersionForRoomRequest
|
||||||
|
var response api.QueryRoomVersionForRoomResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.QueryRoomVersionForRoom(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverSetRoomAliasPath,
|
||||||
|
internal.MakeInternalAPI("setRoomAlias", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.SetRoomAliasRequest
|
||||||
|
var response api.SetRoomAliasResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.SetRoomAlias(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverGetRoomIDForAliasPath,
|
||||||
|
internal.MakeInternalAPI("GetRoomIDForAlias", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.GetRoomIDForAliasRequest
|
||||||
|
var response api.GetRoomIDForAliasResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.GetRoomIDForAlias(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverGetCreatorIDForAliasPath,
|
||||||
|
internal.MakeInternalAPI("GetCreatorIDForAlias", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.GetCreatorIDForAliasRequest
|
||||||
|
var response api.GetCreatorIDForAliasResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.GetCreatorIDForAlias(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverGetAliasesForRoomIDPath,
|
||||||
|
internal.MakeInternalAPI("getAliasesForRoomID", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.GetAliasesForRoomIDRequest
|
||||||
|
var response api.GetAliasesForRoomIDResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.GetAliasesForRoomID(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
internalAPIMux.Handle(
|
||||||
|
RoomserverRemoveRoomAliasPath,
|
||||||
|
internal.MakeInternalAPI("removeRoomAlias", func(req *http.Request) util.JSONResponse {
|
||||||
|
var request api.RemoveRoomAliasRequest
|
||||||
|
var response api.RemoveRoomAliasResponse
|
||||||
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
if err := r.RemoveRoomAlias(req.Context(), &request, &response); err != nil {
|
||||||
|
return util.ErrorResponse(err)
|
||||||
|
}
|
||||||
|
return util.JSONResponse{Code: http.StatusOK, JSON: &response}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -16,6 +16,7 @@ package roomserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
|
"github.com/matrix-org/dendrite/roomserver/inthttp"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/basecomponent"
|
||||||
|
|
@ -38,7 +39,7 @@ func SetupRoomServerComponent(
|
||||||
logrus.WithError(err).Panicf("failed to connect to room server db")
|
logrus.WithError(err).Panicf("failed to connect to room server db")
|
||||||
}
|
}
|
||||||
|
|
||||||
internalAPI := internal.RoomserverInternalAPI{
|
internalAPI := &internal.RoomserverInternalAPI{
|
||||||
DB: roomserverDB,
|
DB: roomserverDB,
|
||||||
Cfg: base.Cfg,
|
Cfg: base.Cfg,
|
||||||
Producer: base.KafkaProducer,
|
Producer: base.KafkaProducer,
|
||||||
|
|
@ -49,7 +50,7 @@ func SetupRoomServerComponent(
|
||||||
KeyRing: keyRing,
|
KeyRing: keyRing,
|
||||||
}
|
}
|
||||||
|
|
||||||
internalAPI.SetupHTTP(base.InternalAPIMux)
|
inthttp.AddRoutes(internalAPI, base.InternalAPIMux)
|
||||||
|
|
||||||
return &internalAPI
|
return internalAPI
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue