MT#61804 /api/conversations add csv download support

* "Accept: text/csv" enabled csv download (same as with other
  endpoints

Change-Id: I84a229f6f1f8760d520f55da1bb250ed6dd1f228
mr14.0
Kirill Solomko 9 months ago
parent 0850b11f8a
commit 4a38eace57

@ -88,4 +88,15 @@ sub order_by_cols {
return $cols;
}
sub check_create_csv :Private {
my ($self, $c) = @_;
return "conversations.csv";
}
sub create_csv :Private {
my ($self, $c) = @_;
$self->download_csv($c);
}
1;

@ -1978,6 +1978,7 @@ sub return_csv{
$self->create_csv($c);
$c->response->body(q());
}catch($e){
chomp($e);
$self->error($c, HTTP_BAD_REQUEST, $e);
}
}

@ -1000,5 +1000,31 @@ sub hal_links {
];
}
sub download_csv {
my ($self, $c) = @_;
my $params = {};
my $form = $self->get_form($c);
my $rs = $self->get_list($c);
my $type = $c->request->params->{type};
my @cols = map { $_->name() } $form->sorted_fields();
$c->res->write_fh->write_encoded(join (",", @cols) );
$c->res->write_fh->write("\n");
foreach my $item ($rs->all) {
my $resource = $self->resource_from_item($c, $item, $form, $params);
$resource = $self->process_hal_resource($c, $item, $resource, $form, $params);
my @vals = map { $resource->{$_} // '' } @cols;
$c->res->write_fh->write_encoded(join ",", @vals);
$c->res->write_fh->write("\n");
}
$c->res->write_fh->close;
return 1;
}
1;

Loading…
Cancel
Save