Add /servers/surprise endpoint
This commit is contained in:
parent
0e4d5a035f
commit
d0102327c0
4 changed files with 64 additions and 0 deletions
|
@ -1,5 +1,13 @@
|
||||||
# Friendica Directory Protocol
|
# Friendica Directory Protocol
|
||||||
|
|
||||||
|
## Surprise
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /servers/surprise
|
||||||
|
```
|
||||||
|
|
||||||
|
Redirects to the base URL of a random server with open registration policy and above 75 health.
|
||||||
|
|
||||||
## Search
|
## Search
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
39
src/classes/Controllers/Api/Surprise.php
Normal file
39
src/classes/Controllers/Api/Surprise.php
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Directory\Controllers\Api;
|
||||||
|
|
||||||
|
use Friendica\Directory\Content\Pager;
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Hypolite Petovan <mrpetovan@gmail.com>
|
||||||
|
*/
|
||||||
|
class Surprise
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var \Atlas\Pdo\Connection
|
||||||
|
*/
|
||||||
|
private $atlas;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
\Atlas\Pdo\Connection $atlas
|
||||||
|
)
|
||||||
|
{
|
||||||
|
$this->atlas = $atlas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args): \Slim\Http\Response
|
||||||
|
{
|
||||||
|
$redirectUrl = '';
|
||||||
|
|
||||||
|
$sql = 'SELECT base_url FROM server WHERE reg_policy = "REGISTER_OPEN" AND health_score > 75 ORDER BY health_score DESC, RAND()';
|
||||||
|
|
||||||
|
$server = $this->atlas->fetchOne($sql);
|
||||||
|
if ($server) {
|
||||||
|
$redirectUrl = $server['base_url'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response->withRedirect($redirectUrl);
|
||||||
|
}
|
||||||
|
}
|
16
src/classes/Routes/Http/Surprise.php
Normal file
16
src/classes/Routes/Http/Surprise.php
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Directory\Routes\Http;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Hypolite Petovan <mrpetovan@gmail.com>
|
||||||
|
*/
|
||||||
|
class Surprise extends BaseRoute
|
||||||
|
{
|
||||||
|
public function __invoke(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args): \Slim\Http\Response
|
||||||
|
{
|
||||||
|
return (new \Friendica\Directory\Controllers\Api\Surprise(
|
||||||
|
$this->container->atlas
|
||||||
|
))->render($request, $response, $args);
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ use Slim\Http\Response;
|
||||||
* @var $app \Slim\App
|
* @var $app \Slim\App
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$app->get('/servers/surprise', \Friendica\Directory\Routes\Http\Surprise::class);
|
||||||
$app->get('/servers', \Friendica\Directory\Routes\Web\Servers::class);
|
$app->get('/servers', \Friendica\Directory\Routes\Web\Servers::class);
|
||||||
|
|
||||||
$app->get('/search[/{account_type}]', function (Request $request, Response $response, $args) {
|
$app->get('/search[/{account_type}]', function (Request $request, Response $response, $args) {
|
||||||
|
|
Loading…
Reference in a new issue