diff options
| author | Aldrik Ramaekers <aldrik@mailbox.org> | 2025-12-28 14:46:44 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@mailbox.org> | 2025-12-28 14:46:44 +0100 |
| commit | be5c11029adb25c586c4fcde6fedfa01d1bdcd49 (patch) | |
| tree | 251f196c59f5ce2625058c5788e2107059f642ef /include/exporter.hpp | |
| parent | 7c3a271feea4b3693bf93a47924f7c682585e179 (diff) | |
email send backend
Diffstat (limited to 'include/exporter.hpp')
| -rw-r--r-- | include/exporter.hpp | 55 |
1 files changed, 55 insertions, 0 deletions
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 <aldrik.ramaekers@gmail.com> +* +* 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 |
