Added /matrix/content path, HS resource_for_content_repo attribute and FileUploadResource. Added stub methods.

paul/schema_breaking_changes
Kegan Dougal 2014-08-18 15:01:08 +01:00
parent 301e55d11d
commit a18b1a649c
4 changed files with 41 additions and 4 deletions

View File

@ -18,3 +18,4 @@
CLIENT_PREFIX = "/matrix/client/api/v1"
FEDERATION_PREFIX = "/matrix/federation/v1"
WEB_CLIENT_PREFIX = "/matrix/client"
CONTENT_REPO_PREFIX = "/matrix/content"

View File

@ -24,9 +24,11 @@ from twisted.python.log import PythonLoggingObserver
from twisted.web.resource import Resource
from twisted.web.static import File
from twisted.web.server import Site
from synapse.http.server import JsonResource, RootRedirect
from synapse.http.server import JsonResource, RootRedirect, FileUploadResource
from synapse.http.client import TwistedHttpClient
from synapse.api.urls import CLIENT_PREFIX, FEDERATION_PREFIX, WEB_CLIENT_PREFIX
from synapse.api.urls import (
CLIENT_PREFIX, FEDERATION_PREFIX, WEB_CLIENT_PREFIX, CONTENT_REPO_PREFIX
)
from daemonize import Daemonize
@ -53,6 +55,9 @@ class SynapseHomeServer(HomeServer):
def build_resource_for_web_client(self):
return File("webclient") # TODO configurable?
def build_resource_for_content_repo(self):
return FileUploadResource("uploads")
def build_db_pool(self):
""" Set up all the dbs. Since all the *.sql have IF NOT EXISTS, so we
don't have to worry about overwriting existing content.
@ -101,7 +106,8 @@ class SynapseHomeServer(HomeServer):
# [ ("/aaa/bbb/cc", Resource1), ("/aaa/dummy", Resource2) ]
desired_tree = [
(CLIENT_PREFIX, self.get_resource_for_client()),
(FEDERATION_PREFIX, self.get_resource_for_federation())
(FEDERATION_PREFIX, self.get_resource_for_federation()),
(CONTENT_REPO_PREFIX, self.get_resource_for_content_repo())
]
if web_client:
logger.info("Adding the web client.")

View File

@ -25,6 +25,7 @@ from twisted.web.server import NOT_DONE_YET
from twisted.web.util import redirectTo
import collections
import json
import logging
@ -176,6 +177,33 @@ class RootRedirect(resource.Resource):
return resource.Resource.getChild(self, name, request)
class FileUploadResource(resource.Resource):
isLeaf = True
def __init__(self, directory):
resource.Resource.__init__(self)
self.directory = directory
def render(self, request):
self._async_render(request)
return server.NOT_DONE_YET
# @defer.inlineCallbacks
def _async_render(self, request):
request.setResponseCode(200)
request.setHeader(b"Content-Type", b"application/json")
request.setHeader("Access-Control-Allow-Origin", "*")
request.setHeader("Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, OPTIONS")
request.setHeader("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept")
request.write(json.dumps({"url": "not_implemented"}))
request.finish()
defer.succeed("not implemented")
def respond_with_json_bytes(request, code, json_bytes, send_cors=False):
"""Sends encoded JSON in response to the given request.

View File

@ -72,6 +72,7 @@ class BaseHomeServer(object):
'resource_for_client',
'resource_for_federation',
'resource_for_web_client',
'resource_for_content_repo',
]
def __init__(self, hostname, **kwargs):
@ -140,6 +141,7 @@ class HomeServer(BaseHomeServer):
resource_for_client
resource_for_web_client
resource_for_federation
resource_for_content_repo
http_client
db_pool
"""