class PostBin::Server

Public Class Methods

parse_args(argv) click to toggle source

Parse command line args.

# File lib/postbin/server.rb, line 65
def self.parse_args(argv)
  # default options.
  options = { :bind => '127.0.0.1', :port => 6969, :server => 'thin', :enviroment => :production }

  # available options.
  opts = OptionParser.new('', 24, '  ') do |opts|
    opts.banner = 'Usage: postbin [options]'
    opts.separator ''
    opts.separator 'PostBin options:'
    opts.on('-v', '--version', 'show version number') { $stderr.puts 'PostBin ' + PostBin::Version; exit }
    opts.on('-h', '--help', 'show this message') { $stderr.puts opts; exit; }
    opts.separator ''
    opts.separator 'Rack options:'
    opts.on('-s', '--server SERVER', 'server (webrick, mongrel, thin, etc.)') { |s| options[:server] = s }
    opts.on('-a', '--address HOST', 'listen on HOST address (default: 127.0.0.1)') { |host| options[:bind] = host }
    opts.on('-p', '--port PORT', 'use PORT number (default: 6969)') { |port| options[:port] = port }
  end.parse!(argv)

  options
end
run_command_line!(argv) click to toggle source

Runs a server on local machine, called by command line executable.

# File lib/postbin/server.rb, line 58
def self.run_command_line!(argv)
  options = parse_args(argv)
  $stderr.puts "== Starting PostBin on http://#{options[:bind]}:#{options[:port]}"
  run!(options)
end

Private Instance Methods

client_request_headers() click to toggle source

Returns an array of all client side HTTP request headers.

# File lib/postbin/server.rb, line 88
def client_request_headers
  # POST /some/url HTTP/1.1
  # Accept: application/json
  # Content-Type: application/json
  headers = request.env.select { |k,v| k.start_with? 'HTTP_' } \
    .collect { |pair| [ pair[0].sub(/^HTTP_/, ''), pair[1] ] } \
    .collect { |pair| pair.join(': ') }

  headers
end