Sha256: 19db3b0739a9ac98826ff34106082c96bce3c3d581977ad35dfe8f28f7031cde
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
module Firehose module Rack class PublisherApp include Firehose::Rack::Helpers def call(env) req = env['parsed_request'] ||= ::Rack::Request.new(env) path = req.path method = req.request_method if method == 'PUT' EM.next_tick do body = env['rack.input'].read Firehose.logger.debug "HTTP published `#{body}` to `#{path}`" publisher.publish(path, body).callback do env['async.callback'].call [202, {'Content-Type' => 'text/plain', 'Content-Length' => '0'}, []] env['async.callback'].call response(202, '', 'Content-Type' => 'text/plain') end.errback do |e| Firehose.logger.debug "Error publishing: #{e.inspect}" env['async.callback'].call response(500, 'Error when trying to publish', 'Content-Type' => 'text/plain') end end # Tell the web server that this will be an async response. ASYNC_RESPONSE else Firehose.logger.debug "HTTP #{method} not supported" msg = "#{method} not supported." [501, {'Content-Type' => 'text/plain', 'Content-Length' => msg.size.to_s}, [msg]] end end private def publisher @publisher ||= Firehose::Publisher.new end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
firehose-0.2.alpha.3 | lib/firehose/rack/publisher_app.rb |
firehose-0.2.alpha.2 | lib/firehose/rack/publisher_app.rb |