Class: RubyRest::Webrick::Servlet

Inherits:
WEBrick::HTTPServlet::AbstractServlet
  • Object
show all
Defined in:
lib/rubyrest/webrick.rb

Overview

A REST servlet for Webrick adapter

Instance Method Summary collapse

Constructor Details

#initialize(server) ⇒ Servlet

Builds a new servlet, taking the application from it


34
35
36
# File 'lib/rubyrest/webrick.rb', line 34

def initialize( server )
  @app = server.app
end

Instance Method Details

#args(request) ⇒ Object


48
49
50
51
52
53
54
55
56
57
58
# File 'lib/rubyrest/webrick.rb', line 48

def args( request )
  args = Hash.new
  url_tokens = decode_path( request.path ).split( "/")
  args[:authkey] = request["token"]
  args[:format]= request["format"]
  args[:target] = url_tokens[2] if url_tokens.length>2
  args[:property] = url_tokens[3] if url_tokens.length>3
  args[:path] = request.path
  args[:body] = @app.parse_request( args, request ) if request.body
  return args
end

#decode_path(path) ⇒ Object


44
45
46
# File 'lib/rubyrest/webrick.rb', line 44

def decode_path( path )
  path.gsub( "+", " ")
end

#do_DELETE(request, response) ⇒ Object


87
88
89
90
91
92
# File 'lib/rubyrest/webrick.rb', line 87

def do_DELETE( request, response )
  params = args(request )
  response.status = 200
  params[:action]=:delete
  @app.delete( params )
end

#do_GET(request, response) ⇒ Object


60
61
62
63
64
65
66
67
# File 'lib/rubyrest/webrick.rb', line 60

def do_GET( request, response )
  params = args(request )
  response.status = 200
  params[:action]=:retrieve
  data = @app.retrieve( params )
  response["content-type"]=params[:content_type]
  response.body = data  
end

#do_POST(request, response) ⇒ Object


69
70
71
72
73
74
75
76
# File 'lib/rubyrest/webrick.rb', line 69

def do_POST( request, response )
  params = args(request )
  response.status = 201
  params[:action]=:create
  data = @app.create( params )
  response["content-type"]=params[:content_type]
  response.body = data  
end

#do_PUT(request, response) ⇒ Object


78
79
80
81
82
83
84
85
# File 'lib/rubyrest/webrick.rb', line 78

def do_PUT( request, response )
  params = args(request )
  response.status = 200
  params[:action]=:update
  data = @app.update( params )
  response["content-type"]=params[:content_type]
  response.body = data  
end

#get_instance(server) ⇒ Object

A single servlet instance will be used for all requests


40
41
42
# File 'lib/rubyrest/webrick.rb', line 40

def get_instance( server )
  self
end

#to_sObject


94
95
96
# File 'lib/rubyrest/webrick.rb', line 94

def to_s
  "Ruby-on-Rest WEBrick servlet"
end