Skip to content
Snippets Groups Projects
Commit 7a4afde6 authored by Clayton, Brandon Scott's avatar Clayton, Brandon Scott
Browse files

Custom service pattern string

parent 2c676223
No related branches found
No related tags found
2 merge requests!109Production Release,!108Swagger Updates
package gov.usgs.earthquake.nshmp.netcdf.www; package gov.usgs.earthquake.nshmp.netcdf.www;
import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import gov.usgs.earthquake.nshmp.netcdf.NetcdfGroundMotions; import gov.usgs.earthquake.nshmp.netcdf.NetcdfGroundMotions;
...@@ -49,10 +50,58 @@ public class SwaggerController { ...@@ -49,10 +50,58 @@ public class SwaggerController {
@Get(produces = MediaType.TEXT_EVENT_STREAM) @Get(produces = MediaType.TEXT_EVENT_STREAM)
public HttpResponse<String> doGet(HttpRequest<?> request) { public HttpResponse<String> doGet(HttpRequest<?> request) {
try { try {
var openApi = NetcdfWsUtils.getOpenApi(request, netcdf.netcdfData(), "/spectra"); var openApi = NetcdfWsUtils.getOpenApi(
request,
netcdf.netcdfData(),
servicePatternSection(request));
return HttpResponse.ok(Yaml.pretty(openApi)); return HttpResponse.ok(Yaml.pretty(openApi));
} catch (Exception e) { } catch (Exception e) {
return NetcdfWsUtils.handleError(e, "Swagger", request.getUri().getPath()); return NetcdfWsUtils.handleError(e, "Swagger", request.getUri().getPath());
} }
} }
private static String servicePatternSection(HttpRequest<?> request)
throws IOException {
var url = NetcdfWsUtils.getRequestUrl(request);
url = url.endsWith("/swagger") ? url.replace("/swagger", "") : url;
return new StringBuilder()
.append(
"<details>\n" +
"<summary>Service Call Patterns</summary>\n")
.append(
"### Query Pattern\n" +
"The query based service call is in the form of:\n" +
"```text\n" +
url + "/spectra?latitude={number}&longitude={number}\n" +
url + "/spectra?latitude={number}&longitude={number}&siteClass={string}\n" +
"````\n" +
"Example:\n" +
"```text\n" +
url + "/spectra?latitude=34&longitude=-118\n" +
url + "/spectra?latitude=34&longitude=-118&siteClass=BC\n" +
"```\n")
.append(
"### Slash Pattern\n" +
"The slash based service call is in the form of:\n" +
"```text\n" +
url + "/spectra/{latitude}/{longitude}\n" +
url + "/spectra/{latitude}/{longitude}/{siteClass}\n" +
"```\n" +
"Example:\n" +
"```text\n" +
url + "/spectra/34/-118\n" +
url + "/spectra/34/-118/BC\n" +
"```\n")
.append("</details>")
.toString();
}
} }
package gov.usgs.earthquake.nshmp.netcdf.www; package gov.usgs.earthquake.nshmp.netcdf.www;
import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import gov.usgs.earthquake.nshmp.netcdf.NetcdfHazardCurves; import gov.usgs.earthquake.nshmp.netcdf.NetcdfHazardCurves;
...@@ -50,11 +51,62 @@ public class SwaggerController { ...@@ -50,11 +51,62 @@ public class SwaggerController {
@Get(produces = MediaType.TEXT_EVENT_STREAM) @Get(produces = MediaType.TEXT_EVENT_STREAM)
public HttpResponse<String> doGet(HttpRequest<?> request) { public HttpResponse<String> doGet(HttpRequest<?> request) {
try { try {
var openApi = NetcdfWsUtils.getOpenApi(request, netcdf.netcdfData(), "/hazard"); var openApi = NetcdfWsUtils.getOpenApi(
request,
netcdf.netcdfData(),
servicePatternSection(request));
SwaggerUtils.imtSchema(openApi.getComponents().getSchemas(), netcdf.netcdfData().imts()); SwaggerUtils.imtSchema(openApi.getComponents().getSchemas(), netcdf.netcdfData().imts());
return HttpResponse.ok(Yaml.pretty(openApi)); return HttpResponse.ok(Yaml.pretty(openApi));
} catch (Exception e) { } catch (Exception e) {
return NetcdfWsUtils.handleError(e, "Swagger", request.getUri().getPath()); return NetcdfWsUtils.handleError(e, "Swagger", request.getUri().getPath());
} }
} }
private static String servicePatternSection(HttpRequest<?> request)
throws IOException {
var url = NetcdfWsUtils.getRequestUrl(request);
url = url.endsWith("/swagger") ? url.replace("/swagger", "") : url;
return new StringBuilder()
.append(
"<details>\n" +
"<summary>Service Call Patterns</summary>\n")
.append(
"### Query Pattern\n" +
"The query based service call is in the form of:\n" +
"```text\n" +
url + "/hazard?longitude={number}&latitude={number}\n" +
url + "/hazard?longitude={number}&latitude={number}&siteClass={string}\n" +
url + "/hazard?longitude={number}&latitude={number}&siteClass={string}&imt={string}\n" +
"````\n" +
"Example:\n" +
"```text\n" +
url + "/hazard?longitude=-118&latitude=34\n" +
url + "/hazard?longitude=-118&latitude=34&siteClass=BC\n" +
url + "/hazard?longitude=-118&latitude=34&siteClass=BC&imt=PGA\n" +
"```\n")
.append(
"### Slash Pattern\n" +
"The slash based service call is in the form of:\n" +
"```text\n" +
url + "/hazard/{longitude}/{latitude}\n" +
url + "/hazard/{longitude}/{latitude}/{siteClass}\n" +
url + "/hazard/{longitude}/{latitude}/{siteClass}/{imt}\n" +
"```\n" +
"Example:\n" +
"```text\n" +
url + "/hazard/-118/34\n" +
url + "/hazard/-118/34/BC\n" +
url + "/hazard/-118/34/BC/PGA\n" +
"```\n")
.append("</details>")
.toString();
}
} }
...@@ -66,8 +66,10 @@ public class NetcdfWsUtils { ...@@ -66,8 +66,10 @@ public class NetcdfWsUtils {
return HttpResponse.serverError(response); return HttpResponse.serverError(response);
} }
public static OpenAPI getOpenApi(HttpRequest<?> request, NetcdfData netcdfData, public static OpenAPI getOpenApi(
String servicePath) throws IOException { HttpRequest<?> request,
NetcdfData netcdfData,
String serviceSection) throws IOException {
var openApi = new OpenAPIV3Parser().read("META-INF/swagger/nshmp-ws-static.yml"); var openApi = new OpenAPIV3Parser().read("META-INF/swagger/nshmp-ws-static.yml");
var scienceBaseMetadata = netcdfData.scienceBaseMetadata(); var scienceBaseMetadata = netcdfData.scienceBaseMetadata();
SwaggerUtils.addLocationBounds(openApi, netcdfData.minimumBounds(), netcdfData.maximumBounds()); SwaggerUtils.addLocationBounds(openApi, netcdfData.minimumBounds(), netcdfData.maximumBounds());
...@@ -81,7 +83,7 @@ public class NetcdfWsUtils { ...@@ -81,7 +83,7 @@ public class NetcdfWsUtils {
// Update description // Update description
var description = new StringBuilder() var description = new StringBuilder()
.append(scienceBaseMetadata.description + "\n") .append(scienceBaseMetadata.description + "\n")
.append(servicePatternSection(request, servicePath)) .append(serviceSection)
.append(swaggerParameterSection(netcdfData)) .append(swaggerParameterSection(netcdfData))
.append(swaggerScienceBaseSection(scienceBaseMetadata)) .append(swaggerScienceBaseSection(scienceBaseMetadata))
.toString(); .toString();
...@@ -102,49 +104,6 @@ public class NetcdfWsUtils { ...@@ -102,49 +104,6 @@ public class NetcdfWsUtils {
} }
} }
private static String servicePatternSection(HttpRequest<?> request, String servicePath)
throws IOException {
var url = NetcdfWsUtils.getRequestUrl(request);
url = url.endsWith("/swagger") ? url.replace("/swagger", "") : url;
return new StringBuilder()
.append(
"<details>\n" +
"<summary>Service Call Patterns</summary>\n")
.append(
"### Query Pattern\n" +
"The query based service call is in the form of:\n" +
"```text\n" +
url + servicePath + "?longitude={number}&latitude={number}&siteClass={string}\n" +
"````\n" +
"Example:\n" +
"```text\n" +
url + servicePath + "?longitude=-118&latitude=34&siteClass=BC\n" +
"```\n")
.append(
"### Slash Pattern\n" +
"The slash based service call is in the form of:\n" +
"```text\n" +
url + servicePath + "/{longitude}/{latitude}/{siteClass}\n" +
"```\n" +
"Example:\n" +
"```text\n" +
url + servicePath + "/-118/34/BC\n" +
"```\n" +
"> Note: To obtain data for all site classes simply " +
"call the query or slashed based service with no site class parameter.\n")
.append("</details>")
.toString();
}
private static String swaggerParameterSection(NetcdfData netcdfData) { private static String swaggerParameterSection(NetcdfData netcdfData) {
return new StringBuilder() return new StringBuilder()
.append( .append(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment