Agora que nosso webhook está pronto para entregar mensagens, vamos configurar um servidor do Sinatra básico para processar o conteúdo recebido.
Observação: baixe o código-fonte completo deste projeto no repositório platform-samples.
Escrevendo o servidor
Queremos que nosso servidor ouça as solicitações POST
, em /payload
, porque foi nele que informamos ao GitHub a URL de webhook. Como estamos usando o ngrok para expor o ambiente local, não precisamos configurar um servidor real online e podemos testar tranquilamente nosso código localmente.
Vamos configurar um pouco o aplicativo Sinatra para fazer algo com as informações. Nossa configuração inicial pode ficar parecida com esta:
require 'sinatra'
require 'json'
post '/payload' do
push = JSON.parse(request.body.read)
puts "I got some JSON: #{push.inspect}"
end
(Se você não estiver familiarizado com o funcionamento do Sinatra, recomendamos ler o guia do Sinatra).
Inicie este servidor.
Como configuramos o webhook para ouvir os eventos que processam Issues
, vá em frente e crie um problema no repositório com o qual você está testando. Depois de criá-lo, volte ao terminal. Você deve ver algo assim em sua saída:
$ ~/Developer/platform-samples/hooks/ruby/configuring-your-server $ ruby server.rb
> == Sinatra/1.4.4 has taken the stage on 4567 for development with backup from Thin
> >> Thin web server (v1.5.1 codename Straight Razor)
> >> Maximum connections set to 1024
> >> Listening on localhost:4567, CTRL+C to stop
> I got some JSON: {"action"=>"opened", "issue"=>{"url"=>"...
Sucesso! Você configurou seu servidor com sucesso para ouvir webhooks. O servidor já pode processar essas informações da forma que você achar melhor. Por exemplo, se você estiver configurando um aplicativo Web "real", o ideal será registrar em log uma parte da saída JSON em um banco de dados.
Para obter mais informações sobre como trabalhar com webhooks por diversão e para ganhar dinheiro, acesse o guia Como testar webhooks.