1
0
Fork 0
mirror of https://codeberg.org/demostf/api.git synced 2026-06-04 02:14:06 +02:00
This commit is contained in:
Robin Appelman 2019-04-12 14:00:20 +02:00
commit 73469d2aa1
29 changed files with 140 additions and 149 deletions

View file

@ -6,6 +6,7 @@ namespace Demostf\API\Providers;
use Doctrine\DBAL\Connection;
use RandomLib\Generator;
use SteamId;
class AuthProvider extends BaseProvider {
/**
@ -22,7 +23,7 @@ class AuthProvider extends BaseProvider {
return $this->generator->generateString(32, Generator::CHAR_ALNUM);
}
public function setUser(string $token, \SteamId $steamid, string $key) {
public function setUser(string $token, SteamId $steamid, string $key) {
apcu_store($token, [
'name' => $steamid->getNickname(),
'steamid' => $steamid->getSteamId64(),

View file

@ -17,7 +17,7 @@ class BaseProvider {
protected $connection;
/**
* @var \LessQL\Database
* @var Database
*/
protected $db;

View file

@ -5,13 +5,14 @@ declare(strict_types=1);
namespace Demostf\API\Providers;
use Demostf\API\Demo\ChatMessage;
use PDO;
class ChatProvider extends BaseProvider {
public function getChat(int $demoId) {
$query = $this->getQueryBuilder();
$query->select('text', '"from"', 'time')
->from('chat')
->where($query->expr()->eq('demo_id', $query->createNamedParameter($demoId, \PDO::PARAM_INT)));
->where($query->expr()->eq('demo_id', $query->createNamedParameter($demoId, PDO::PARAM_INT)));
$result = $query->execute();
@ -28,10 +29,10 @@ class ChatProvider extends BaseProvider {
$query = $this->getQueryBuilder();
$query->insert('chat')
->values([
'demo_id' => $query->createNamedParameter($demoId, \PDO::PARAM_INT),
'demo_id' => $query->createNamedParameter($demoId, PDO::PARAM_INT),
'text' => $query->createNamedParameter($message->getMessage()),
'"from"' => $query->createNamedParameter($message->getUser()),
'time' => $query->createNamedParameter($message->getTime(), \PDO::PARAM_INT),
'time' => $query->createNamedParameter($message->getTime(), PDO::PARAM_INT),
'created_at' => 'now()',
'updated_at' => 'now()',
]);

View file

@ -4,8 +4,11 @@ declare(strict_types=1);
namespace Demostf\API\Providers;
use function count;
use Demostf\API\Demo\Demo;
use Doctrine\DBAL\Connection;
use function is_array;
use PDO;
class DemoListProvider extends BaseProvider {
public function listUploads(string $steamId, int $page, array $where = []) {
@ -30,14 +33,14 @@ class DemoListProvider extends BaseProvider {
->groupBy('demo_id')
->having($query->expr()->eq(
'COUNT(user_id)',
$query->createNamedParameter(\count($userIds, \PDO::PARAM_INT))
$query->createNamedParameter(count($userIds, PDO::PARAM_INT))
))
->orderBy('demo_id', 'desc')
->setMaxResults(50)
->setFirstResult(((int) $page - 1) * 50);
$result = $query->execute();
$demoIds = $result->fetchAll(\PDO::FETCH_COLUMN);
$demoIds = $result->fetchAll(PDO::FETCH_COLUMN);
$demos = $this->db->demo()->where('id', $demoIds)
->where($where)
@ -54,7 +57,7 @@ class DemoListProvider extends BaseProvider {
* @return Demo[]
*/
public function listDemos(int $page, array $where = [], string $order = 'DESC') {
if (isset($where['players']) and \is_array($where['players']) and \count($where['players']) > 0) {
if (isset($where['players']) and is_array($where['players']) and count($where['players']) > 0) {
return $this->listProfile($page, $where);
}
@ -77,7 +80,7 @@ class DemoListProvider extends BaseProvider {
}
if (isset($where['uploader'])) {
$query->andWhere($query->expr()->in('uploader',
$query->createNamedParameter($where['uploader'], \PDO::PARAM_INT)));
$query->createNamedParameter($where['uploader'], PDO::PARAM_INT)));
}
if (isset($where['backend'])) {
$query->andWhere($query->expr()->eq('backend',
@ -87,7 +90,7 @@ class DemoListProvider extends BaseProvider {
->setMaxResults(50)
->setFirstResult($offset);
$demos = $query->execute()->fetchAll(\PDO::FETCH_ASSOC);
$demos = $query->execute()->fetchAll(PDO::FETCH_ASSOC);
return $this->formatList($demos);
}

View file

@ -4,9 +4,11 @@ declare(strict_types=1);
namespace Demostf\API\Providers;
use const DATE_ATOM;
use Demostf\API\Data\DemoPlayer;
use Demostf\API\Data\User;
use Demostf\API\Demo\Demo;
use PDO;
class DemoProvider extends BaseProvider {
const VERSION = 4;
@ -33,7 +35,7 @@ class DemoProvider extends BaseProvider {
if ($fetchDetails) {
$uploader = $demo->user()->via('uploader')->fetch();
$playerQuery = $this->query($sql, [$formattedDemo->getId(), $formattedDemo->getId()]);
$players = $playerQuery->fetchAll(\PDO::FETCH_ASSOC);
$players = $playerQuery->fetchAll(PDO::FETCH_ASSOC);
$formattedDemo->setUploaderUser(User::fromRow([
'id' => $uploader['id'],
@ -74,18 +76,18 @@ class DemoProvider extends BaseProvider {
'map' => $query->createNamedParameter($demo->getMap()),
'red' => $query->createNamedParameter($demo->getRed()),
'blu' => $query->createNamedParameter($demo->getBlue()),
'uploader' => $query->createNamedParameter($demo->getUploader(), \PDO::PARAM_INT),
'duration' => $query->createNamedParameter((int) $demo->getDuration(), \PDO::PARAM_INT),
'created_at' => $query->createNamedParameter($demo->getTime()->format(\DATE_ATOM)),
'uploader' => $query->createNamedParameter($demo->getUploader(), PDO::PARAM_INT),
'duration' => $query->createNamedParameter((int) $demo->getDuration(), PDO::PARAM_INT),
'created_at' => $query->createNamedParameter($demo->getTime()->format(DATE_ATOM)),
'updated_at' => 'now()',
'backend' => $query->createNamedParameter($backend),
'path' => $query->createNamedParameter($path),
'"scoreBlue"' => $query->createNamedParameter($demo->getBlueScore(), \PDO::PARAM_INT),
'"scoreRed"' => $query->createNamedParameter($demo->getRedScore(), \PDO::PARAM_INT),
'version' => $query->createNamedParameter(self::VERSION, \PDO::PARAM_INT),
'"scoreBlue"' => $query->createNamedParameter($demo->getBlueScore(), PDO::PARAM_INT),
'"scoreRed"' => $query->createNamedParameter($demo->getRedScore(), PDO::PARAM_INT),
'version' => $query->createNamedParameter(self::VERSION, PDO::PARAM_INT),
'server' => $query->createNamedParameter($demo->getServer()),
'nick' => $query->createNamedParameter($demo->getNick()),
'"playerCount"' => $query->createNamedParameter($demo->getPlayerCount(), \PDO::PARAM_INT),
'"playerCount"' => $query->createNamedParameter($demo->getPlayerCount(), PDO::PARAM_INT),
'hash' => $query->createNamedParameter($demo->getHash()),
])
->execute();
@ -99,7 +101,7 @@ class DemoProvider extends BaseProvider {
->set('backend', $query->createNamedParameter($backend))
->set('url', $query->createNamedParameter($url))
->set('path', $query->createNamedParameter($path))
->where($query->expr()->eq('id', $query->createNamedParameter($id, \PDO::PARAM_INT)))
->where($query->expr()->eq('id', $query->createNamedParameter($id, PDO::PARAM_INT)))
->execute();
}
}

View file

@ -4,12 +4,14 @@ declare(strict_types=1);
namespace Demostf\API\Providers;
use PDO;
class InfoProvider extends BaseProvider {
public function listMaps() {
$sql = 'SELECT map, count FROM map_list';
$result = $this->query($sql);
return $result->fetchAll(\PDO::FETCH_COLUMN);
return $result->fetchAll(PDO::FETCH_COLUMN);
}
public function getStats() {

View file

@ -7,7 +7,10 @@ namespace Demostf\API\Providers;
use Demostf\API\Data\SteamUser;
use Demostf\API\Data\User;
use Doctrine\DBAL\Connection;
use function is_array;
use PDO;
use RandomLib\Generator;
use SteamId;
class UserProvider extends BaseProvider {
/**
@ -20,7 +23,7 @@ class UserProvider extends BaseProvider {
$this->generator = $generator;
}
public function store(\SteamId $steamId): string {
public function store(SteamId $steamId): string {
$token = $this->generator->generateString(64, Generator::EASY_TO_READ);
$user = $this->get($steamId->getSteamId64());
@ -65,7 +68,7 @@ class UserProvider extends BaseProvider {
->setMaxResults(1);
$result = $query->execute()->fetch();
if (\is_array($result)) {
if (is_array($result)) {
return $result;
} else {
return null;
@ -86,7 +89,7 @@ class UserProvider extends BaseProvider {
}
$query = $this->getQueryBuilder();
$nameParameter = $query->createNamedParameter($search, \PDO::PARAM_STR, ':query');
$nameParameter = $query->createNamedParameter($search, PDO::PARAM_STR, ':query');
$query->select('user_id', 'name', 'count', 'steamid', "1 - (name <-> $nameParameter) AS sim")
->from('name_list')
->where($query->expr()->comparison('name', '%', $nameParameter))
@ -94,7 +97,7 @@ class UserProvider extends BaseProvider {
->orderBy('count', 'DESC')
->setMaxResults(100);
$result = $query->execute();
$players = $result->fetchAll(\PDO::FETCH_ASSOC);
$players = $result->fetchAll(PDO::FETCH_ASSOC);
usort($players, function ($b, $a) use ($query) {
if ($a['steamid'] === $query && $a['steamid'] !== $query) {
@ -138,7 +141,7 @@ class UserProvider extends BaseProvider {
return $existing->getId();
}
$this->store(new \SteamId($steamId));
$this->store(new SteamId($steamId));
return $this->get($steamId)->getId();
}