Skip to content

Commit

Permalink
Allow more mime types when posting bulk match input files. see Catalo…
Browse files Browse the repository at this point in the history
  • Loading branch information
mdoering committed Jan 19, 2024
1 parent 07f845f commit f100619
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,14 @@ public class MoreMediaTypes {
public final static String TEXT_YAML = "text/yaml";
public final static MediaType TEXT_YAML_TYPE = new MediaType("text", "yaml");
public final static String TEXT_CSV = "text/csv";
public final static String TEXT_CSV_ALT1 = "text/comma-separated-values";
public final static String TEXT_CSV_ALT2 = "application/csv";
public final static MediaType TEXT_CSV_TYPE = new MediaType("text", "csv");
public final static String TEXT_TSV = "text/tsv";
public final static MediaType TEXT_TSV_TYPE = new MediaType("text", "tsv");
public final static String TEXT_TSV_ALT1 = "text/tab-separated-values";
public final static String TEXT_MARKDOWN = "text/markdown";
public final static MediaType TEXT_MARKDOWN_TYPE = new MediaType("text", "markdown");
public final static String TEXT_COMMA_SEP = "text/comma-separated-values";
public final static String TEXT_TAB_SEP = "text/tab-separated-values";
public final static String TEXT_CSS = "text/css";
public final static String TEXT_WILDCARD = "text/*";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public ImportRequest uploadArchive(@PathParam("key") int datasetKey, @Auth User

@POST
@Path("{key}")
@Consumes({MediaType.TEXT_PLAIN, MoreMediaTypes.TEXT_CSV, MoreMediaTypes.TEXT_TSV,
@Consumes({MediaType.TEXT_PLAIN, MoreMediaTypes.TEXT_CSV, MoreMediaTypes.TEXT_TSV, MoreMediaTypes.TEXT_CSV_ALT2,
MoreMediaTypes.TEXT_YAML, MoreMediaTypes.APP_YAML,
MoreMediaTypes.TEXT_WILDCARD})
@RolesAllowed({Roles.ADMIN, Roles.EDITOR})
Expand All @@ -168,15 +168,16 @@ public void cancel(@PathParam("key") int datasetKey, @Auth User user) {
importManager.cancel(datasetKey, user.getKey());
}

private static String contentType2Suffix(HttpHeaders h) {
static String contentType2Suffix(HttpHeaders h) {
if (h != null && h.getRequestHeaders() != null) {
String ctype = Strings.nullToEmpty(h.getRequestHeaders().getFirst(HttpHeaders.CONTENT_TYPE)).toLowerCase();
switch (ctype) {
case MoreMediaTypes.TEXT_CSV:
case MoreMediaTypes.TEXT_COMMA_SEP:
case MoreMediaTypes.TEXT_CSV_ALT1:
case MoreMediaTypes.TEXT_CSV_ALT2:
return "csv";
case MoreMediaTypes.TEXT_TSV:
case MoreMediaTypes.TEXT_TAB_SEP:
case MoreMediaTypes.TEXT_TSV_ALT1:
return "tsv";
case MoreMediaTypes.TEXT_YAML:
case MoreMediaTypes.APP_YAML:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@

import javax.validation.Valid;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;

import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -106,9 +108,9 @@ private MatchingJob submit(MatchingRequest req, User user) {
return job;
}

private File upload(InputStream data, User user, String format) throws IOException {
File local = cfg.normalizer.uploadFile(user.getUsername().replaceAll("\\s+", "_"), "." + format);
if (!local.getParentFile().exists()) {
private File upload(InputStream data, User user, String suffix) throws IOException {
File local = cfg.normalizer.uploadFile(user.getUsername().replaceAll("\\s+", "_"), suffix == null ? "" : "." + suffix);
if (!local.getParentFile().exists()) {
local.getParentFile().mkdirs();
}
Files.copy(data, local.toPath(), StandardCopyOption.REPLACE_EXISTING);
Expand All @@ -129,25 +131,14 @@ public MatchingJob matchSourceJob(@PathParam("key") int datasetKey,

@POST
@Path("job")
@Consumes({MoreMediaTypes.TEXT_CSV})
public MatchingJob matchCsvJob(@PathParam("key") int datasetKey,
@BeanParam @Valid MatchingRequest req,
InputStream data,
@Auth User user) throws IOException {
req.setDatasetKey(datasetKey);
req.setUpload(upload(data, user, "csv"));
return submit(req, user);
}

@POST
@Path("job")
@Consumes({MediaType.TEXT_PLAIN, MoreMediaTypes.TEXT_TSV})
@Consumes({MediaType.TEXT_PLAIN, MoreMediaTypes.TEXT_CSV, MoreMediaTypes.TEXT_TSV, MoreMediaTypes.TEXT_CSV_ALT2, MoreMediaTypes.TEXT_WILDCARD})
public MatchingJob matchTsvJob(@PathParam("key") int datasetKey,
@BeanParam @Valid MatchingRequest req,
@Context HttpHeaders headers,
InputStream data,
@Auth User user) throws IOException {
req.setDatasetKey(datasetKey);
req.setUpload(upload(data, user, "tsv"));
req.setUpload(upload(data, user, ImporterResource.contentType2Suffix(headers)));
return submit(req, user);
}

Expand Down

0 comments on commit f100619

Please sign in to comment.