112 lines
2.6 KiB
TypeScript
112 lines
2.6 KiB
TypeScript
![]() |
/*
|
||
|
This file is part of »munin«.
|
||
|
|
||
|
Copyright 2025 'Fenris Wolf' <fenris@folksprak.org>
|
||
|
|
||
|
»munin« is free software: you can redistribute it and/or modify
|
||
|
it under the terms of the GNU Lesser General Public License as published by
|
||
|
the Free Software Foundation, either version 3 of the License, or
|
||
|
(at your option) any later version.
|
||
|
|
||
|
»munin« is distributed in the hope that it will be useful,
|
||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
GNU Lesser General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU Lesser General Public License
|
||
|
along with »munin«. If not, see <http://www.gnu.org/licenses/>.
|
||
|
*/
|
||
|
|
||
|
|
||
|
namespace _munin.targets.email
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
*/
|
||
|
export type type_parameters = {
|
||
|
smtp_host : string;
|
||
|
smtp_port : int;
|
||
|
smtp_username : string;
|
||
|
smtp_password : string;
|
||
|
sender : string;
|
||
|
receivers : Array<string>;
|
||
|
/**
|
||
|
* in hours
|
||
|
*/
|
||
|
reminders : Array<int>;
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
*/
|
||
|
async function send(
|
||
|
parameters : type_parameters,
|
||
|
labels : _munin.type_labels,
|
||
|
event : _munin.type_event
|
||
|
) : Promise<void>
|
||
|
{
|
||
|
await lib_plankton.email.send(
|
||
|
{
|
||
|
"host": parameters.smtp_host,
|
||
|
"port": parameters.smtp_port,
|
||
|
"username": parameters.smtp_username,
|
||
|
"password": parameters.smtp_password,
|
||
|
},
|
||
|
parameters.sender,
|
||
|
parameters.receivers,
|
||
|
lib_plankton.string.coin(
|
||
|
"[{{head}}] {{date}} : {{title}}",
|
||
|
{
|
||
|
"head": labels.head,
|
||
|
"date": lib_plankton.pit.date_format(event.begin.date),
|
||
|
"title": event.title,
|
||
|
}
|
||
|
),
|
||
|
lib_plankton.string.coin(
|
||
|
"*{{head}}*\n\n\{{title_label}} | {{title_value}}\n{{time_label}} | {{time_value}}{{macro_location}}",
|
||
|
{
|
||
|
"head": labels.head,
|
||
|
"title_label": labels.title.toUpperCase(),
|
||
|
"title_value": event.title,
|
||
|
"time_label": labels.time.toUpperCase(),
|
||
|
"time_value": lib_plankton.pit.timespan_format(event.begin, event.end),
|
||
|
"macro_location": (
|
||
|
(event.location === null)
|
||
|
?
|
||
|
""
|
||
|
:
|
||
|
lib_plankton.string.coin(
|
||
|
"\n{{location_label}} | {{location_value}}",
|
||
|
{
|
||
|
"location_label": labels.location.toUpperCase(),
|
||
|
"location_value": event.location,
|
||
|
}
|
||
|
)
|
||
|
),
|
||
|
}
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*/
|
||
|
export function implementation_target(
|
||
|
parameters : type_parameters
|
||
|
) : _munin.type_target
|
||
|
{
|
||
|
return {
|
||
|
"reminders": parameters.reminders,
|
||
|
"show": () => lib_plankton.string.coin(
|
||
|
"email:{{receivers}}",
|
||
|
{
|
||
|
"receivers": parameters.receivers.join(","),
|
||
|
}
|
||
|
),
|
||
|
"send": (labels, event) => send(parameters, labels, event),
|
||
|
};
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|