Skip to content

Instantly share code, notes, and snippets.

@krukid
Created March 12, 2012 14:22
Show Gist options
  • Save krukid/2022231 to your computer and use it in GitHub Desktop.
Save krukid/2022231 to your computer and use it in GitHub Desktop.
goliath server that echoes embedded html image (jpeg)
require 'goliath'
require 'base64'
class StreamingEchoedImageService < Goliath::API
def on_headers(env, headers)
env.logger.info "#{env['REQUEST_METHOD']} #{env['REQUEST_URI']}"
env.logger.info 'received headers: ' + headers.inspect
env['async-headers'] = headers
end
def on_body(env, data)
env.logger.info 'received data: ' + data.size.to_s
(env['async-body'] ||= '') << data
end
def on_close(env)
env.logger.info 'closing connection'
end
def response(env)
env.logger.info "total data size: #{env['async-body'].size} bytes"
base64_image_data = Base64.encode64(env['async-body'])
html = "<img src='data:image/jpeg;base64,#{base64_image_data}'/>"
[200, {"Content-Type"=>"text/html"}, html]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment