Могу ли я использовать ловушку github-services для публикации своих каналов в других службах? - PullRequest
4 голосов
/ 22 декабря 2011

Github разработал хук github-services для передачи коммитов другим сервисам, таким как bugzilla, campfire, basecamp.

Можно ли использовать тот же хук github-services для передачи данных моего приложения в другие сервисы?Если да, как я могу интегрировать github-services в мое приложение Rails.

Любая помощь?Любое предложение ?

Обновление Могу ли я интегрировать исходный код ловушки github-services как приложение Sinatra в мое приложение Rails?Как я могу вызвать другие сервисы (bugzilla, campfire, basecam, twitter) из моего приложения триггерами?

Например, когда один пользователь публикует что-то на стене другого пользователя, кроме сообщения, должно быть отправлено другим сервисам, таким как bugzilla, костер, basecamp, твиттер ...

Ответы [ 2 ]

7 голосов
/ 24 декабря 2011

URL-адрес после получения - это самый простой способ выполнить такое уведомление. Он запускает POST для предварительно сконфигурированного URL-адреса всякий раз, когда в хранилище выполняется push.

Вы можете начать с этой страницы Github.help по тестированию веб-хуков , чтобы понять формат того, что отправляется POST и как служба реагирует. Это сделано благодаря очень полезному сервису: PostBin .

На этой странице справки приведен простой пример того, что нужно реализовать на сервере Sinatra для анализа PSONed JSON:

post '/' do
    push = JSON.parse(params[:payload])
    "I got some JSON: #{push.inspect}"
end

Этот гист идет немного дальше и показывает некоторые действительно базовые извлечения данных JSON.

Если вы хотите пойти дальше, вы можете настроить через GitHub API несколько дополнительных хуков для прослушивания большего количества событий (новая проблема, новая вилка, скачать, ...).

1 голос
/ 24 декабря 2011

Я думаю, что вы ищете простой способ публикации данных вашего приложения во многих других веб-сервисах.

github-services предназначен для получения информации git commit и передачи ее другим службам, которые принимают эту информацию фиксации.... так что если данные вашего приложения выглядят достаточно, как полезная нагрузка github , тогда другие службы, работающие с github-services, будут работать с вашим приложением.

Но я подозреваю, что ваше приложение не похоже наgithub и ваши данные отличаются от git commit.В этом случае вы можете использовать код в «services /» в качестве примеров того, как реализовать обработчики событий в вашем приложении.Этот для Campfire использует гем Tinder, например: https://github.com/github/github-services/blob/master/services/campfire.rb

Тогда ваш WallPostsController # create может вызвать метод, который отправляет данные в выбранном вами формате различным службам.Если вы собираетесь публиковать сообщения во многих службах, возможно, вы захотите сделать это в асинхронном задании (DelayedJob, resque и т. Д.), Потому что вызовы многих внешних служб займут довольно много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...