mirror of
https://codeberg.org/demostf/api.git
synced 2026-06-04 02:14:06 +02:00
filter by backend
This commit is contained in:
parent
fa7a6f9b0a
commit
df83a46e20
17 changed files with 265 additions and 38 deletions
|
|
@ -7,6 +7,8 @@ namespace Demostf\API\Controllers;
|
|||
use Ehesp\SteamLogin\SteamLogin;
|
||||
use Demostf\API\Providers\AuthProvider;
|
||||
use Demostf\API\Providers\UserProvider;
|
||||
use flight\net\Request;
|
||||
use flight\net\Response;
|
||||
|
||||
class AuthController extends BaseController {
|
||||
/**
|
||||
|
|
@ -24,7 +26,15 @@ class AuthController extends BaseController {
|
|||
|
||||
private $apiRoot;
|
||||
|
||||
public function __construct(UserProvider $userProvider, AuthProvider $authProvider, string $host, string $apiRoot) {
|
||||
public function __construct(
|
||||
Request $request,
|
||||
Response $response,
|
||||
UserProvider $userProvider,
|
||||
AuthProvider $authProvider,
|
||||
string $host,
|
||||
string $apiRoot
|
||||
) {
|
||||
parent::__construct($request, $response);
|
||||
$this->userProvider = $userProvider;
|
||||
$this->authProvider = $authProvider;
|
||||
$this->host = $host;
|
||||
|
|
|
|||
|
|
@ -4,22 +4,37 @@ declare(strict_types=1);
|
|||
|
||||
namespace Demostf\API\Controllers;
|
||||
|
||||
class BaseController {
|
||||
protected function query($name, $default) {
|
||||
$request = \Flight::request();
|
||||
use flight\net\Request;
|
||||
use flight\net\Response;
|
||||
|
||||
return isset($request->query[$name]) ? $request->query[$name] : $default;
|
||||
class BaseController {
|
||||
private $request;
|
||||
private $response;
|
||||
|
||||
public function __construct(Request $request, Response $response) {
|
||||
$this->request = $request;
|
||||
$this->response = $response;
|
||||
}
|
||||
|
||||
protected function query($name, $default) {
|
||||
return isset($this->request->query[$name]) ? $this->request->query[$name] : $default;
|
||||
}
|
||||
|
||||
protected function file($name) {
|
||||
$request = \Flight::request();
|
||||
|
||||
return $request->files[$name];
|
||||
return $this->request->files[$name];
|
||||
}
|
||||
|
||||
protected function post($name, $default = null) {
|
||||
$request = \Flight::request();
|
||||
return isset($this->request->data[$name]) ? $this->request->data[$name] : $default;
|
||||
}
|
||||
|
||||
return isset($request->data[$name]) ? $request->data[$name] : $default;
|
||||
protected function json($data, $code = 200, $encode = true, $charset = 'utf-8', $option = 0) {
|
||||
$json = ($encode) ? json_encode($data, $option) : $data;
|
||||
|
||||
$this->response
|
||||
->status($code)
|
||||
->header('Content-Type', 'application/json; charset=' . $charset)
|
||||
->write($json)
|
||||
->send();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ namespace Demostf\API\Controllers;
|
|||
use Demostf\API\Providers\ChatProvider;
|
||||
use Demostf\API\Providers\DemoListProvider;
|
||||
use Demostf\API\Providers\DemoProvider;
|
||||
use flight\net\Request;
|
||||
use flight\net\Response;
|
||||
|
||||
class DemoController extends BaseController {
|
||||
/** @var DemoProvider */
|
||||
|
|
@ -20,11 +22,14 @@ class DemoController extends BaseController {
|
|||
private $editKey;
|
||||
|
||||
public function __construct(
|
||||
Request $request,
|
||||
Response $response,
|
||||
DemoProvider $demoProvider,
|
||||
ChatProvider $chatProvider,
|
||||
DemoListProvider $demoListProvider,
|
||||
string $editKey
|
||||
) {
|
||||
parent::__construct($request, $response);
|
||||
$this->demoProvider = $demoProvider;
|
||||
$this->chatProvider = $chatProvider;
|
||||
$this->demoListProvider = $demoListProvider;
|
||||
|
|
@ -35,17 +40,21 @@ class DemoController extends BaseController {
|
|||
* @param string $id
|
||||
*/
|
||||
public function get($id) {
|
||||
\Flight::json($this->demoProvider->get(intval($id, 10)));
|
||||
$this->json($this->demoProvider->get(intval($id, 10)));
|
||||
}
|
||||
|
||||
protected function getFilter() {
|
||||
$map = $this->query('map', '');
|
||||
$players = $this->query('players', '');
|
||||
$type = $this->query('type', '');
|
||||
$backend = $this->query('backend', '');
|
||||
$filter = [];
|
||||
if ($map) {
|
||||
$filter['map'] = $map;
|
||||
}
|
||||
if ($backend) {
|
||||
$filter['backend'] = $backend;
|
||||
}
|
||||
if ($players) {
|
||||
if (!is_array($players)) {
|
||||
$players = explode(',', $players);
|
||||
|
|
@ -71,39 +80,39 @@ class DemoController extends BaseController {
|
|||
public function listDemos() {
|
||||
$page = $this->query('page', 1);
|
||||
$order = $this->query('order', 'DESC') === 'ASC' ? 'ASC' : 'DESC';
|
||||
\Flight::json($this->demoListProvider->listDemos((int)$page, $this->getFilter(), $order));
|
||||
$this->json($this->demoListProvider->listDemos((int) $page, $this->getFilter(), $order));
|
||||
}
|
||||
|
||||
public function listProfile($steamId) {
|
||||
$page = $this->query('page', 1);
|
||||
$where = $this->getFilter();
|
||||
$where['players'][] = $steamId;
|
||||
\Flight::json($this->demoListProvider->listProfile((int)$page, $where));
|
||||
$this->json($this->demoListProvider->listProfile((int) $page, $where));
|
||||
}
|
||||
|
||||
public function listUploads($steamId) {
|
||||
$page = $this->query('page', 1);
|
||||
\Flight::json($this->demoListProvider->listUploads($steamId, (int)$page, $this->getFilter()));
|
||||
$this->json($this->demoListProvider->listUploads($steamId, (int) $page, $this->getFilter()));
|
||||
}
|
||||
|
||||
public function chat($demoId) {
|
||||
\Flight::json($this->chatProvider->getChat((int)$demoId));
|
||||
$this->json($this->chatProvider->getChat((int) $demoId));
|
||||
}
|
||||
|
||||
public function setDemoUrl($id) {
|
||||
$hash = (string)$this->post('hash', '');
|
||||
$backend = (string)$this->post('backend', '');
|
||||
$path = (string)$this->post('path', '');
|
||||
$url = (string)$this->post('url', '');
|
||||
$editKey = (string)$this->post('key', '');
|
||||
$hash = (string) $this->post('hash', '');
|
||||
$backend = (string) $this->post('backend', '');
|
||||
$path = (string) $this->post('path', '');
|
||||
$url = (string) $this->post('url', '');
|
||||
$editKey = (string) $this->post('key', '');
|
||||
if ($editKey !== $this->editKey || $editKey === '') {
|
||||
throw new \InvalidArgumentException('Invalid key');
|
||||
}
|
||||
|
||||
$demo = $this->demoProvider->get((int)$id);
|
||||
$demo = $this->demoProvider->get((int) $id);
|
||||
$existingHash = $demo->getHash();
|
||||
if ($existingHash === '' || $existingHash === $hash) {
|
||||
$this->demoProvider->setDemoUrl((int)$id, $backend, $url, $path);
|
||||
$this->demoProvider->setDemoUrl((int) $id, $backend, $url, $path);
|
||||
} else {
|
||||
throw new \InvalidArgumentException('Invalid demo hash');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,12 +5,15 @@ declare(strict_types=1);
|
|||
namespace Demostf\API\Controllers;
|
||||
|
||||
use Demostf\API\Providers\InfoProvider;
|
||||
use flight\net\Request;
|
||||
use flight\net\Response;
|
||||
|
||||
class InfoController extends BaseController {
|
||||
/** @var InfoProvider */
|
||||
private $infoProvider;
|
||||
|
||||
public function __construct(InfoProvider $infoProvider) {
|
||||
public function __construct(Request $request, Response $response, InfoProvider $infoProvider) {
|
||||
parent::__construct($request, $response);
|
||||
$this->infoProvider = $infoProvider;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,11 +5,14 @@ declare(strict_types=1);
|
|||
namespace Demostf\API\Controllers;
|
||||
|
||||
use Demostf\API\Providers\UploadProvider;
|
||||
use flight\net\Request;
|
||||
use flight\net\Response;
|
||||
|
||||
class UploadController extends BaseController {
|
||||
private $uploadProvider;
|
||||
|
||||
public function __construct(UploadProvider $uploadProvider) {
|
||||
public function __construct(Request $request, Response $response, UploadProvider $uploadProvider) {
|
||||
parent::__construct($request, $response);
|
||||
$this->uploadProvider = $uploadProvider;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ declare(strict_types=1);
|
|||
namespace Demostf\API\Controllers;
|
||||
|
||||
use Demostf\API\Providers\UserProvider;
|
||||
use flight\net\Request;
|
||||
use flight\net\Response;
|
||||
|
||||
class UserController extends BaseController {
|
||||
/**
|
||||
|
|
@ -12,7 +14,8 @@ class UserController extends BaseController {
|
|||
*/
|
||||
private $userProvider;
|
||||
|
||||
public function __construct(UserProvider $userProvider) {
|
||||
public function __construct(Request $request, Response $response, UserProvider $userProvider) {
|
||||
parent::__construct($request, $response);
|
||||
$this->userProvider = $userProvider;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue