/* * 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_TIMEOUT 2 #define E_ERR_UNAUTHORIZED 3 #define E_ERR_SERVER_ERROR 4 #define E_ERR_LIMITS_REACHED 5 typedef uint32_t e_err; namespace exporter { typedef enum { EXPORT_STARTING, EXPORT_WAITING_FOR_RESPONSE, EXPORT_DONE, } export_status; typedef void (*send_email_callback)(e_err err); typedef struct { time_t started_at; time_t done_at; e_err error; export_status status; const char* sender; const char* recipient; const char* subject; const char* text; send_email_callback callback; } export_request; typedef struct { const char* provider_name; const char* icon_name; bool (*send_email)(const char* sender, const 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(const char* sender, const char* recipient, const char* subject, const char* text, send_email_callback ev); }