module Sinatra::PuppetWebhookRoutes::Module

Registers a POST endpoint for the PuppetWebhook App

Public Class Methods

registered(puppet_webhook) click to toggle source
# File lib/routes/module.rb, line 7
def self.registered(puppet_webhook)
  puppet_webhook.post '/module' do
    protected! if settings.protected
    request.body.rewind # in case someone has already read it

    # Short circuit if we're ignoring this event
    return 200 if ignore_event?

    # TODO: Move these two lines of code into the parser
    decoded = request.body.read
    verify_signature(settings.github_secret, decoded) if verify_signature?

    module_name = env['parsed_body'][:module_name]

    module_name = sanitize_input(module_name)
    LOGGER.info("Deploying module #{module_name}")
    Process.detach(fork { deploy_module(module_name) })
  end
end