Tripster API для php
TripsterAPI и примеры использования
<? /****************************************************** * Класс для запросов к Tripster API ******************************************************/ class TripsterAPI { private $token; public function __construct($token) { $this->token = $token; } // GET-запрос на указанный ресурс с переданными параметрами public function get($resource, array $parameters = array()) { $query_string = http_build_query($parameters); $curl = curl_init("https://experience.tripster.ru/api/$resource/?$query_string"); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => array( 'Authorization: Token '.$this->token, 'Content-Type: application/json' ) )); // Получаем данные и закрывааем соединение $results = curl_exec($curl); curl_close($curl); // Декодируем полученный json // параметр true для возвращения ассоциативного массива вместо объекта return json_decode($results, true); } } /****************************************************** * Пример 1: Получаем экскурсии в Москве (первые 10) ******************************************************/ $api = new TripsterAPI("xxxxxxxxxx6614887d94913470d64e1775c9a33c"); $result = $api->get("experiences", array("city__name_ru" => "Москва")); print_r($result); /****************************************************** * Пример 2: Получаем все экскурсии в Москве * и складываем в отдельный массив ******************************************************/ $api = new TripsterAPI("xxxxxxxxxx6614887d94913470d64e1775c9a33c"); $experiences = array(); $page = 1; while(true) { print("Страница $page\n"); $page_results = $api->get("experiences", array( "city__name_ru" => "Москва", "page_size" => 100, "page" => $page, )); // Добавляем экскурсии к общему массиву экскурсий $experiences = array_merge($experiences, $page_results["results"]); // Если это последняя страница — заканчиваем, иначе запрашиваем следующую if (!$page_results["next"]) break; $page++; } // Выводим число экскурсий $experiences_count = count($experiences); print "Всего экскурсий в Москве: $experiences_count\n"; /****************************************************** * Пример 3: Получаем все экскурсии в Москве * и складываем рубрики в отдельный массив ******************************************************/ $api = new TripsterAPI("xxxxxxxxxx6614887d94913470d64e1775c9a33c"); $tags = array(); $page = 1; while(true) { print("Страница $page\n"); $page_results = $api->get("experiences", array( "city__name_ru" => "Москва", "page_size" => 15, "page" => $page, )); // Вытаскиваем рубрики из каждой экскурсии и добавляем их // в общий ассоциативный массив id => рубрика foreach ($page_results["results"] as $experience) { foreach ($experience["tags"] as $tag) { $tags[$tag["id"]] = $tag; } } // Если это последняя страница заканчиваем if (!$page_results["next"]) break; $page++; } // Выводим число рубрик $tags_count = count($tags); print "Число рубрик в Москве: $tags_count\n"; /****************************************************** * Пример 4: Получаем рубрики экскурсии в Москве * одним запросом ******************************************************/ $api = new TripsterAPI("xxxxxxxxxx6614887d94913470d64e1775c9a33c"); $result = $api->get("citytags", array( "city__name_ru" => "Москва", "page_size" => 30, )); $tags = $result["results"]; // Выводим число рубрик $tags_count = count($tags); print "Число рубрик в Москве: $tags_count\n"; ?>