[add] category and title whitelists [add] hide_tags
This commit is contained in:
parent
7a882e76ea
commit
0ac13808c5
212
source/conf.ts
212
source/conf.ts
|
@ -136,6 +136,7 @@ namespace _munin.conf
|
|||
smtp_port : int;
|
||||
smtp_username : string;
|
||||
smtp_password : string;
|
||||
sender : string;
|
||||
receivers : Array<string>;
|
||||
/**
|
||||
* in hours
|
||||
|
@ -171,7 +172,71 @@ namespace _munin.conf
|
|||
|
||||
/**
|
||||
*/
|
||||
export type type_conf = type_conf_v3;
|
||||
type type_conf_v4 = {
|
||||
sources : Array<
|
||||
(
|
||||
{
|
||||
kind : "ical_feed";
|
||||
data : {
|
||||
url : string;
|
||||
filtration : {
|
||||
category_whitelist : (null | Array<string>);
|
||||
category_blacklist : (null | Array<string>);
|
||||
title_whitelist : (null | Array<string>);
|
||||
title_blacklist : (null | Array<string>);
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
>;
|
||||
targets : Array<
|
||||
(
|
||||
{
|
||||
kind : "email";
|
||||
data : {
|
||||
smtp_host : string;
|
||||
smtp_port : int;
|
||||
smtp_username : string;
|
||||
smtp_password : string;
|
||||
sender : string;
|
||||
receivers : Array<string>;
|
||||
hide_tags : boolean;
|
||||
/**
|
||||
* in hours
|
||||
*/
|
||||
reminders : Array<int>;
|
||||
}
|
||||
}
|
||||
|
|
||||
{
|
||||
kind : "telegram_bot";
|
||||
data : {
|
||||
bot_token : string;
|
||||
chat_id : int;
|
||||
hide_tags : boolean;
|
||||
/**
|
||||
* in hours
|
||||
*/
|
||||
reminders : Array<int>;
|
||||
}
|
||||
}
|
||||
)
|
||||
>;
|
||||
settings : {
|
||||
interval : float;
|
||||
};
|
||||
labels : {
|
||||
head : string;
|
||||
title : string;
|
||||
time : string;
|
||||
location : string;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
export type type_conf = type_conf_v4;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -253,6 +318,84 @@ namespace _munin.conf
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
function convert_from_v3(
|
||||
conf_v3 : type_conf_v3
|
||||
) : type_conf_v4
|
||||
{
|
||||
return {
|
||||
"sources": conf_v3.sources.map(
|
||||
source => {
|
||||
switch (source.kind) {
|
||||
case "ical_feed": {
|
||||
return {
|
||||
"kind": "ical_feed",
|
||||
"data": {
|
||||
"url": source.data.url,
|
||||
"filtration": {
|
||||
"category_whitelist": null,
|
||||
"category_blacklist": source.data.filtration.category_blacklist,
|
||||
"title_whitelist": null,
|
||||
"title_blacklist": source.data.filtration.category_blacklist,
|
||||
},
|
||||
}
|
||||
};
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
// return source;
|
||||
throw (new Error("unhandled source kind: " + source.kind));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
),
|
||||
"targets": conf_v3.targets.map(
|
||||
target => {
|
||||
switch (target.kind) {
|
||||
case "email": {
|
||||
return {
|
||||
"kind": "email",
|
||||
"data": {
|
||||
"smtp_host": target.data.smtp_host,
|
||||
"smtp_port": target.data.smtp_port,
|
||||
"smtp_username": target.data.smtp_username,
|
||||
"smtp_password": target.data.smtp_password,
|
||||
"sender": target.data.sender,
|
||||
"receivers": target.data.receivers,
|
||||
"hide_tags": false,
|
||||
"reminders": target.data.reminders,
|
||||
},
|
||||
};
|
||||
break;
|
||||
}
|
||||
case "telegram_bot": {
|
||||
return {
|
||||
"kind": "telegram_bot",
|
||||
"data": {
|
||||
"bot_token": target.data.bot_token,
|
||||
"chat_id": target.data.chat_id,
|
||||
"hide_tags": false,
|
||||
"reminders": target.data.reminders,
|
||||
},
|
||||
};
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
// return target;
|
||||
throw (new Error("unhandled target kind: " + String(target)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
),
|
||||
"settings": conf_v3.settings,
|
||||
"labels": conf_v3.labels,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
function schema_source_kalender_digital(
|
||||
|
@ -280,7 +423,7 @@ namespace _munin.conf
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"category_blacklist": {
|
||||
"nullable": false,
|
||||
"nullable": true,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"nullable": false,
|
||||
|
@ -289,7 +432,7 @@ namespace _munin.conf
|
|||
"default": [],
|
||||
},
|
||||
"title_blacklist": {
|
||||
"nullable": false,
|
||||
"nullable": true,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"nullable": false,
|
||||
|
@ -345,23 +488,41 @@ namespace _munin.conf
|
|||
"nullable": false,
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"category_blacklist": {
|
||||
"nullable": false,
|
||||
"category_whitelist": {
|
||||
"nullable": true,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"nullable": false,
|
||||
"type": "string",
|
||||
},
|
||||
"default": [],
|
||||
"default": null,
|
||||
},
|
||||
"category_blacklist": {
|
||||
"nullable": true,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"nullable": false,
|
||||
"type": "string",
|
||||
},
|
||||
"default": null,
|
||||
},
|
||||
"title_whitelist": {
|
||||
"nullable": true,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"nullable": false,
|
||||
"type": "string",
|
||||
},
|
||||
"default": null,
|
||||
},
|
||||
"title_blacklist": {
|
||||
"nullable": false,
|
||||
"nullable": true,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"nullable": false,
|
||||
"type": "string",
|
||||
},
|
||||
"default": [],
|
||||
"default": null,
|
||||
},
|
||||
},
|
||||
"additionalProperties": false,
|
||||
|
@ -433,6 +594,11 @@ namespace _munin.conf
|
|||
"type": "string",
|
||||
}
|
||||
},
|
||||
"hide_tags": {
|
||||
"nullable": false,
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
},
|
||||
"reminders": {
|
||||
"nullable": false,
|
||||
"type": "array",
|
||||
|
@ -527,6 +693,11 @@ namespace _munin.conf
|
|||
"nullable": false,
|
||||
"type": "integer",
|
||||
},
|
||||
"hide_tags": {
|
||||
"nullable": false,
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
},
|
||||
"reminders": {
|
||||
"nullable": false,
|
||||
"type": "array",
|
||||
|
@ -653,7 +824,7 @@ namespace _munin.conf
|
|||
/**
|
||||
*/
|
||||
export function schema(
|
||||
version : string = "3"
|
||||
version : string = "4"
|
||||
) : lib_plankton.conf.type_schema
|
||||
{
|
||||
switch (version) {
|
||||
|
@ -680,7 +851,8 @@ namespace _munin.conf
|
|||
break;
|
||||
}
|
||||
case "2":
|
||||
case "3": {
|
||||
case "3":
|
||||
case "4": {
|
||||
return {
|
||||
"nullable": false,
|
||||
"type": "object",
|
||||
|
@ -714,27 +886,37 @@ namespace _munin.conf
|
|||
{
|
||||
"1": {"target": "2", "function": convert_from_v1},
|
||||
"2": {"target": "3", "function": convert_from_v2},
|
||||
"3": null,
|
||||
"3": {"target": "4", "function": convert_from_v3},
|
||||
"4": null,
|
||||
}
|
||||
);
|
||||
|
||||
/*
|
||||
switch (conf_raw.version) {
|
||||
case "1": {
|
||||
const conf_v1 : type_conf_v1 = (conf_raw.content as type_conf_v1);
|
||||
const conf_v2 : type_conf_v2 = convert_from_v1(conf_v1);
|
||||
const conf_v3 : type_conf_v3 = convert_from_v2(conf_v2);
|
||||
return conf_v3;
|
||||
const conf_v4 : type_conf_v4 = convert_from_v3(conf_v3);
|
||||
return conf_v4;
|
||||
break;
|
||||
}
|
||||
case "2": {
|
||||
const conf_v2 : type_conf_v2 = (conf_raw.content as type_conf_v2);
|
||||
const conf_v3 : type_conf_v3 = convert_from_v2(conf_v2);
|
||||
return conf_v3;
|
||||
const conf_v4 : type_conf_v4 = convert_from_v3(conf_v3);
|
||||
return conf_v4;
|
||||
break;
|
||||
}
|
||||
case "3": {
|
||||
const conf_v3 : type_conf_v3 = (conf_raw.content as type_conf_v3);
|
||||
return conf_v3;
|
||||
const conf_v4 : type_conf_v4 = convert_from_v3(conf_v3);
|
||||
return conf_v4;
|
||||
break;
|
||||
}
|
||||
case "4": {
|
||||
const conf_v4 : type_conf_v4 = (conf_raw.content as type_conf_v4);
|
||||
return conf_v4;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
|
@ -742,6 +924,8 @@ namespace _munin.conf
|
|||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
return (conf_raw.content as type_conf_v4);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -26,8 +26,10 @@ namespace _munin.sources.ical_feed
|
|||
export type type_parameters = {
|
||||
url : string;
|
||||
filtration : {
|
||||
category_blacklist : Array<string>;
|
||||
title_blacklist : Array<string>;
|
||||
category_whitelist : (null | Array<string>);
|
||||
category_blacklist : (null | Array<string>);
|
||||
title_whitelist : (null | Array<string>);
|
||||
title_blacklist : (null | Array<string>);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -56,29 +58,54 @@ namespace _munin.sources.ical_feed
|
|||
vcalendar.vevents
|
||||
.filter(
|
||||
vevent => (
|
||||
// category
|
||||
// category whitelist
|
||||
(
|
||||
vevent.categories.every(
|
||||
(parameters.filtration.category_whitelist === null)
|
||||
||
|
||||
vevent.categories.some(
|
||||
category => (
|
||||
! (
|
||||
parameters.filtration.category_whitelist
|
||||
.map(category_ => category_.toLowerCase())
|
||||
.includes(category.toLowerCase())
|
||||
)
|
||||
)
|
||||
)
|
||||
&&
|
||||
// category blacklist
|
||||
(
|
||||
(parameters.filtration.category_blacklist === null)
|
||||
||
|
||||
vevent.categories.every (
|
||||
category => ! (
|
||||
parameters.filtration.category_blacklist
|
||||
.map(category_ => category_.toLowerCase())
|
||||
.includes(category.toLowerCase())
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
&&
|
||||
// title
|
||||
// title whitelist
|
||||
(
|
||||
parameters.filtration.title_blacklist.every(
|
||||
(parameters.filtration.title_whitelist === null)
|
||||
||
|
||||
parameters.filtration.title_whitelist.some(
|
||||
title => (
|
||||
! (
|
||||
vevent.summary.toLowerCase()
|
||||
.includes(title.toLowerCase())
|
||||
)
|
||||
)
|
||||
)
|
||||
&&
|
||||
// title blacklist
|
||||
(
|
||||
(parameters.filtration.title_blacklist === null)
|
||||
||
|
||||
parameters.filtration.title_blacklist.every(
|
||||
title => ! (
|
||||
vevent.summary.toLowerCase()
|
||||
.includes(title.toLowerCase())
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -30,6 +30,7 @@ namespace _munin.targets.email
|
|||
smtp_password : string;
|
||||
sender : string;
|
||||
receivers : Array<string>;
|
||||
hide_tags : boolean;
|
||||
/**
|
||||
* in hours
|
||||
*/
|
||||
|
@ -76,7 +77,7 @@ namespace _munin.targets.email
|
|||
{
|
||||
"title_label": labels.title.toUpperCase(),
|
||||
"macro_tags": (
|
||||
(event.tags === null)
|
||||
(parameters.hide_tags || (event.tags === null))
|
||||
?
|
||||
""
|
||||
:
|
||||
|
|
|
@ -26,6 +26,7 @@ namespace _munin.targets.telegram_bot
|
|||
export type type_parameters = {
|
||||
bot_token : string;
|
||||
chat_id : int;
|
||||
hide_tags : boolean;
|
||||
reminders : Array<int>;
|
||||
};
|
||||
|
||||
|
@ -46,7 +47,7 @@ namespace _munin.targets.telegram_bot
|
|||
{
|
||||
"head": labels.head,
|
||||
"macro_tags": (
|
||||
(event.tags === null)
|
||||
(parameters.hide_tags || (event.tags === null))
|
||||
?
|
||||
""
|
||||
:
|
||||
|
|
Loading…
Reference in a new issue