=cut
sub dispatch {
- my ( $self, $c ) = @_;
+ my $self = shift;
+ my $c = shift;
my $controller = $self->class;
my $method = $self->name . "_" . uc( $c->request->method );
if ( $controller->can($method) ) {
- return $controller->$method($c);
+ return $controller->$method($c, @{$c->req->args});
} else {
$self->_return_405($c);
- return $c->execute( $self->class, $self );
+ return $c->execute( $self->class, $self, @{$c->req->args} );
}
}
sub end : ActionClass('Serialize') { }
+# You probably want to refer to the HTTP 1.1 Spec for these; they should
+# conform as much as possible.
+#
+# ftp://ftp.isi.edu/in-notes/rfc2616.txt
+
sub status_created {
my $self = shift;
my $c = shift;
}
$c->response->status(201);
$c->response->header('Location' => $location);
- if (exists($p{'entity'})) {
- $c->stash->{$self->config->{'serialize'}->{'stash_key'}} = $p{'entity'};
+ $self->_set_entity($c, $p{'entity'});
+ return 1;
+}
+
+sub status_ok {
+ my $self = shift;
+ my $c = shift;
+ my %p = validate(@_,
+ {
+ entity => 1,
+ },
+ );
+
+ $c->response->status(200);
+ $self->_set_entity($c, $p{'entity'});
+ return 1;
+}
+
+sub status_not_found {
+ my $self = shift;
+ my $c = shift;
+ my %p = validate(@_,
+ {
+ message => { type => SCALAR },
+ },
+ );
+
+ $c->response->status(404);
+ $c->response->body($p{'message'});
+ return 1;
+}
+
+sub _set_entity {
+ my $self = shift;
+ my $c = shift;
+ my $entity = shift;
+ if (defined($entity)) {
+ $c->stash->{$self->config->{'serialize'}->{'stash_key'}} = $entity;
}
return 1;
}