TripsterAPI для 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";
?>