GeoserveLayersService.java
- package gov.usgs.earthquake.geoserve;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.MalformedURLException;
- import java.net.URL;
- import javax.json.Json;
- import javax.json.JsonObject;
- import gov.usgs.util.StreamUtils;
- /**
- * Access layers from the Geoserve Layers service.
- */
- public class GeoserveLayersService {
- /** Default URL for GeoServe Layers service. */
- public static final String DEFAULT_GEOSERVE_LAYERS_URL = "https://earthquake.usgs.gov/ws/geoserve/layers.json?type={type}";
- /** Configured URL for GeoServe Layers service. */
- private String endpointUrl;
- /**
- * Create a service using the default URL.
- */
- public GeoserveLayersService() {
- this(DEFAULT_GEOSERVE_LAYERS_URL);
- }
- /**
- * Create a service using a custom URL.
- *
- * @param endpointUrl layers service URL.
- * Should contain the string <code>{type}</code>,
- * which is replaced during the #{@link #getLayer(String)}.
- */
- public GeoserveLayersService(final String endpointUrl) {
- this.endpointUrl = endpointUrl;
- }
- /**
- * Get the endpoint URL.
- * @return endpoint URL
- */
- public String getEndpointURL() {
- return this.endpointUrl;
- }
- /**
- * Set the endpoint URL.
- * @param url endpoint URL to set
- */
- public void setEndpointURL(final String url) {
- this.endpointUrl = url;
- }
- /**
- * Fetch and parse a JSON response from the Geoserve layers service.
- * @param type type of response to fetch
- * @return JSONObject response
- * @throws IOException on IO error
- * @throws MalformedURLException Error on URL failure
- */
- public JsonObject getLayer(final String type) throws IOException, MalformedURLException {
- final URL url = new URL(endpointUrl.replace("{type}", type));
- try (InputStream in = StreamUtils.getInputStream(url)) {
- JsonObject json = Json.createReader(in).readObject();
- return json.getJsonObject(type);
- }
- }
- }