From be5c11029adb25c586c4fcde6fedfa01d1bdcd49 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Sun, 28 Dec 2025 14:46:44 +0100 Subject: email send backend --- include/exporter.hpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 include/exporter.hpp (limited to 'include/exporter.hpp') diff --git a/include/exporter.hpp b/include/exporter.hpp new file mode 100644 index 0000000..00eaf32 --- /dev/null +++ b/include/exporter.hpp @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2025 Aldrik Ramaekers +* +* 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 appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#pragma once + +#include "administration.hpp" + +#define E_ERR_SUCCESS 0 +#define E_ERR_FAILED_REQUEST 1 +#define E_ERR_UNIMPLEMENTED 2 + +typedef uint32_t e_err; + +namespace exporter { + + typedef enum + { + EXPORT_STARTING, + EXPORT_WAITING_FOR_RESPONSE, + EXPORT_DONE, + } status; + + typedef struct + { + time_t started_at; + e_err error; + status status; + char* sender; + char* recipient; + const char* subject; + const char* text; + } export_request; + + typedef struct + { + char* provider_name; + bool (*send_email)(char* sender, char* recipient, const char* subject, const char* text); + } email_provider_impl; + + email_provider_impl get_email_provider_implementation(email_provider provider); + exporter::export_request* send_email(char* sender, char* recipient, const char* subject, const char* text); +} \ No newline at end of file -- cgit v1.2.3-70-g09d2