diff --git a/.gitignore b/.gitignore index 1a36c0be0f19a3a1ed276885dc482cbc1e8cde00..4afc5b4aa87b925a8f2c9fa0c2afb3e47899654e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ .project .settings .gradle -.vscode bin build classes @@ -18,7 +17,6 @@ swagger-files libs .factorypath .apt_* -.vscode *version.json # Node diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000000000000000000000000000000000000..c40e000b4609b3ca477c3546d11181fa1611d9a8 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,17 @@ +{ + /* + * VS Code recommended extensions for nshmp-ws-static. + * + * For more information on extension, + * visit: https://code.visualstudio.com/docs/editor/extension-marketplace + */ + "recommendations": [ + "davidanson.vscode-markdownlint", + "editorconfig.editorconfig", + "gitlab.gitlab-workflow", + "jumpinjackie.vscode-map-preview", + "redhat.vscode-yaml", + "vscjava.vscode-gradle", + "vscjava.vscode-java-pack", + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..8efb6b9c317d09459ac7f7a87277f418bf64cb48 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + /* + * VS Code settings for nshmp-ws-static. + * + * For more information on settings, + * visit: https://code.visualstudio.com/docs/getstarted/settings + */ + "editor.rulers": [ + { + "column": 100 + } + ], + "editor.tabSize": 2, + "files.associations": { + "*.geojson": "json" + }, + "java.compile.nullAnalysis.mode": "automatic", + "java.configuration.updateBuildConfiguration": "automatic", + "java.import.generatesMetadataFilesAtProjectRoot": true, + "files.exclude": { + "**/.classpath": true, + "**/.DS_Store": true, + "**/.factorypath": true, + "**/.git": true, + "**/.gradle": true, + "**/.project": true, + "**/.settings": true, + "**/bin": true, + "**/node_modules": true, + "**/package*.json": true, + } +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000000000000000000000000000000000000..29dc1d1f4d44788783b5c12d257a12df7539fa7c --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,29 @@ +{ + /* + * VS Code tasks for nshmp-ws-static. + * + * For more information on tasks, visit: https://code.visualstudio.com/docs/editor/tasks + */ + "version": "2.0.0", + "tasks": [ + /* + * Task to automatically run the `./gradlew eclipse` task on startup to + * keep the `.classpath` file updated. + */ + { + "label": "Update Classpath File", + "type": "shell", + "command": "./gradlew eclipse", + "windows": { + "command": "gradle.bat eclipse" + }, + "presentation": { + "close": true, + }, + "group": "none", + "runOptions": { + "runOn": "folderOpen" + } + } + ] +} diff --git a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java index 4e1a688ead05ae7f864cfa4c981a7ad41204a2cb..960c2ae042f6761df57d3629fab6768ddad42ccb 100644 --- a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java +++ b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java @@ -112,7 +112,7 @@ public class NetcdfController { "Annual Frequency of Exceedence,0.036386,0.026034,0.018125,0.012197, ...\n")) }) @Get(uri = "/{longitude}/{latitude}/{siteClass}/{imt}{?format}", - produces = MediaType.APPLICATION_JSON) + produces = { MediaType.APPLICATION_JSON, MediaType.TEXT_CSV }) public HttpResponse<String> doGetSlashByImt( HttpRequest<?> request, @Schema(required = true) @PathVariable Double latitude, @@ -177,7 +177,7 @@ public class NetcdfController { }) @Get(uri = "/{longitude}/{latitude}/{siteClass}{?format}", - produces = MediaType.APPLICATION_JSON) + produces = { MediaType.APPLICATION_JSON, MediaType.TEXT_CSV }) public HttpResponse<String> doGetSlashBySite( HttpRequest<?> request, @Schema(required = true) @PathVariable Double latitude, @@ -238,7 +238,8 @@ public class NetcdfController { "...")) }) - @Get(uri = "/{longitude}/{latitude}{?format}", produces = MediaType.APPLICATION_JSON) + @Get(uri = "/{longitude}/{latitude}{?format}", + produces = { MediaType.APPLICATION_JSON, MediaType.TEXT_CSV }) public HttpResponse<String> doGetSlash( HttpRequest<?> request, @Schema(required = true) @PathVariable Double longitude, @@ -300,10 +301,10 @@ public class NetcdfController { "Annual Frequency of Exceedence,0.036386,0.026034,0.018125,0.012197, ...\n" + "\n" + "...")) - }) - @Get(uri = "{?longitude,latitude,siteClass,imt,format}", - produces = MediaType.APPLICATION_JSON) + @Get( + uri = "{?longitude,latitude,siteClass,imt,format}", + produces = { MediaType.APPLICATION_JSON, MediaType.TEXT_CSV }) public HttpResponse<String> doGet( HttpRequest<?> request, @Schema(required = true) @QueryValue @Nullable Double longitude, diff --git a/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java b/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java index 9d88e3cfa083f37dae1b03ff0ffc6c271e2a248e..8cb6efced68d8ec5f1a38afbd4651ae89d367a70 100644 --- a/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java +++ b/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java @@ -22,6 +22,7 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; +import io.micronaut.http.MediaType; /** * Abstract service handler for {@code NetcdfController}. @@ -89,7 +90,14 @@ public abstract class NetcdfService<S, T extends Query> { var service = getService(query); var response = processRequest(httpRequest, query, service); LOGGER.fine("Result:\n" + response); - return HttpResponse.ok(response); + + var httpResponse = HttpResponse.ok(response); + + if (query.format == ResponseFormat.CSV) { + httpResponse.header("Content-Type", MediaType.TEXT_CSV.toString()); + } + + return httpResponse; } catch (Exception e) { var url = httpRequest.getUri().toString(); return NetcdfWsUtils.handleError(e, getServiceName(), url);