Официальный клиент для работы с API сайтов habrahabr.ru и geektimes.ru
Хабрахабр - самое крупное в Рунете сообщество людей, занятых в индустрии высоких технологий. Уникальная аудитория, свежая информация, конструктивное общение и коллективное творчество - всё это делает Хабрахабр самым оригинальным IT-проектом в России.
$ composer require tmtm/habrahabr_api
или добавить
"tmtm/habrahabr_api": "0.1.*"
в секцию require
файла composer.json.
Перед началом работы с API Хабрахабра потребуется пройти несколько несложных этапов.
Получение идентификатора приложения
Воспользовавшись этой формой на Хабрахабре, нужно кратко описать суть нового приложения и цель, для которой ему нужен API.
Через некоторое время будет получен идентификатор и секрет нового приложения. Держите секрет в секрете и никому его не давайте!
Получение токена пользователя
Каждое приложение может работать с API Хабра только от имени установившего его пользователя.
Для получения токена можно воспользоваться следующим простым способом. Перейдите по следующей ссылке
https://habrahabr.ru/auth/o/login/?client_id=КЛИЕНТ&response_type=token&redirect_uri=САЙТ
поставив адрес сайта приложения вместо САЙТ
и полученный на первом шаге
идентификатор вместо КЛИЕНТ
.
После нажатия кнопки "Разрешить", Хабр выполнит перенаправление на САЙТ
,
добавив в конец адреса строку #token=...
, которая и будет содержать
требуемый токен.
Создание тестового приложения
Дошедший до этого шага ужее имеет всю мощь API Хабрахабра. Теперь самое время воспользоваться библиотеку. Для начала инициализируем адаптер:
$adapter = new \Habrahabr\Api\HttpAdapter\CurlAdapter();
$adapter->setEndpoint('API_ENDPOINT');
$adapter->setToken('OAUTH_TOKEN');
$adapter->setClient('OAUTH_CLIENT');
$client = new Habrahabr\Api\Client($adapter);
# Доступ к ресурсу может быть получен через метод состоящий из `get` и названия ресурса
$User = $client->getUserResource()->getUser('me');
CommentsResource
- Ресурс работы с комментариями
getCommentsForPost($post_id)
- Возвращает список комментариев к посту по номеруpostComment($post_id, $text, $comment_id = 0)
- Добавление комментария к посту по номеруvotePlus($comment_id)
- Положительное голосование за комментарийvoteMinus($comment_id)
- Отрицательное голосование за комментарийCompanyResource
- Ресурс работы с компаниями
getCompanyPosts($alias, $page = 1)
- Возвращает посты компании по алиасу компанииgetCompanyInfo($alias)
- Возвращает профиль компании по алиасу компанииgetList($page = 1)
- Возвращает список компанийFeedResource
- Ресурс работы с "основной" лентой постов
getFeedHabred($page = 1)
- Возвращает "Захабренные" посты из "основной" лентой постовgetFeedUnhabred($page = 1)
- Возвращает "Отхабренные" посты из "основной" лентой постовgetFeedNew($page = 1)
- Возвращает "Новые" посты из "основной" лентой постовFlowResource
- Ресурс работы с потоками
getFlows()
- Возвращает список потоковgetFeedInteresting($alias, $page = 1)
- Возвращает "Интересные" посты из потокаgetFeedAll($alias, $page = 1)
- Возвращает "Все" посты посты из потокаgetFeedBest($alias, $page = 1)
- Возвращает "Лучшие" посты из потокаHubResource
- Ресурс работы с хабами
getHubInfo($alias)
- Возвращает информацию о хабе по алиасуgetFeedHabred($alias, $page = 1)
- Возвращает "Захабренные" посты связаные с хабомgetFeedUnhabred($alias, $page = 1)
- Возвращает "Отхабренные" посты связаные с хабомgetFeedNew($alias, $page = 1)
- Возвращает "Новые" посты связаные с хабомgetHubList($page = 1)
- Возвращает список хабовsubscribeHub($alias)
- Подписаться на хабunsubscribeHub($alias)
- Отписаться от хабаPostResource
- Ресурс работы с постами
getPost($post_id)
- Возвращает пост по номеруgetMeta($posts_id)
- Получить мета-информацию постов (не более 30 постов за раз)votePlus($post_id)
- Положительное голосование за пост (Этот метод может быть предоставлен дополнительно, по запросу)voteMinus($post_id)
- Отрицательное голосование за пост (Этот метод может быть предоставлен дополнительно, по запросу)voteNeutral($post_id)
- Нейтральное голосование за пост (Этот метод может быть предоставлен дополнительно, по запросу)addPostToFavorite($post_id)
- Добавить пост в избранноеremovePostFromFavorite($post_id)
- Удалить пост из избранногоincreaseCount($post_id)
- Увеличить счетчик просмотров постаPollResource
- Ресурс работы с опросами
getPoll($poll_id)
- Возвращает опрос по номеруvote($poll_id, $votes = [])
- Голосование в опросе за один или несколько варинатов ответа (Этот метод может быть предоставлен дополнительно, по запросу)SearchResource
- Ресурс работы с поиском
searchPosts($q, $page = 1)
- Поиск произвольного запроса по постамsearchUsers($q, $page = 1)
- Поиск произвольного запроса по пользователямsearchHubs($q)
- Поиск произвольного запроса по хабамTrackerResource
- Ресурс работы с трекером
push($title, $text)
- Отправить сообщение в трекер на вкладку "Приложения"getCounters()
- Возвращает счетчики новых сообщений из трекера, элементы не отмечаются как просмотренныеgetPostsFeed()
- Возвращает список постов из трекера,, элементы не отмечаются как просмотренныеgetSubscribersFeed()
- Возвращает список подписчиков из трекера, элементы не отмечаются как просмотренныеgetMentions()
- Возвращает список упоминаний из трекера, элементы не отмечаются как просмотренныеgetAppsFeed()
- Возвращает список сообщений приложений из трекера, элементы не отмечаются как просмотренныеUserResource
- Ресурс работы с пользователями
getUserCurrent()
- Возвращает профиль пользователя API ключаgetUser($login)
- Возвращает профиль пользователя по логинуgetUsersList()
- Возвращает список пользователейgetUserComments($login, $page = 1)
- Возвращает комментарии пользователя по логинуgetUserPosts($login, $page = 1)
- Возвращает посты пользователя по логинуgetUserHubs($login)
- Возвращает хабы на которые подписан пользовательgetUserCompanies($login)
- Возвращает компании в которых работает пользовательgetUserFollowers($login, $page = 1)
- Возвращает список подписчиков пользователя по логинуgetUserFollowed($login, $page = 1)
- Возвращает список на кого подписан пользователь по логинуvoteKarmaPlus($login)
- Плюсовать карму пользователя по логину (Этот метод может быть предоставлен дополнительно, по запросу)voteKarmaMinus($login)
- Минусовать карму пользователя по логину (Этот метод может быть предоставлен дополнительно, по запросу)getUserFavoritesPost($login, $page = 1)
- Возвращает список "избранных" постов пользователя по логинуgetUserFavoritesComments($login, $page = 1)
- Возвращает список "избранных" комментариев пользователя по логинуSettingsResource
- Ресурс работы с настройками профиля
acceptAgreement()
- Принять соглашениеДля начала установить --dev
зависимости. После чего запустить:
$ vendor/bin/phpunit
Для проведения тестирования на рабочем API, необходимо скопировать файл phpunit.xml.dist
в phpunit.xml
И добавить в него секцию содержащую ключи для работы с API:
<php>
<env name="ENDPOINT" value="https://api.habrahabr.ru/v1"/>
<env name="TOKEN" value="ВАШ_OAUTH_TOKEN"/>
<env name="CLIENT" value="ВАШ_OAUTH_CLIENT"/>
</php>
Библиотека доступна на условиях лицензии MIT: http://www.opensource.org/licenses/mit-license.php