core/source/sources/_factory.php
2025-09-09 21:17:19 +00:00

48 lines
653 B
PHP

<?php
namespace davigil\sources;
require_once('sources/ics_feed.php');
/**
* @param array $descriptor {
* record<
* kind:string,
* data:any
* >
* }
*/
function make(
array $descriptor
) : interface_source
{
switch ($descriptor['kind'])
{
case 'ics_feed':
{
return (
new class_source_ics_feed(
$descriptor['data']['url'],
($descriptor['data']['lifetime'] ?? (60 * 15)),
($descriptor['data']['combine'] ?? false)
)
);
}
default:
{
throw (
new \Exception(
\sprintf(
'unhandled source kind: %s',
$descriptor['kind']
)
)
);
break;
}
}
}