aboutsummaryrefslogtreecommitdiff
path: root/cmd/dendritejs
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/dendritejs')
-rw-r--r--cmd/dendritejs/main.go3
-rw-r--r--cmd/dendritejs/publicrooms.go46
2 files changed, 48 insertions, 1 deletions
diff --git a/cmd/dendritejs/main.go b/cmd/dendritejs/main.go
index 25492b16..7c852671 100644
--- a/cmd/dendritejs/main.go
+++ b/cmd/dendritejs/main.go
@@ -119,6 +119,7 @@ func main() {
},
KeyDatabase: keyDB,
}
+ p2pPublicRoomProvider := NewLibP2PPublicRoomsProvider(node)
alias, input, query := roomserver.SetupRoomServerComponent(base)
typingInputAPI := typingserver.SetupTypingServerComponent(base, cache.NewTypingCache())
@@ -134,7 +135,7 @@ func main() {
)
federationapi.SetupFederationAPIComponent(base, accountDB, deviceDB, federation, &keyRing, alias, input, query, asQuery, fedSenderAPI)
mediaapi.SetupMediaAPIComponent(base, deviceDB)
- publicroomsapi.SetupPublicRoomsAPIComponent(base, deviceDB, query)
+ publicroomsapi.SetupPublicRoomsAPIComponent(base, deviceDB, query, federation, p2pPublicRoomProvider)
syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, query, federation, cfg)
httpHandler := common.WrapHandlerInCORS(base.APIMux)
diff --git a/cmd/dendritejs/publicrooms.go b/cmd/dendritejs/publicrooms.go
new file mode 100644
index 00000000..17822e7a
--- /dev/null
+++ b/cmd/dendritejs/publicrooms.go
@@ -0,0 +1,46 @@
+// Copyright 2020 The Matrix.org Foundation C.I.C.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// +build wasm
+
+package main
+
+import (
+ "github.com/matrix-org/go-http-js-libp2p/go_http_js_libp2p"
+)
+
+type libp2pPublicRoomsProvider struct {
+ node *go_http_js_libp2p.P2pLocalNode
+ providers []go_http_js_libp2p.PeerInfo
+}
+
+func NewLibP2PPublicRoomsProvider(node *go_http_js_libp2p.P2pLocalNode) *libp2pPublicRoomsProvider {
+ p := &libp2pPublicRoomsProvider{
+ node: node,
+ }
+ node.RegisterFoundProviders(p.foundProviders)
+ return p
+}
+
+func (p *libp2pPublicRoomsProvider) foundProviders(peerInfos []go_http_js_libp2p.PeerInfo) {
+ p.providers = peerInfos
+}
+
+func (p *libp2pPublicRoomsProvider) Homeservers() []string {
+ result := make([]string, len(p.providers))
+ for i := range p.providers {
+ result[i] = p.providers[i].Id
+ }
+ return result
+}