org.forester.ws.wabi.RestUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of forester Show documentation
Show all versions of forester Show documentation
Applications and software libraries for evolutionary biology and comparative genomics research
The newest version!
// $Id:
// forester -- software libraries and applications
// for genomics and evolutionary biology research.
//
// Copyright (C) 2010 Christian M Zmasek
// Copyright (C) 2010 Sanford-Burnham Medical Research Institute
// All rights reserved
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
//
// Contact: phylosoft @ gmail . com
// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
package org.forester.ws.wabi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.List;
/**
*
* This is to access the Web API for Biology (WABI) at DDBJ.
* See: http://xml.nig.ac.jp/
*
*/
public final class RestUtil {
final static String LIST_SEPARATOR = "%0A";
final static String LINE_SEPARATOR = "\n";
private final static String BASE_URL = "http://xml.nig.ac.jp/rest/Invoke";
private final static String SERVICE = "service";
private final static String METHOD = "method";
private final static String URL_ENC = "UTF-8";
static String encode( final String str ) throws UnsupportedEncodingException {
return URLEncoder.encode( str.trim(), URL_ENC );
}
/**
* Method for access REST
* @param query
* service name method name and parameter for executing rest
* @return execution result
* @throws IOException
*/
public static String getResult( final String query ) throws IOException {
final URL url = new URL( BASE_URL );
final URLConnection urlc = url.openConnection();
urlc.setDoOutput( true );
urlc.setAllowUserInteraction( false );
final PrintStream ps = new PrintStream( urlc.getOutputStream() );
//System.out.println( "query: " + query );
ps.print( query.trim() );
ps.close();
final BufferedReader br = new BufferedReader( new InputStreamReader( urlc.getInputStream() ) );
final StringBuffer sb = new StringBuffer();
String line = null;
while ( ( line = br.readLine() ) != null ) {
sb.append( line + LINE_SEPARATOR );
}
br.close();
return sb.toString().trim();
}
public static String getResult( final String service_name, final String method_name, final String parameters )
throws IOException {
final String service = SERVICE + '=' + encode( service_name );
final String method = METHOD + '=' + encode( method_name );
return getResult( service + '&' + method + '&' + parameters.trim() );
}
static String listAsString( final List l ) throws UnsupportedEncodingException {
final StringBuffer sb = new StringBuffer();
for( final String s : l ) {
if ( sb.length() > 0 ) {
sb.append( LIST_SEPARATOR );
}
sb.append( encode( s ) );
}
return sb.toString();
}
}