mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2025-02-17 18:34:09 -05:00
Remove appservice REST servlets
This commit is contained in:
parent
af853a4cdb
commit
e7887e37a8
@ -32,7 +32,6 @@ from twisted.web.resource import Resource
|
|||||||
from twisted.web.static import File
|
from twisted.web.static import File
|
||||||
from twisted.web.server import Site
|
from twisted.web.server import Site
|
||||||
from synapse.http.server import JsonResource, RootRedirect
|
from synapse.http.server import JsonResource, RootRedirect
|
||||||
from synapse.rest.appservice.v1 import AppServiceRestResource
|
|
||||||
from synapse.rest.media.v0.content_repository import ContentRepoResource
|
from synapse.rest.media.v0.content_repository import ContentRepoResource
|
||||||
from synapse.rest.media.v1.media_repository import MediaRepositoryResource
|
from synapse.rest.media.v1.media_repository import MediaRepositoryResource
|
||||||
from synapse.http.server_key_resource import LocalKey
|
from synapse.http.server_key_resource import LocalKey
|
||||||
@ -78,9 +77,6 @@ class SynapseHomeServer(HomeServer):
|
|||||||
def build_resource_for_federation(self):
|
def build_resource_for_federation(self):
|
||||||
return JsonResource(self)
|
return JsonResource(self)
|
||||||
|
|
||||||
def build_resource_for_app_services(self):
|
|
||||||
return AppServiceRestResource(self)
|
|
||||||
|
|
||||||
def build_resource_for_web_client(self):
|
def build_resource_for_web_client(self):
|
||||||
import syweb
|
import syweb
|
||||||
syweb_path = os.path.dirname(syweb.__file__)
|
syweb_path = os.path.dirname(syweb.__file__)
|
||||||
@ -141,7 +137,6 @@ class SynapseHomeServer(HomeServer):
|
|||||||
(CONTENT_REPO_PREFIX, self.get_resource_for_content_repo()),
|
(CONTENT_REPO_PREFIX, self.get_resource_for_content_repo()),
|
||||||
(SERVER_KEY_PREFIX, self.get_resource_for_server_key()),
|
(SERVER_KEY_PREFIX, self.get_resource_for_server_key()),
|
||||||
(MEDIA_PREFIX, self.get_resource_for_media_repository()),
|
(MEDIA_PREFIX, self.get_resource_for_media_repository()),
|
||||||
(APP_SERVICE_PREFIX, self.get_resource_for_app_services()),
|
|
||||||
(STATIC_PREFIX, self.get_resource_for_static_content()),
|
(STATIC_PREFIX, self.get_resource_for_static_content()),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2015 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# 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.
|
|
@ -1,29 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2015 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
from . import register
|
|
||||||
|
|
||||||
from synapse.http.server import JsonResource
|
|
||||||
|
|
||||||
|
|
||||||
class AppServiceRestResource(JsonResource):
|
|
||||||
"""A resource for version 1 of the matrix application service API."""
|
|
||||||
|
|
||||||
def __init__(self, hs):
|
|
||||||
JsonResource.__init__(self, hs)
|
|
||||||
self.register_servlets(self, hs)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def register_servlets(appservice_resource, hs):
|
|
||||||
register.register_servlets(hs, appservice_resource)
|
|
@ -1,48 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2015 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
"""This module contains base REST classes for constructing client v1 servlets.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from synapse.http.servlet import RestServlet
|
|
||||||
from synapse.api.urls import APP_SERVICE_PREFIX
|
|
||||||
import re
|
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
def as_path_pattern(path_regex):
|
|
||||||
"""Creates a regex compiled appservice path with the correct path
|
|
||||||
prefix.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
path_regex (str): The regex string to match. This should NOT have a ^
|
|
||||||
as this will be prefixed.
|
|
||||||
Returns:
|
|
||||||
SRE_Pattern
|
|
||||||
"""
|
|
||||||
return re.compile("^" + APP_SERVICE_PREFIX + path_regex)
|
|
||||||
|
|
||||||
|
|
||||||
class AppServiceRestServlet(RestServlet):
|
|
||||||
"""A base Synapse REST Servlet for the application services version 1 API.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, hs):
|
|
||||||
self.hs = hs
|
|
||||||
self.handler = hs.get_handlers().appservice_handler
|
|
@ -1,99 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2015 OpenMarket Ltd
|
|
||||||
#
|
|
||||||
# Licensensed 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.
|
|
||||||
|
|
||||||
"""This module contains REST servlets to do with registration: /register"""
|
|
||||||
from twisted.internet import defer
|
|
||||||
|
|
||||||
from base import AppServiceRestServlet, as_path_pattern
|
|
||||||
from synapse.api.errors import CodeMessageException, SynapseError
|
|
||||||
from synapse.storage.appservice import ApplicationService
|
|
||||||
|
|
||||||
import json
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class RegisterRestServlet(AppServiceRestServlet):
|
|
||||||
"""Handles AS registration with the home server.
|
|
||||||
"""
|
|
||||||
|
|
||||||
PATTERN = as_path_pattern("/register$")
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
|
||||||
def on_POST(self, request):
|
|
||||||
params = _parse_json(request)
|
|
||||||
|
|
||||||
# sanity check required params
|
|
||||||
try:
|
|
||||||
as_token = params["as_token"]
|
|
||||||
as_url = params["url"]
|
|
||||||
if (not isinstance(as_token, basestring) or
|
|
||||||
not isinstance(as_url, basestring)):
|
|
||||||
raise ValueError
|
|
||||||
except (KeyError, ValueError):
|
|
||||||
raise SynapseError(
|
|
||||||
400, "Missed required keys: as_token(str) / url(str)."
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
app_service = ApplicationService(
|
|
||||||
as_token, as_url, params["namespaces"]
|
|
||||||
)
|
|
||||||
except ValueError as e:
|
|
||||||
raise SynapseError(400, e.message)
|
|
||||||
|
|
||||||
app_service = yield self.handler.register(app_service)
|
|
||||||
hs_token = app_service.hs_token
|
|
||||||
|
|
||||||
defer.returnValue((200, {
|
|
||||||
"hs_token": hs_token
|
|
||||||
}))
|
|
||||||
|
|
||||||
|
|
||||||
class UnregisterRestServlet(AppServiceRestServlet):
|
|
||||||
"""Handles AS registration with the home server.
|
|
||||||
"""
|
|
||||||
|
|
||||||
PATTERN = as_path_pattern("/unregister$")
|
|
||||||
|
|
||||||
def on_POST(self, request):
|
|
||||||
params = _parse_json(request)
|
|
||||||
try:
|
|
||||||
as_token = params["as_token"]
|
|
||||||
if not isinstance(as_token, basestring):
|
|
||||||
raise ValueError
|
|
||||||
except (KeyError, ValueError):
|
|
||||||
raise SynapseError(400, "Missing required key: as_token(str)")
|
|
||||||
|
|
||||||
yield self.handler.unregister(as_token)
|
|
||||||
|
|
||||||
raise CodeMessageException(500, "Not implemented")
|
|
||||||
|
|
||||||
|
|
||||||
def _parse_json(request):
|
|
||||||
try:
|
|
||||||
content = json.loads(request.content.read())
|
|
||||||
if type(content) != dict:
|
|
||||||
raise SynapseError(400, "Content must be a JSON object.")
|
|
||||||
return content
|
|
||||||
except ValueError as e:
|
|
||||||
logger.warn(e)
|
|
||||||
raise SynapseError(400, "Content not JSON.")
|
|
||||||
|
|
||||||
|
|
||||||
def register_servlets(hs, http_server):
|
|
||||||
RegisterRestServlet(hs).register(http_server)
|
|
||||||
UnregisterRestServlet(hs).register(http_server)
|
|
@ -79,7 +79,6 @@ class BaseHomeServer(object):
|
|||||||
'resource_for_content_repo',
|
'resource_for_content_repo',
|
||||||
'resource_for_server_key',
|
'resource_for_server_key',
|
||||||
'resource_for_media_repository',
|
'resource_for_media_repository',
|
||||||
'resource_for_app_services',
|
|
||||||
'resource_for_metrics',
|
'resource_for_metrics',
|
||||||
'event_sources',
|
'event_sources',
|
||||||
'ratelimiter',
|
'ratelimiter',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user