From 07f2827e011e19b2f1b87a3f2037b4311bed59ea Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Wed, 13 Dec 2023 17:52:18 -0500 Subject: [PATCH] upload.c: skeleton code for load_attachments_from_message() --- webcit-ng/api.txt | 6 ++++-- webcit-ng/server/upload.c | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/webcit-ng/api.txt b/webcit-ng/api.txt index f148f53c5..378b5b59a 100644 --- a/webcit-ng/api.txt +++ b/webcit-ng/api.txt @@ -44,5 +44,7 @@ POST /ctdl/p Handler for uploading attachm "contentlength" : 56222252 } ] -GET /ctdl/p/ Fetch a specific item that was uploaded -DELETE /ctdl/p/ Delete a specific item that was uploaded +GET /ctdl/p/ Fetch a specific item that was uploaded ("ref" was returned by the upload) +DELETE /ctdl/p/ Delete a specific item that was uploaded ("ref" was returned by the upload) +GET /ctdl/p/ Load the attachments from message in, as if they were uploaded + by the client. Returns the same JSON as "POST /ctdl/p". diff --git a/webcit-ng/server/upload.c b/webcit-ng/server/upload.c index 6854acf8a..3c40d9fed 100644 --- a/webcit-ng/server/upload.c +++ b/webcit-ng/server/upload.c @@ -146,12 +146,28 @@ struct uploaded_file pop_upload(char *id) { } +// Load the attachments from an existing message. This is typically used when forwarding a message, +// so the attachments don't have to be sent out to the browser and back. +void load_attachments_from_message(struct http_transaction *h, struct ctdlsession *c, char *name) { + syslog(LOG_DEBUG, "\033[33mload_attachments_from_message: method is \033[35m%s\033[33m, name is \033[33m%s\033[0m", h->method, name); + do_405(h); +} + + // Handle operations on a specific upload void specific_upload(struct http_transaction *h, struct ctdlsession *c, char *name) { int i; struct uploaded_file *u; struct uploaded_file this_one; + syslog(LOG_DEBUG, "\033[33mspecific_upload: method is \033[35m%s\033[33m, name is \033[33m%s\033[0m", h->method, name); + + // GET of a msgnum is a request to load the attachments from an existing message. + if ( (!strcasecmp(h->method, "GET")) && (atol(name) > 0) ) { + load_attachments_from_message(h, c, name); + return; + } + if (upload_list == NULL) { do_404(h); return; -- 2.30.2