Могу ли я использовать ловушку github-services для публикации своих каналов в других службах?
Github разработал хук github-services для отправки коммитов на другие сервисы, такие как bugzilla, campfire, basecamp .
Можно ли использовать тот же хук github-services для передачи данных моего приложения в другие сервисы? Если да, то как я могу интегрировать github-сервисы в мое Rails-приложение.
Любая помощь? Любое предложение?
Обновление Могу ли я интегрировать исходный код ловушки github-services как приложение Sinatra в мое приложение Rails? Как я могу вызвать другие сервисы (bugzilla, campfire, basecam, twitter) из моих приложений в триггеры?
Например, когда один пользователь публикует что-то на стене другого пользователя, кроме сообщения, необходимо отправить другим сервисам, таким как bugzilla,campfire,basecamp, twitter ...
2 ответа
Post-Receive 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 некоторые дополнительные хуки для прослушивания большего количества событий (новая проблема, новая ветвь, загрузка, ...).
Я думаю, что вы ищете простой способ публикации данных вашего приложения во многих других веб-сервисах.
github-services предназначен для сбора информации о коммитах git и передачи ее другим сервисам, которые принимают информацию о коммитах... так что если данные вашего приложения выглядят достаточно как полезная нагрузка github, то другие сервисы, которые работают с github-сервисами, будут работать с вашим приложением,
Но я подозреваю, что ваше приложение не похоже на github и ваши данные отличаются от git commit. В этом случае вы можете использовать код в "services /" в качестве примеров того, как реализовать обработчики событий в вашем приложении. Этот для Campfire использует драгоценный камень Tinder, например: https://github.com/github/github-services/blob/master/services/campfire.rb
Тогда ваш WallPostsController#create может вызвать метод, который отправляет данные в выбранном вами формате различным службам. Если вы собираетесь публиковать сообщения во многих службах, возможно, вы захотите сделать это в асинхронном задании (DelayedJob, resque и т. Д.), Потому что вызовы многих внешних служб займут довольно много времени.