bug fixing
added junit test git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@173903 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
32717609c8
commit
addfc794c2
|
@ -42,7 +42,7 @@ public class CatalogueResolver {
|
||||||
ApplicationProfileReaderForCatalogueResolver appPrCatResolver;
|
ApplicationProfileReaderForCatalogueResolver appPrCatResolver;
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("{entityContext:ctlg(-(o|g|p|d)?}/{vreName}/{entityName}")
|
@Path("{entityContext:ctlg(-(o|g|p|d))?}/{vreName}/{entityName}")
|
||||||
public Response resolveCatalogue(@PathParam("entityName") String entityName, @PathParam("vreName") String vreName, @PathParam("entityContext") String entityContext) {
|
public Response resolveCatalogue(@PathParam("entityName") String entityName, @PathParam("vreName") String vreName, @PathParam("entityContext") String entityContext) {
|
||||||
InnerMethodName.instance.set("resolveCataloguePublicLink");
|
InnerMethodName.instance.set("resolveCataloguePublicLink");
|
||||||
logger.info(CatalogueResolver.class.getSimpleName()+" GET starts...");
|
logger.info(CatalogueResolver.class.getSimpleName()+" GET starts...");
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
package org.gcube.datatransfer.resolver.services;
|
package org.gcube.datatransfer.resolver.services;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -12,6 +16,7 @@ import javax.annotation.Nullable;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.QueryParam;
|
import javax.ws.rs.QueryParam;
|
||||||
|
@ -29,14 +34,22 @@ import org.gcube.datatransfer.resolver.SingleFileStreamingOutput;
|
||||||
import org.gcube.datatransfer.resolver.Util;
|
import org.gcube.datatransfer.resolver.Util;
|
||||||
import org.gcube.datatransfer.resolver.gis.GeonetworkAccessParameter;
|
import org.gcube.datatransfer.resolver.gis.GeonetworkAccessParameter;
|
||||||
import org.gcube.datatransfer.resolver.gis.GeonetworkInstance;
|
import org.gcube.datatransfer.resolver.gis.GeonetworkInstance;
|
||||||
|
import org.gcube.datatransfer.resolver.gis.GeonetworkServiceInterface;
|
||||||
import org.gcube.datatransfer.resolver.gis.exception.GeonetworkInstanceException;
|
import org.gcube.datatransfer.resolver.gis.exception.GeonetworkInstanceException;
|
||||||
|
import org.gcube.datatransfer.resolver.gis.geonetwork.FilterGetRecords;
|
||||||
|
import org.gcube.datatransfer.resolver.gis.geonetwork.GNAuthentication;
|
||||||
import org.gcube.datatransfer.resolver.gis.geonetwork.HTTPCallsUtils;
|
import org.gcube.datatransfer.resolver.gis.geonetwork.HTTPCallsUtils;
|
||||||
import org.gcube.datatransfer.resolver.gis.geonetwork.HTTPCallsUtils.HttpResponse;
|
import org.gcube.datatransfer.resolver.gis.geonetwork.HTTPCallsUtils.HttpResponse;
|
||||||
|
import org.gcube.datatransfer.resolver.gis.geonetwork.ReusableInputStream;
|
||||||
|
import org.gcube.datatransfer.resolver.gis.util.GetResponseRecordFilter;
|
||||||
import org.gcube.datatransfer.resolver.services.error.ExceptionManager;
|
import org.gcube.datatransfer.resolver.services.error.ExceptionManager;
|
||||||
import org.gcube.datatransfer.resolver.services.exceptions.InternalServerException;
|
import org.gcube.datatransfer.resolver.services.exceptions.InternalServerException;
|
||||||
import org.gcube.spatial.data.geonetwork.configuration.Configuration;
|
import org.gcube.spatial.data.geonetwork.configuration.Configuration;
|
||||||
|
import org.gcube.spatial.data.geonetwork.model.Account;
|
||||||
|
import org.gcube.spatial.data.geonetwork.model.Account.Type;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class GeonetworkResolver.
|
* The Class GeonetworkResolver.
|
||||||
|
@ -58,7 +71,7 @@ public class GeonetworkResolver {
|
||||||
public static final String CSW_SERVER = "srv/en/csw";
|
public static final String CSW_SERVER = "srv/en/csw";
|
||||||
|
|
||||||
public static final String VALUE_OF_REQUEST_DELIMITIER = "$$";
|
public static final String VALUE_OF_REQUEST_DELIMITIER = "$$";
|
||||||
public static final String PATH_PARAM_REMAINING = "remainPath";
|
public static final String PATH_PARAM_REMAINPATH = "remainPath";
|
||||||
|
|
||||||
public static final String QUERY_PARAM_RESET_CACHE_PARAM = "resetcache";
|
public static final String QUERY_PARAM_RESET_CACHE_PARAM = "resetcache";
|
||||||
public static final String QUERY_PARAM_RESET_CACHED_SCOPE_PARAM = "resetcachedscope";
|
public static final String QUERY_PARAM_RESET_CACHED_SCOPE_PARAM = "resetcachedscope";
|
||||||
|
@ -85,7 +98,7 @@ public class GeonetworkResolver {
|
||||||
* @param mode the mode
|
* @param mode the mode
|
||||||
* @param scope the scope
|
* @param scope the scope
|
||||||
* @param visibility the visibility
|
* @param visibility the visibility
|
||||||
* @param owner the owner
|
* @param owner the owner - pass 'null' as string if no filter applied
|
||||||
* @param requestDelimiter the request delimiter
|
* @param requestDelimiter the request delimiter
|
||||||
* @param resetCache the reset cache
|
* @param resetCache the reset cache
|
||||||
* @param resetScope the reset scope
|
* @param resetScope the reset scope
|
||||||
|
@ -93,13 +106,13 @@ public class GeonetworkResolver {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("{"+PATH_PARAM_SCOPE+"}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{"+PATH_PARAM_OWNER+"}/$${remainPath:(/[^?$]+)?}")
|
@Path("{"+PATH_PARAM_SCOPE+"}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{"+PATH_PARAM_OWNER+"}/$${"+PATH_PARAM_REMAINPATH+":(/[^?$]+)?}")
|
||||||
public Response submitGet(@Context HttpServletRequest req,
|
public Response submitGet(@Context HttpServletRequest req,
|
||||||
@PathParam(PATH_PARAM_SCOPE) @Nullable String scope,
|
@PathParam(PATH_PARAM_SCOPE) @Nullable String scope,
|
||||||
@PathParam(PATH_PARAM_MODE) @Nullable String mode,
|
@PathParam(PATH_PARAM_MODE) @Nullable String mode,
|
||||||
@PathParam(PATH_PARAM_VISIBILITY) @Nullable String visibility,
|
@PathParam(PATH_PARAM_VISIBILITY) @Nullable String visibility,
|
||||||
@PathParam(PATH_PARAM_OWNER) @Nullable String owner,
|
@PathParam(PATH_PARAM_OWNER) @Nullable String owner,
|
||||||
@PathParam("remainPath") @Nullable String remainPath,
|
@PathParam(PATH_PARAM_REMAINPATH) @Nullable String remainPath,
|
||||||
@QueryParam(QUERY_PARAM_RESET_CACHE_PARAM) @Nullable String resetCache,
|
@QueryParam(QUERY_PARAM_RESET_CACHE_PARAM) @Nullable String resetCache,
|
||||||
@QueryParam(QUERY_PARAM_RESET_CACHED_SCOPE_PARAM) @Nullable String resetScope) {
|
@QueryParam(QUERY_PARAM_RESET_CACHED_SCOPE_PARAM) @Nullable String resetScope) {
|
||||||
|
|
||||||
|
@ -262,7 +275,7 @@ public class GeonetworkResolver {
|
||||||
/**
|
/**
|
||||||
* Submit post.
|
* Submit post.
|
||||||
*/
|
*/
|
||||||
/* @SuppressWarnings("resource")
|
@SuppressWarnings("resource")
|
||||||
@POST
|
@POST
|
||||||
@Path("/{"+PATH_PARAM_SCOPE+":(/[^/?$]+)?}}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{"+PATH_PARAM_OWNER+"}/{"+PATH_PARAM_REQUEST_DELIMITER+"}")
|
@Path("/{"+PATH_PARAM_SCOPE+":(/[^/?$]+)?}}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{"+PATH_PARAM_OWNER+"}/{"+PATH_PARAM_REQUEST_DELIMITER+"}")
|
||||||
public Response submitPost(@Context HttpServletRequest req,
|
public Response submitPost(@Context HttpServletRequest req,
|
||||||
|
@ -503,7 +516,7 @@ public class GeonetworkResolver {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Purge remain from query string.
|
* Purge remain from query string.
|
||||||
|
@ -516,12 +529,12 @@ public class GeonetworkResolver {
|
||||||
// SCOPE is: /gcube/devsec/devVRE
|
// SCOPE is: /gcube/devsec/devVRE
|
||||||
// [INFO ] 2016-04-05 15:01:42,808 org.gcube.datatransfer.resolver.gis.geonetwork.GeonetworkResolver -
|
// [INFO ] 2016-04-05 15:01:42,808 org.gcube.datatransfer.resolver.gis.geonetwork.GeonetworkResolver -
|
||||||
// Query String is: scope=/gcube/devsec/devVRE&version=2.0.2&request=GetCapabilities&service=CSW
|
// Query String is: scope=/gcube/devsec/devVRE&version=2.0.2&request=GetCapabilities&service=CSW
|
||||||
int start = queryString.indexOf(PATH_PARAM_REMAINING+"=");
|
int start = queryString.indexOf(PATH_PARAM_REMAINPATH+"=");
|
||||||
|
|
||||||
if(start>=0){
|
if(start>=0){
|
||||||
int end = queryString.indexOf("&", start);
|
int end = queryString.indexOf("&", start);
|
||||||
|
|
||||||
if(end==-1 && queryString.length()==(PATH_PARAM_REMAINING+"="+remain_value).length()){ //SCOPE IS THE UNIQUE PARAMETER INTO QUETY STRING
|
if(end==-1 && queryString.length()==(PATH_PARAM_REMAINPATH+"="+remain_value).length()){ //SCOPE IS THE UNIQUE PARAMETER INTO QUETY STRING
|
||||||
logger.debug("Scope is the unique parameter, returning empty query string");
|
logger.debug("Scope is the unique parameter, returning empty query string");
|
||||||
return "";
|
return "";
|
||||||
}else if(end<queryString.length())
|
}else if(end<queryString.length())
|
||||||
|
|
|
@ -61,7 +61,7 @@ public class StorageIDResolver {
|
||||||
* @return the storage id
|
* @return the storage id
|
||||||
*/
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("{storage-id:(?!index)[^/?$]*}")
|
@Path("{storage-id}")
|
||||||
//@Path("{storage-id}")
|
//@Path("{storage-id}")
|
||||||
public Response getStorageId(@Context HttpServletRequest httpRequest, @PathParam(STORAGE_ID) String storageId, @QueryParam(ConstantsResolver.QUERY_PARAM_FILE_NAME) String fileName, @QueryParam(ConstantsResolver.QUERY_PARAM_CONTENT_TYPE) String contentType, @QueryParam(ConstantsResolver.QUERY_PARAM_VALIDATION) Boolean validation) {
|
public Response getStorageId(@Context HttpServletRequest httpRequest, @PathParam(STORAGE_ID) String storageId, @QueryParam(ConstantsResolver.QUERY_PARAM_FILE_NAME) String fileName, @QueryParam(ConstantsResolver.QUERY_PARAM_CONTENT_TYPE) String contentType, @QueryParam(ConstantsResolver.QUERY_PARAM_VALIDATION) Boolean validation) {
|
||||||
logger.info(this.getClass().getSimpleName()+" GET starts...");
|
logger.info(this.getClass().getSimpleName()+" GET starts...");
|
||||||
|
@ -161,7 +161,7 @@ public class StorageIDResolver {
|
||||||
* @throws IOException Signals that an I/O exception has occurred.
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
*/
|
*/
|
||||||
@HEAD
|
@HEAD
|
||||||
@Path("{storage-id:(?!index)[^/?$]*}")
|
@Path("{storage-id}")
|
||||||
public Response httpDoHead(@Context HttpServletRequest httpRequest, @PathParam(STORAGE_ID) String storageId, @QueryParam(ConstantsResolver.HPC) Boolean hproxycheck) throws ServletException, IOException {
|
public Response httpDoHead(@Context HttpServletRequest httpRequest, @PathParam(STORAGE_ID) String storageId, @QueryParam(ConstantsResolver.HPC) Boolean hproxycheck) throws ServletException, IOException {
|
||||||
logger.info(this.getClass().getSimpleName()+" HEAD starts...");
|
logger.info(this.getClass().getSimpleName()+" HEAD starts...");
|
||||||
|
|
||||||
|
|
|
@ -3,41 +3,29 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.datatransfer.resolver.services;
|
package org.gcube.datatransfer.resolver.services;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
///**
|
||||||
import javax.ws.rs.GET;
|
// *
|
||||||
import javax.ws.rs.Path;
|
// * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
import javax.ws.rs.PathParam;
|
// * Oct 22, 2018
|
||||||
import javax.ws.rs.Produces;
|
// */
|
||||||
import javax.ws.rs.core.Context;
|
//@Path("/")
|
||||||
import javax.ws.rs.core.MediaType;
|
//public class UriResolverIndex {
|
||||||
import javax.ws.rs.core.Response.Status;
|
//
|
||||||
|
// private static Logger logger = LoggerFactory.getLogger(UriResolverIndex.class);
|
||||||
|
//
|
||||||
|
// @GET
|
||||||
|
// @Produces(MediaType.TEXT_HTML)
|
||||||
|
// @Path("index")
|
||||||
|
// public Viewable index(@Context HttpServletRequest req, @PathParam("index") String info){
|
||||||
|
//
|
||||||
|
// try{
|
||||||
|
// logger.info("UriResolverIndex called");
|
||||||
|
// return new Viewable("/index");
|
||||||
|
// }catch(Exception e){
|
||||||
|
// logger.error("Error on getting index.jsp", e);
|
||||||
|
// throw new InternalServerException(req, Status.NOT_FOUND, "Index.jsp not found", UriResolverIndex.class, null);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
import org.gcube.datatransfer.resolver.services.exceptions.InternalServerException;
|
|
||||||
import org.glassfish.jersey.server.mvc.Viewable;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
||||||
* Oct 22, 2018
|
|
||||||
*/
|
|
||||||
@Path("/")
|
|
||||||
public class UriResolverIndex {
|
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(UriResolverIndex.class);
|
|
||||||
|
|
||||||
@GET
|
|
||||||
@Produces(MediaType.TEXT_HTML)
|
|
||||||
@Path("index")
|
|
||||||
public Viewable index(@Context HttpServletRequest req, @PathParam("index") String info){
|
|
||||||
|
|
||||||
try{
|
|
||||||
logger.info("UriResolverIndex called");
|
|
||||||
return new Viewable("/index");
|
|
||||||
}catch(Exception e){
|
|
||||||
logger.error("Error on getting index.jsp", e);
|
|
||||||
throw new InternalServerException(req, Status.NOT_FOUND, "Index.jsp not found", UriResolverIndex.class, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package rest;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.StandardCopyOption;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FilenameUtils;
|
||||||
|
import org.apache.http.HttpStatus;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class TestResolvers.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* Oct 31, 2018
|
||||||
|
*/
|
||||||
|
public class TestResolvers {
|
||||||
|
|
||||||
|
|
||||||
|
public static final String URI_RESOLVER_SERVICE_ENDPOINT = "https://data1-d.d4science.net";
|
||||||
|
|
||||||
|
public static final Logger logger = LoggerFactory.getLogger(TestResolvers.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Storage hub test.
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
//@Test
|
||||||
|
public void storageHubTest() throws Exception{
|
||||||
|
|
||||||
|
String storageHubId = "2019b881-083b-444a-81be-8abee4b91020";
|
||||||
|
String url = String.format("%s/shub/%s",URI_RESOLVER_SERVICE_ENDPOINT,storageHubId);
|
||||||
|
URL toURL;
|
||||||
|
int status;
|
||||||
|
try {
|
||||||
|
toURL = new URL(url);
|
||||||
|
HttpURLConnection con = (HttpURLConnection) toURL.openConnection();
|
||||||
|
con.setRequestMethod("GET");
|
||||||
|
con.connect();
|
||||||
|
status = con.getResponseCode();
|
||||||
|
String fileName = getFilename(con.getHeaderFields());
|
||||||
|
System.out.println("Response status is: "+status);
|
||||||
|
if(status==HttpStatus.SC_OK){
|
||||||
|
Path target = Files.createTempFile(FilenameUtils.getBaseName(fileName), "."+FilenameUtils.getExtension(fileName));
|
||||||
|
try (InputStream in = con.getInputStream()) {
|
||||||
|
Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
}
|
||||||
|
System.out.println("File downloaded at: "+target.toAbsolutePath());
|
||||||
|
}else{
|
||||||
|
System.out.println("\nNo file downoladed");
|
||||||
|
System.out.println("Response: \n"+getContentReponse(con.getInputStream()));
|
||||||
|
}
|
||||||
|
//con.setRequestProperty("Content-Type", "application/json");
|
||||||
|
//con.setConnectTimeout(5000);
|
||||||
|
//con.setReadTimeout(5000)
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
logger.error("Error: ",e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Storage hub test.
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void storageIDTest() throws Exception{
|
||||||
|
|
||||||
|
String storageID = "clZ2YmxTYytETzVLaHkwMjM3TmVETTFMb256YVRMS3lHbWJQNStIS0N6Yz0";
|
||||||
|
String url = String.format("%s/%s",URI_RESOLVER_SERVICE_ENDPOINT,storageID);
|
||||||
|
URL toURL;
|
||||||
|
int status;
|
||||||
|
try {
|
||||||
|
toURL = new URL(url);
|
||||||
|
HttpURLConnection con = (HttpURLConnection) toURL.openConnection();
|
||||||
|
con.setRequestMethod("GET");
|
||||||
|
con.connect();
|
||||||
|
status = con.getResponseCode();
|
||||||
|
//printHeaders(con.getHeaderFields());
|
||||||
|
String fileName = getFilename(con.getHeaderFields());
|
||||||
|
System.out.println("Response status is: "+status);
|
||||||
|
if(status==HttpStatus.SC_OK){
|
||||||
|
Path target = Files.createTempFile(FilenameUtils.getBaseName(fileName), "."+FilenameUtils.getExtension(fileName));
|
||||||
|
try (InputStream in = con.getInputStream()) {
|
||||||
|
Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
}
|
||||||
|
System.out.println("File downloaded at: "+target.toAbsolutePath());
|
||||||
|
}else{
|
||||||
|
System.out.println("\nNo file downoladed");
|
||||||
|
System.out.println("Response: \n"+getContentReponse(con.getInputStream()));
|
||||||
|
}
|
||||||
|
//con.setRequestProperty("Content-Type", "application/json");
|
||||||
|
//con.setConnectTimeout(5000);
|
||||||
|
//con.setReadTimeout(5000)
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
logger.error("Error: ",e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the content reponse.
|
||||||
|
*
|
||||||
|
* @param is the is
|
||||||
|
* @return the content reponse
|
||||||
|
*/
|
||||||
|
public static String getContentReponse(InputStream is){
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(is));
|
||||||
|
String inputLine;
|
||||||
|
StringBuffer content = new StringBuffer();
|
||||||
|
try {
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
content.append(inputLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally{
|
||||||
|
if(in!=null)
|
||||||
|
try {
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
//silent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return content.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void printHeaders(Map<String, List<String>> map){
|
||||||
|
|
||||||
|
System.out.println("Printing Response Header...");
|
||||||
|
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
|
||||||
|
System.out.println("Key : " + entry.getKey() + " ,Value : " + entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getFilename(Map<String, List<String>> map){
|
||||||
|
|
||||||
|
List<String> contentDispValue = map.get("content-disposition");
|
||||||
|
String fileName = "filename";
|
||||||
|
System.out.println("Printing content-disposition from Response Header...");
|
||||||
|
for (String value : contentDispValue) {
|
||||||
|
System.out.println(value);
|
||||||
|
int start = value.indexOf("\"");
|
||||||
|
if(start>=0){
|
||||||
|
int end = value.lastIndexOf("\"");
|
||||||
|
fileName = value.substring(start+1,end).trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Filename is: "+fileName);
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue