From ba3d1e7af4b6501d3994b59a2180289931908008 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 24 Dec 2017 17:15:42 -0700 Subject: [PATCH] modules: Add stub media/upload. --- modules/Makefile.am | 2 + modules/media/upload.cc | 88 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 modules/media/upload.cc diff --git a/modules/Makefile.am b/modules/Makefile.am index 8b6937897..9faa42197 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -109,8 +109,10 @@ federation_module_LTLIBRARIES = \ # library is media_X.so in the main modules dir. media_moduledir = @moduledir@ media_media_download_la_SOURCES = media/download.cc +media_media_upload_la_SOURCES = media/upload.cc media_module_LTLIBRARIES = \ media/media_download.la \ + media/media_upload.la \ ### # This puts the source in vm/ but the installed diff --git a/modules/media/upload.cc b/modules/media/upload.cc new file mode 100644 index 000000000..eae50233d --- /dev/null +++ b/modules/media/upload.cc @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2017 Charybdis Development Team + * Copyright (C) 2017 Jason Volk + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using namespace ircd; + +mapi::header IRCD_MODULE +{ + "media upload" +}; + +struct upload_resource +:resource +{ + using resource::resource; +} +upload_resource +{ + "/_matrix/media/r0/upload/", resource::opts + { + "media upload", + resource::DIRECTORY + } +}; + +resource::response +handle_post(client &client, + const resource::request &request) +{ + auto filename + { + request.query["filename"] + }; + + return resource::response + { + client, http::OK + }; +} + +resource::method method_post +{ + upload_resource, "POST", handle_post, + { + method_post.REQUIRES_AUTH + } +}; + +resource::response +handle_put(client &client, + const resource::request &request) +{ + auto filename + { + request.parv[0] + }; + + return resource::response + { + client, http::OK + }; +} +/* +resource::method method_put +{ + upload_resource, "PUT", handle_put, + { + method_put.REQUIRES_AUTH + } +}; +*/