streams/Code/Daemon/File_importer.php

55 lines
1.4 KiB
PHP
Raw Normal View History

<?php
2022-02-16 04:08:28 +00:00
namespace Code\Daemon;
2022-02-16 04:08:28 +00:00
use Code\Web\HTTPSig;
use Code\Lib\Channel;
use Code\Lib\Url;
require_once('include/cli_startup.php');
require_once('include/attach.php');
require_once('include/import.php');
2022-11-27 09:15:28 +00:00
class File_importer implements DaemonInterface
2021-12-03 03:01:39 +00:00
{
2022-11-27 09:15:28 +00:00
public function run(int $argc, array $argv): void
2021-12-03 03:01:39 +00:00
{
2021-12-03 03:01:39 +00:00
cli_startup();
2021-12-03 03:01:39 +00:00
$attach_id = $argv[1];
$channel_address = $argv[2];
$hz_server = urldecode($argv[3]);
2021-12-03 03:01:39 +00:00
$m = parse_url($hz_server);
2022-01-25 01:26:12 +00:00
$channel = Channel::from_username($channel_address);
2021-12-03 03:01:39 +00:00
if (! $channel) {
logger('filehelper: channel not found');
killme();
}
2021-12-03 03:01:39 +00:00
$headers = [
'X-API-Token' => random_string(),
'X-API-Request' => $hz_server . '/api/z/1.0/file/export?f=&zap_compat=1&file_id=' . $attach_id,
'Host' => $m['host'],
'(request-target)' => 'get /api/z/1.0/file/export?f=&zap_compat=1&file_id=' . $attach_id,
];
2022-01-25 01:26:12 +00:00
$headers = HTTPSig::create_sig($headers, $channel['channel_prvkey'], Channel::url($channel), true, 'sha512');
$x = Url::get($hz_server . '/api/z/1.0/file/export?f=&zap_compat=1&file_id=' . $attach_id, [ 'headers' => $headers ]);
2021-12-03 03:01:39 +00:00
if (! $x['success']) {
logger('no API response', LOGGER_DEBUG);
return;
}
2021-12-03 03:01:39 +00:00
$j = json_decode($x['body'], true);
2022-09-03 22:37:48 +00:00
sync_files($channel, [$j]);
2021-12-03 03:01:39 +00:00
killme();
}
}