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.