Class: GitHubEventWatcher::WebhookSender

Inherits:
Object
  • Object
show all
Defined in:
lib/github-event-watcher/webhook-sender.rb

Instance Method Summary collapse

Constructor Details

#initialize(end_point, logger) ⇒ WebhookSender

Returns a new instance of WebhookSender.



21
22
23
24
25
# File 'lib/github-event-watcher/webhook-sender.rb', line 21

def initialize(end_point, logger)
  @end_point = end_point
  @logger = logger
  @logger.info("[webhook-sender][end-point] <#{@end_point}>")
end

Instance Method Details

#send_push_event(event) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/github-event-watcher/webhook-sender.rb', line 27

def send_push_event(event)
  @logger.info("[webhook-sender][send][push] " +
               "<#{event.id}>:<#{event.repository_full_name}>")
  options = {
    :use_ssl => (@end_point.scheme == "https"),
  }
  begin
    Net::HTTP.start(@end_point.host, @end_point.port, options) do |http|
      request = Net::HTTP::Post.new(@end_point.request_uri)
      request["Host"] = @end_point.hostname
      request["X-GitHub-Event"] = "push"
      request["Content-Type"] = "application/json"
      request["User-Agent"] = "GitHub Event Watcher/1.0"
      request.body = JSON.generate(convert_to_push_event_payload(event))
      response = http.request(request)
      log_tag = "[webhook-sender][sent][push]"
      case response
      when Net::HTTPSuccess
        @logger.info("#{log_tag}[success]")
      else
        @logger.error("#{log_tag}[error] <#{response.code}>")
      end
    end
  rescue SystemCallError, Timeout::Error
    tag = "[webhook-sender][send][push][error]"
    message = "#{tag} Failed to send push event: #{$!.class}: #{$!.message}"
    @logger.error(message)
  end
end