forked from are0h/TheBadSpace
Added Public Search API
Added the first version of the method that can be used to search the DB programatically. Making it public for now.symfony-version
parent
2b174a96c8
commit
b8eda54267
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
// src/Controller/DataImport.php
|
||||
// Grab data from transfer app
|
||||
|
||||
namespace App\Controller\Routes\API;
|
||||
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
||||
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
|
||||
use Symfony\Component\Serializer\Serializer;
|
||||
use App\Service\Auth;
|
||||
use App\Service\HandleLocations;
|
||||
|
||||
class Search extends AbstractController
|
||||
{
|
||||
/**
|
||||
* @Route("/api/v1/search", name="api-saerch-locations")
|
||||
*/
|
||||
public function handlePublicSearch(
|
||||
Request $request,
|
||||
Auth $auth,
|
||||
HandleLocations $locations
|
||||
): Response {
|
||||
if ($request->getMethod() == "GET") {
|
||||
return new Response("LOL, nice try");
|
||||
} else {
|
||||
$encoders = [new JsonEncoder()];
|
||||
$normalizers = [new ObjectNormalizer()];
|
||||
$serializer = new Serializer($normalizers, $encoders);
|
||||
$response = [];
|
||||
|
||||
$data = json_decode($request->getContent(), true);
|
||||
$list = $locations->searchLocations(($data['url']));
|
||||
$entries = [];
|
||||
foreach ($list['items'] as $entry) {
|
||||
array_push($entries, ["url" => $entry['url'],
|
||||
"name" => $entry['name'],
|
||||
"description" => $entry['description'],
|
||||
"link" => "https://thebad.space/location/" . $entry['uuid']
|
||||
]);
|
||||
}
|
||||
|
||||
$items = ["listingCount" => count($entries), "locations" => $entries];
|
||||
|
||||
$data = $serializer->serialize($items, "json");
|
||||
$response = new Response($data);
|
||||
$response->headers->set("Content-Type", "application/json");
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue