MT#17173 Add return representation

Change-Id: Icc48160e57e172196db31ff85c419da7e3e9904a
changes/18/8718/11
Irina Peshinskaya 9 years ago
parent ad208784a1
commit a42334ca16

@ -862,6 +862,46 @@ sub relation {
}
#------ /accessors ---
sub return_representation{
my($self, $c, %params) = @_;
my($hal, $response, $item, $form, $preference) = @params{qw/hal response item form preference/};
$preference //= $self->require_preference($c);
return unless $preference;
$hal //= $self->hal_from_item($c, $item, $form);
$response //= HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
if ('minimal' eq $preference) {
$c->response->status(HTTP_NO_CONTENT);
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
$c->response->headers($response->headers);
$c->response->header(Preference_Applied => 'return=representation');
$c->response->body($response->content);
}
}
sub return_representation_post{
my($self, $c, %params) = @_;
my($hal, $response, $item, $form, $preference) = @params{qw/hal response item form preference/};
$preference //= $self->require_preference($c);
return unless $preference;
$hal //= $self->hal_from_item($c, $item, $form);
$response //= HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
$c->response->status(HTTP_CREATED);
$c->response->header(Location => sprintf('/%s%d', $c->request->path, $item->id));
if ('minimal' eq $preference) {
$c->response->body(q());
}else{
$c->response->body($response->content);
}
}
sub return_csv(){

@ -116,11 +116,11 @@ sub post {
$guard->commit;
$c->response->status(HTTP_CREATED);
$c->response->header(Location => sprintf('/%s%d', $c->request->path, $item->id));
$c->response->body(q());
$self->return_representation_post($c, 'item' => $item, 'form' => $form );
}
return;
}
sub auto :Private {
my ($self, $c) = @_;

@ -32,7 +32,6 @@ sub set_config {
);
}
sub get {
my ($self, $c, $id) = @_;
{
@ -80,20 +79,7 @@ sub patch {
last unless $item;
$guard->commit;
if ('minimal' eq $preference) {
$c->response->status(HTTP_NO_CONTENT);
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
my $hal = $self->hal_from_item($c, $item, $form);
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
$c->response->headers($response->headers);
$c->response->header(Preference_Applied => 'return=representation');
$c->response->body($response->content);
}
$self->return_representation($c, 'item' => $item, 'form' => $form, 'preference' => $preference );
}
return;
}
@ -122,19 +108,7 @@ sub put {
$guard->commit;
if ('minimal' eq $preference) {
$c->response->status(HTTP_NO_CONTENT);
$c->response->header(Preference_Applied => 'return=minimal');
$c->response->body(q());
} else {
my $hal = $self->hal_from_item($c, $item, $form);
my $response = HTTP::Response->new(HTTP_OK, undef, HTTP::Headers->new(
$hal->http_headers,
), $hal->as_json);
$c->response->headers($response->headers);
$c->response->header(Preference_Applied => 'return=representation');
$c->response->body($response->content);
}
$self->return_representation($c, , 'item' => $item, 'form' => $form, 'preference' => $preference );
}
return;
}
@ -156,12 +130,14 @@ sub delete {
}
return;
}
sub auto :Private {
my ($self, $c) = @_;
$self->set_body($c);
$self->log_request($c);
}
sub head {
my ($self, $c, $id) = @_;
$c->forward(qw(GET));

Loading…
Cancel
Save