58 lines
1.8 KiB
PHP
58 lines
1.8 KiB
PHP
<?php
|
|
|
|
class FreshExtension_kagiSummarizer_Controller extends Minz_ActionController {
|
|
public function kagiStringsAction() {
|
|
$this->view->kagi_strings = json_encode(array(
|
|
'loading_summary' => _t('ext.kagiSummarizer.ui.loading_summary'),
|
|
'error' => _t('ext.kagiSummarizer.ui.error')
|
|
));
|
|
$this->view->_layout(false);
|
|
$this->view->_path('kagiSummarizer/strings.js');
|
|
header('Content-Type: application/javascript; charset=UTF-8');
|
|
}
|
|
|
|
public function summarizeAction() {
|
|
$this->view->_layout(false);
|
|
|
|
$kagi_token = FreshRSS_Context::$user_conf->kagi_token;
|
|
$kagi_language = FreshRSS_Context::$user_conf->kagi_language;
|
|
|
|
if ($kagi_token === null || trim($kagi_token) === '') {
|
|
echo json_encode(array(
|
|
'response' => array(
|
|
'output_text' => _t('ext.kagiSummarizer.ui.no_token_configured'),
|
|
'error' => 'configuration'),
|
|
'status' => 200));
|
|
return;
|
|
}
|
|
|
|
$entry_id = Minz_Request::param('id');
|
|
$entry_dao = FreshRSS_Factory::createEntryDao();
|
|
$entry = $entry_dao->searchById($entry_id);
|
|
|
|
if ($entry === null) {
|
|
echo json_encode(array('status' => 404));
|
|
return;
|
|
}
|
|
|
|
$entry_link = urlencode($entry->link());
|
|
$url = 'https://kagi.com/mother/summary_labs'
|
|
. '?summary_type=' . Minz_Request::param('type')
|
|
. '&target_language=' . $kagi_language
|
|
. '&url=' . $entry_link;
|
|
|
|
$curl = curl_init();
|
|
curl_setopt($curl, CURLOPT_URL, $url);
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
|
'Content-Type: application/json; charset=UTF-8',
|
|
'Authorization: ' . $kagi_token
|
|
));
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
$response = curl_exec($curl);
|
|
|
|
echo json_encode(array(
|
|
'response' => json_decode($response),
|
|
'status' => curl_getinfo($curl, CURLINFO_HTTP_CODE)
|
|
));
|
|
}
|
|
}
|