Class: Upfluence::HTTP::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/upfluence/http/server.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{
  server: :puma,
  Port: ENV['PORT'] || 8080,
  Host: '0.0.0.0',
  threaded: true,
  interfaces: []
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &block) ⇒ Server

Returns a new instance of Server.



25
26
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
# File 'lib/upfluence/http/server.rb', line 25

def initialize(options = {}, &block)
  @options = DEFAULT_OPTIONS.dup.merge(options)
  opts = @options
  base_handler = Handler::Base.new(opts[:interfaces])

  @builder = Builder.new do
    use Middleware::Logger
    use Middleware::ApplicationHeaders, base_handler
    use Middleware::HandleException
    use Upfluence.error_logger.middleware
    use Rack::ContentLength
    use Rack::Chunked
    use Rack::Lint if Upfluence.env.development?
    use Rack::TempfileReaper
    use Rack::ETag

    map '/healthcheck'  do
      run(opts[:healthcheck_endpoint] || Endpoint::Healthcheck.new)
    end

    map '/base' do
      run_thrift Base::Base_service::BaseService::Processor, base_handler
    end

    instance_eval(&block)
  end

  @handler = Rack::Handler.get(@options[:server])
end

Instance Method Details

#serveObject



55
56
57
58
59
60
61
62
63
64
# File 'lib/upfluence/http/server.rb', line 55

def serve
  ENV['RACK_ENV'] = Upfluence.env.to_s
  @handler.run(@builder, @options) do |server|
    server.threaded = @options[:threaded] if server.respond_to? :threaded=

    if server.respond_to?(:threadpool_size=) && @options[:threadpool_size]
      server.threadpool_size = @options[:threadpool_size]
    end
  end
end