Sha256: 4e62e6683a35510c39a5bd32738de3ef76cdd4ced129b5a8d5537be1f76c406e

Contents?: true

Size: 1.19 KB

Versions: 7

Compression:

Stored size: 1.19 KB

Contents

# coding: utf-8
# frozen_string_literal: true

require 'sinatra/base'
require 'multi_json'

module Stealth
  class Server < Sinatra::Base

    def self.get_or_post(url, &block)
      get(url, &block)
      post(url, &block)
    end

    get '/' do
      <<~WELCOME
        <html>
          <head>
            <title>Stealth</title>
          </head>
          <body>
            <center>
              <a href='https://hellostealth.org'>
                <img src='http://assets.blackops.nyc/stealth/logo.svg' height='120' alt='Stealth Logo' aria-label='hellostealth.org' />
              </a>
            </center>
          </body>
        </html>
      WELCOME
    end

    get_or_post '/incoming/:service' do
      Stealth::Logger.l(topic: "incoming", message: "Received webhook from #{params[:service]}")

      # JSON params need to be parsed and added to the params
      if request.env['CONTENT_TYPE'] == 'application/json'
        json_params = MultiJson.load(request.body.read)
        params.merge!(json_params)
      end

      dispatcher = Stealth::Dispatcher.new(
        service: params[:service],
        params: params,
        headers: request.env
      )

      dispatcher.coordinate
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
stealth-1.0.4 lib/stealth/server.rb
stealth-1.0.3 lib/stealth/server.rb
stealth-1.0.2 lib/stealth/server.rb
stealth-1.0.1 lib/stealth/server.rb
stealth-1.0.0 lib/stealth/server.rb
stealth-1.0.0.rc1 lib/stealth/server.rb
stealth-1.0.0.pre2 lib/stealth/server.rb