class Contentful::Webhook::Listener::Server
Server
is the responsible for handling Webhook
receiver endpoints Configuration defaults are:
- port: 5678 - address: '0.0.0.0' - logger: Contentful::Webhook::Support::NullLogger.new - endpoints: [{ endpoint: '/receive', controller: Contentful::Webhook::Listener::Controllers::Wait, timeout: 300 }]
Constants
- DEFAULT_ADDRESS
- DEFAULT_ENDPOINTS
- DEFAULT_PORT
Attributes
address[R]
endpoints[R]
logger[R]
port[R]
server[R]
Public Class Methods
new(config = {})
click to toggle source
# File lib/contentful/webhook/listener/server.rb, line 39 def initialize(config = {}) @port = config.fetch(:port, DEFAULT_PORT) @address = config.fetch(:address, DEFAULT_ADDRESS) @endpoints = config.fetch(:endpoints, DEFAULT_ENDPOINTS) @logger = config.fetch( :logger, Contentful::Webhook::Listener::Support::NullLogger.new ) end
start(config = {}) { |config| ... }
click to toggle source
# File lib/contentful/webhook/listener/server.rb, line 31 def self.start(config = {}) yield config if block_given? Thread.new { Server.new(config).start } end
Public Instance Methods
start()
click to toggle source
# File lib/contentful/webhook/listener/server.rb, line 49 def start logger.info "Webhook server starting at: http://#{@address}:#{@port}" @server = create_server mount_endpoints @server.start end
Protected Instance Methods
create_server()
click to toggle source
# File lib/contentful/webhook/listener/server.rb, line 60 def create_server WEBrick::HTTPServer.new( Port: @port, BindAddress: @address, AccessLog: [], Logger: Contentful::Webhook::Listener::Support::NullLogger.new ) end
log_endpoint_data(endpoint_config)
click to toggle source
# File lib/contentful/webhook/listener/server.rb, line 83 def log_endpoint_data(endpoint_config) endpoint_data = [ endpoint_config[:endpoint], "Controller: #{endpoint_config[:controller].name}", "Timeout: #{endpoint_config[:timeout]}" ] logger.info "\t#{endpoint_data.join(' - ')}" end
mount_endpoints()
click to toggle source
# File lib/contentful/webhook/listener/server.rb, line 69 def mount_endpoints logger.info 'Available Endpoints:' @endpoints.each do |endpoint_config| @server.mount( endpoint_config[:endpoint], endpoint_config[:controller], @logger, endpoint_config[:timeout] ) log_endpoint_data(endpoint_config) end end