mirror of
https://github.com/YGGverse/Pulsar.git
synced 2025-03-13 05:41:21 +00:00
implement channel alias
This commit is contained in:
parent
0c6e5ce8ae
commit
30a7f69083
@ -62,6 +62,7 @@
|
||||
[
|
||||
{
|
||||
"source":"https://www.omglinux.com/feed",
|
||||
"alias":"omglinux.gmi",
|
||||
"enabled":true,
|
||||
"item":
|
||||
{
|
||||
@ -93,6 +94,7 @@
|
||||
},
|
||||
{
|
||||
"source":"https://omgubuntu.co.uk/feed",
|
||||
"alias":"omgubuntu.gmi",
|
||||
"enabled":false,
|
||||
"item":
|
||||
{
|
||||
|
@ -123,10 +123,22 @@ class Nex implements MessageComponentInterface
|
||||
$lines[] = sprintf(
|
||||
'=> %s',
|
||||
$channelItem->link
|
||||
) . PHP_EOL;
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Get channel info
|
||||
if ($channel = $this->_database->getChannel($channelItem->channelId))
|
||||
{
|
||||
$lines[] = sprintf(
|
||||
'=> /%s %s',
|
||||
urlencode(
|
||||
$channel->alias
|
||||
),
|
||||
$channel->title
|
||||
);
|
||||
}
|
||||
|
||||
// Build response
|
||||
$response = implode(
|
||||
PHP_EOL,
|
||||
@ -136,12 +148,12 @@ class Nex implements MessageComponentInterface
|
||||
break;
|
||||
|
||||
// Chanel
|
||||
case (bool) preg_match('/^\/(?<id>\d+)\/($|index\.gmi)$/i', $request, $attribute):
|
||||
case (bool) preg_match('/^\/(?<alias>.+)$/i', $request, $attribute):
|
||||
|
||||
$lines = [];
|
||||
|
||||
// Get channel info
|
||||
if ($channel = $this->_database->getChannel($attribute['id']))
|
||||
if ($channel = $this->_database->getChannelByAlias($attribute['alias']))
|
||||
{
|
||||
if ($channel->title)
|
||||
{
|
||||
@ -208,8 +220,10 @@ class Nex implements MessageComponentInterface
|
||||
foreach ((array) $this->_database->getChannels() as $channel)
|
||||
{
|
||||
$lines[] = sprintf(
|
||||
'=> /%d/index.gmi %s',
|
||||
$channel->id,
|
||||
'=> /%s %s',
|
||||
urlencode(
|
||||
$channel->alias
|
||||
),
|
||||
$channel->title
|
||||
);
|
||||
}
|
||||
|
@ -16,17 +16,15 @@ class Database
|
||||
$this->_database = new \PDO(
|
||||
sprintf(
|
||||
'sqlite:%s',
|
||||
realpath(
|
||||
str_starts_with(
|
||||
$database,
|
||||
DIRECTORY_SEPARATOR
|
||||
) ? $database
|
||||
: __DIR__ .
|
||||
DIRECTORY_SEPARATOR . '..'.
|
||||
DIRECTORY_SEPARATOR . '..'.
|
||||
DIRECTORY_SEPARATOR . 'config'.
|
||||
DIRECTORY_SEPARATOR . $database
|
||||
)
|
||||
str_starts_with(
|
||||
$database,
|
||||
DIRECTORY_SEPARATOR
|
||||
) ? $database
|
||||
: __DIR__ .
|
||||
DIRECTORY_SEPARATOR . '..'.
|
||||
DIRECTORY_SEPARATOR . '..'.
|
||||
DIRECTORY_SEPARATOR . 'config'.
|
||||
DIRECTORY_SEPARATOR . $database
|
||||
),
|
||||
$username,
|
||||
$password
|
||||
@ -47,6 +45,7 @@ class Database
|
||||
(
|
||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
"time" INTEGER NOT NULL,
|
||||
"alias" VARCHAR NOT NULL,
|
||||
"source" TEXT NOT NULL,
|
||||
"link" TEXT,
|
||||
"title" TEXT,
|
||||
@ -102,6 +101,24 @@ class Database
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getChannelByAlias(
|
||||
string $alias
|
||||
): ?object
|
||||
{
|
||||
$query = $this->_database->prepare(
|
||||
'SELECT * FROM `channel` WHERE `alias` LIKE ? LIMIT 1'
|
||||
);
|
||||
|
||||
$query->execute([$alias]);
|
||||
|
||||
if ($result = $query->fetch())
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getChannelIdBySource(
|
||||
string $source
|
||||
): ?int
|
||||
@ -125,6 +142,7 @@ class Database
|
||||
}
|
||||
|
||||
public function addChannel(
|
||||
string $alias,
|
||||
string $source,
|
||||
?string $link,
|
||||
?string $title,
|
||||
@ -133,12 +151,13 @@ class Database
|
||||
): ?int
|
||||
{
|
||||
$query = $this->_database->prepare(
|
||||
'INSERT INTO `channel` (`source`, `link`, `title`, `description`, `time`)
|
||||
VALUES (:source, :link, :title, :description, :time)'
|
||||
'INSERT INTO `channel` (`alias`, `source`, `link`, `title`, `description`, `time`)
|
||||
VALUES (:alias, :source, :link, :title, :description, :time)'
|
||||
);
|
||||
|
||||
$query->execute(
|
||||
[
|
||||
':alias' => $alias,
|
||||
':source' => $source,
|
||||
':link' => $link,
|
||||
':title' => $title,
|
||||
|
@ -72,6 +72,7 @@ foreach ($config->crawler->channel as $channel)
|
||||
{
|
||||
// Create new one if not exists
|
||||
$channelId = $database->addChannel(
|
||||
$channel->alias,
|
||||
$channel->source,
|
||||
isset($remoteChannel->link) ? (string) $remoteChannel->link : null,
|
||||
isset($remoteChannel->title) ? (string) $remoteChannel->title : null,
|
||||
|
Loading…
x
Reference in New Issue
Block a user