Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.46 KB | None | 0 0
  1. <?php
  2.  
  3. require('../model/Response.php');
  4. require('../model/JsonReader.php');
  5. require('../model/TsvTransformer.php');
  6.  
  7. const CITIES_PATH = '../cities.json';
  8. const TSV_FILE = '../Polskie-miasta.tsv';
  9.  
  10. if(isset($_GET)) {
  11.     if(!file_exists(CITIES_PATH)) {
  12.         $transformer = new TsvTransformer();
  13.         $transformer->transform('../Polskie-miasta.tsv');
  14.     }
  15.    
  16.     $reader = new JsonReader();
  17.     $json = $reader->readFromFile(CITIES_PATH);
  18.  
  19.     if(!isset($_GET['search_query'])) {
  20.         echo json_encode(new Response(false, 'Missing required parameter \'search_query\''));
  21.         die;
  22.     }
  23.  
  24.     $searchPhrase = htmlspecialchars($_GET['search_query']);
  25.  
  26.     if(strlen($searchPhrase) == 0) {
  27.         echo json_encode(new Response(false, 'Search query parameter cannot be empty'));
  28.         die;
  29.     }
  30.  
  31.     $pattern = '/' . $searchPhrase . '/i';
  32.     $result = array_values(array_filter($json, function($element) use ($pattern) {
  33.         if(preg_match($pattern, $element['city'])) {
  34.             return true;
  35.         }
  36.  
  37.         return false;
  38.     }));
  39.  
  40.     if(count($result) > 20) {
  41.         $bonusResults = count($result) - 20;
  42.         $result = array_slice($result, 0, 20);
  43.     } else {
  44.         $bonusResults = 0;
  45.     }
  46.     echo json_encode(new Response(true, ['cities' => $result, 'restResults' => $bonusResults]));
  47. } else {
  48.     echo json_encode(new Response(false, 'Unsupported method, this api only supports method GET'));
  49.     die;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement