1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-06 13:16:45 +02:00

feat(endpoints): add new api endpoints for utils

This commit is contained in:
Awilum
2022-04-27 21:49:44 +03:00
parent afd837da99
commit c54b7ffdc6
2 changed files with 103 additions and 10 deletions

View File

@@ -25,14 +25,14 @@ use function filesystem;
class Utils extends Api
{
/**
* Clear cache
* Generate token
*
* @param ServerRequestInterface $request PSR7 request.
* @param ResponseInterface $response PSR7 response.
*
* @return ResponseInterface Response.
*/
public function clearCache(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
public function generateToken(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
{
// Validate Api Request
if (
@@ -45,10 +45,72 @@ class Utils extends Api
return $this->getApiResponse($response, $this->getStatusCodeMessage($result['http_status_code']), $result['http_status_code']);
}
// Clear cache
filesystem()->directory(PATH['tmp'])->delete();
// Generate token
$token = generateToken();
// Return success response
return $this->getApiResponse($response, [], 204);
return $this->getApiResponse($response, ['token' => $token], 200);
}
/**
* Generate token hash
*
* @param ServerRequestInterface $request PSR7 request.
* @param ResponseInterface $response PSR7 response.
*
* @return ResponseInterface Response.
*/
public function generateTokenHash(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
{
// Get Request Parsed Body
$requestParsedBody = $request->getParsedBody();
// Validate Api Request
if (
count($result = $this->validateApiRequest([
'request' => $request,
'api' => 'utils',
'params' => ['token', 'access_token', 'string'],
])) > 0
) {
return $this->getApiResponse($response, $this->getStatusCodeMessage($result['http_status_code']), $result['http_status_code']);
}
// Generate token
$token = generateTokenHash($requestParsedBody['string']);
// Return success response
return $this->getApiResponse($response, ['hashed_token' => $token], 200);
}
/**
* Verify token hash
*
* @param ServerRequestInterface $request PSR7 request.
* @param ResponseInterface $response PSR7 response.
*
* @return ResponseInterface Response.
*/
public function verifyTokenHash(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
{
// Get Request Parsed Body
$requestParsedBody = $request->getParsedBody();
// Validate Api Request
if (
count($result = $this->validateApiRequest([
'request' => $request,
'api' => 'utils',
'params' => ['token', 'access_token', 'string', 'hash'],
])) > 0
) {
return $this->getApiResponse($response, $this->getStatusCodeMessage($result['http_status_code']), $result['http_status_code']);
}
// Verify
$verified = verifyTokenHash($requestParsedBody['string'], $requestParsedBody['hash']);
// Return success response
return $this->getApiResponse($response, ['verified' => $verified], 200);
}
}

View File

@@ -21,15 +21,46 @@ use Flextype\Endpoints\Utils;
use function app;
/**
* Clear cache
* Generate token
*
* endpoint: POST /api/v0/utils/cache/clear
* endpoint: POST /api/v0/utils/generate-token
*
* Body:
* token - [REQUIRED] - Valid public token.
* access_token - [REQUIRED] - Valid access token.
*
*
* Returns:
* Returns an empty body with HTTP status 204
* Generated token object.
*/
app()->post('/api/v0/utils/cache/clear', [Utils::class, 'clearCache'])->setName('cache.clear');
app()->post('/api/v0/utils/generate-token', [Utils::class, 'generateToken'])->setName('utils.generate-token');
/**
* Generate token hash
*
* endpoint: POST /api/v0/utils/generate-token-hash
*
* Body:
* token - [REQUIRED] - Valid public token.
* access_token - [REQUIRED] - Valid access token.
* string - [REQUIRED] - String to hash.
*
* Returns:
* Generated token hash object.
*/
app()->post('/api/v0/utils/generate-token-hash', [Utils::class, 'generateTokenHash'])->setName('utils.generate-token-hash');
/**
* Verify token hash
*
* endpoint: POST /api/v0/utils/verify-token-hash
*
* Body:
* token - [REQUIRED] - Valid public token.
* access_token - [REQUIRED] - Valid access token.
* string - [REQUIRED] - String to verify.
* hash - [REQUIRED] - Hash to verify.
*
* Returns:
* Token verification object.
*/
app()->post('/api/v0/utils/verify-token-hash', [Utils::class, 'verifyTokenHash'])->setName('utils.verify-token-hash');