Class: RedfishTools::Servlet

Inherits:
WEBrick::HTTPServlet::AbstractServlet
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/redfish_tools/servlet.rb

Constant Summary collapse

BAD_HEADERS =
Set.new(["connection", "content-length", "keep-alive"])
DEFAULT_HEADERS =
{
  "content-type" => "application/json"
}.freeze

Instance Method Summary collapse

Instance Method Details

#do_DELETE(_request, response) ⇒ Object



59
60
61
# File 'lib/redfish_tools/servlet.rb', line 59

def do_DELETE(_request, response)
  response.status = 501
end

#do_GET(request, response) ⇒ Object



29
30
31
32
33
34
# File 'lib/redfish_tools/servlet.rb', line 29

def do_GET(request, response)
  item = datastore.get(request.path)
  response.status = 200
  set_headers(response, item.headers)
  response.body = item.body.to_json
end

#do_PATCH(_request, response) ⇒ Object



55
56
57
# File 'lib/redfish_tools/servlet.rb', line 55

def do_PATCH(_request, response)
  response.status = 501
end

#do_POST(request, response) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/redfish_tools/servlet.rb', line 36

def do_POST(request, response)
  item = datastore.get(request.path)
  return response.status = 405 unless item.body["Members"]

  data = JSON.parse(request.body)
  item_n = (request) ? (item, data) : new_item(item, data)
  return response.status = 400 unless item_n.body

  response.status = 201
  set_headers(response, item_n.headers)
  response.body = item_n.body.to_json
rescue JSON::ParserError
  response.status = 400
end

#do_PUT(_request, response) ⇒ Object



51
52
53
# File 'lib/redfish_tools/servlet.rb', line 51

def do_PUT(_request, response)
  response.status = 501
end

#service(request, response) ⇒ Object



22
23
24
25
26
27
# File 'lib/redfish_tools/servlet.rb', line 22

def service(request, response)
  return response.status = 401 unless authorized?(request)
  return response.status = 404 unless datastore.get(request.path).body

  super
end