tmtm / habrahabr_api
Официальный клиент для работы с API сайтов habrahabr.ru и geektimes.ru
Installs: 243
Dependents: 1
Suggesters: 0
Security: 0
Stars: 91
Watchers: 17
Forks: 10
pkg:composer/tmtm/habrahabr_api
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4.0.*
README
Хабрахабр - самое крупное в Рунете сообщество людей, занятых в индустрии высоких технологий. Уникальная аудитория, свежая информация, конструктивное общение и коллективное творчество - всё это делает Хабрахабр самым оригинальным IT-проектом в России.
Установка
Через composer:
$ 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');
Описание API ресурсов и методы
-
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
Альтернативные адаптеры:
Реализации на других языках:
- Python: habrahabr-api-python
- Python: habrahabr-python deprecated