class HTTPUtils::ServerResponse

class ServerResponses - for sending HTTP responses

Public Class Methods

new(session, length) click to toggle source
# File lib/utils/http_utils.rb, line 117
def initialize(session, length)
  @session = session
  @length = length
end

Public Instance Methods

r_200() click to toggle source
# File lib/utils/http_utils.rb, line 148
def r_200
  @session.puts 'HTTP/1.1 200 OK'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
end
r_201() click to toggle source
# File lib/utils/http_utils.rb, line 154
def r_201
  @session.puts 'HTTP/1.1 201 Created'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
end
r_301(options) click to toggle source
# File lib/utils/http_utils.rb, line 160
def r_301(options)
  @session.puts 'HTTP/1.1 301 Moved Permanently'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
  @session.puts "Location: #{options[:location]}"
end
r_304() click to toggle source
# File lib/utils/http_utils.rb, line 167
def r_304
  @session.puts 'HTTP/1.1 304 Not Modified'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
end
r_400() click to toggle source
# File lib/utils/http_utils.rb, line 173
def r_400
  @session.puts 'HTTP/1.1 400 Bad Request'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
end
r_404() click to toggle source
# File lib/utils/http_utils.rb, line 179
def r_404
  @session.puts 'HTTP/1.1 404 Not Found'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
end
r_405(options) click to toggle source
# File lib/utils/http_utils.rb, line 185
def r_405(options)
  @session.puts 'HTTP/1.1 405 Method Not Allowed'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
  @session.puts "Allow: #{options[:method]}"
end
r_500() click to toggle source
# File lib/utils/http_utils.rb, line 192
def r_500
  @session.puts 'HTTP/1.1 500 Internal Server Error'
  @session.puts "Content-Type: #{@content_type}"
  @session.puts "Content-Length: #{@length}"
end
respond(response, options = {}, status = 200, content_type = 'application/json') click to toggle source
# File lib/utils/http_utils.rb, line 130
def respond(response,
            options = {},
            status = 200,
            content_type = 'application/json')
  @content_type = options[:content_type] || content_type

  if respond_to? "r_#{status}"
    method("r_#{status}").call unless valid_options? options
    method("r_#{status}").call options if valid_options? options
  else
    r_400
  end

  @session.puts
  @session.puts response
  @session.close
end
valid_options?(options) click to toggle source
# File lib/utils/http_utils.rb, line 122
def valid_options?(options)
  acceptable_keys = %i[location method]

  return true if acceptable_keys.any? { |key| options.key? key }

  false
end