{{$NEXT}}
+1.15 2014-05-07 09:02:44-05:00 CST6CDT
+
+ * Added new status_see_other method for returning a 303 redirect.
+ * Added new status_moved method for returning a 301 redirect. (Matthew Keller)
+
1.14 2013-12-27 15:32:19 America/Chicago
* Stop prompting for features at install time
return 1;
}
+=item status_see_other
+
+Returns a "303 See Other" response. Takes an optional "entity" to serialize,
+and a "location" where the client should redirect to.
+
+Example:
+
+ $self->status_see_other(
+ $c,
+ location => $some_other_url,
+ entity => {
+ radiohead => "Is a good band!",
+ }
+ );
+
+=cut
+
+sub status_see_other {
+ my $self = shift;
+ my $c = shift;
+ my %p = Params::Validate::validate(
+ @_,
+ {
+ location => { type => SCALAR | OBJECT },
+ entity => { optional => 1 },
+ },
+ );
+
+ $c->response->status(303);
+ $c->response->header( 'Location' => $p{location} );
+ $self->_set_entity( $c, $p{'entity'} );
+ return 1;
+}
+
+=item status_moved
+
+Returns a "301 MOVED" response. Takes an "entity" to serialize, and a
+"location" where the created object can be found.
+
+Example:
+
+ $self->status_moved(
+ $c,
+ location => '/somewhere/else',
+ entity => {
+ radiohead => "Is a good band!",
+ },
+ );
+
+=cut
+
+sub status_moved {
+ my $self = shift;
+ my $c = shift;
+ my %p = Params::Validate::validate(
+ @_,
+ {
+ location => { type => SCALAR | OBJECT },
+ entity => { optional => 1 },
+ },
+ );
+
+ my $location = ref $p{location}
+ ? $p{location}->as_string
+ : $p{location}
+ ;
+
+ $c->response->status(301);
+ $c->response->header( Location => $location );
+ $self->_set_entity($c, $p{entity});
+ return 1;
+}
+
sub _set_entity {
my $self = shift;
my $c = shift;
"... status found message";
is $res->header('Location'), '/rest', "...location of what was found";
+ok $res = request( $t->get( url => '/rest/test_status_see_other' ) );
+is $res->code, 303, "... status see other";
+is $res->header('Location'), '/rest', "...location to redirect to";
+
+
ok $res = request( $t->get( url => '/rest/test_status_bad_request' ) );
is $res->code, 400, '... status bad request';
is_deeply Load( $res->content ),