/* (c) 2017 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.opensearch.eo.response; import java.io.IOException; import java.io.OutputStream; import org.apache.commons.io.IOUtils; import org.geoserver.opensearch.eo.MetadataResults; import org.geoserver.opensearch.eo.QuicklookResults; import org.geoserver.ows.Response; import org.geoserver.platform.Operation; import org.geoserver.platform.ServiceException; /** * Writes out metadata in the requested format. Trusts that the steps before (kvp parsing, request processing) have verified the requested mime type * makes sense * * @author Andrea Aime - GeoSolutions */ public class QuicklookResponse extends Response { public QuicklookResponse() { super(QuicklookResults.class); } @Override public String getMimeType(Object value, Operation operation) throws ServiceException { return ((QuicklookResults) value).getMimeType(); } @Override public void write(Object value, OutputStream output, Operation operation) throws IOException, ServiceException { QuicklookResults results = (QuicklookResults) value; IOUtils.write(results.getPayload(), output); } @Override public String getAttachmentFileName(Object value, Operation operation) { final QuicklookResults results = (QuicklookResults) value; String mime = results.getMimeType(); String extension = ".dat"; int idx = mime.lastIndexOf("/"); if (mime.startsWith("image") && idx >= 0 && idx < mime.length() - 1) { extension = mime.substring(idx + 1); } return results.getRequest().getId().toLowerCase() + "." + extension; } }