Class: SlackRubyBotServer::Api::Middleware

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/slack-ruby-bot-server/api/middleware.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Loggable

included

Class Method Details

.instance ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/slack-ruby-bot-server/api/middleware.rb', line 15

def self.instance
  @instance ||= Rack::Builder.new do
    use OTR::ActiveRecord::ConnectionManagement if SlackRubyBotServer::Config.activerecord? && defined?(::OTR)

    use Rack::Cors do
      allow do
        origins '*'
        resource '*', headers: :any, methods: %i[get post]
      end
    end

    # rewrite HAL links to make them clickable in a browser
    use Rack::Rewrite do
      r302 %r{(\/[\w\/]*\/)(%7B|\{)?(.*)(%7D|\})}, '$1'
    end

    use Rack::ServerPages do |config|
      config.view_path = SlackRubyBotServer::Config.view_paths
    end

    run Middleware.new
  end.to_app
end

.reset! ⇒ Object



11
12
13
# File 'lib/slack-ruby-bot-server/api/middleware.rb', line 11

def self.reset!
  @instance = nil
end

Instance Method Details

#call(env) ⇒ Object



39
40
41
# File 'lib/slack-ruby-bot-server/api/middleware.rb', line 39

def call(env)
  Endpoints::RootEndpoint.call(env)
end