From: jprocter Date: Sat, 17 Nov 2012 20:09:15 +0000 (+0000) Subject: simple HTTP multipart entity poster - may not be useful X-Git-Tag: Jalview_2_9~265^2~16 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=3b94f01f4edf56896ae3b5f0ce6cb4f1996e7bbc;p=jalview.git simple HTTP multipart entity poster - may not be useful --- diff --git a/src/jalview/ws/HttpClientUtils.java b/src/jalview/ws/HttpClientUtils.java index 01892e7..740b669 100644 --- a/src/jalview/ws/HttpClientUtils.java +++ b/src/jalview/ws/HttpClientUtils.java @@ -18,7 +18,9 @@ package jalview.ws; import java.io.BufferedReader; +import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; @@ -29,6 +31,11 @@ import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MultipartEntity; +import org.apache.http.entity.mime.content.FileBody; +import org.apache.http.entity.mime.content.InputStreamBody; +import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; /** @@ -72,4 +79,64 @@ public class HttpClientUtils } } + public static BufferedReader doHttpMpartFilePost(String postUrl, + List vals, String fparm,File file, String mtype) throws ClientProtocolException, + IOException + { + HttpClient httpclient = new DefaultHttpClient(); + HttpPost httppost = new HttpPost(postUrl); + MultipartEntity mpe = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); + for (NameValuePair nvp:vals) + { + mpe.addPart(nvp.getName(), new StringBody(nvp.getValue())); + } + + FileBody fb = new FileBody(file, mtype!=null ? mtype : "application/octet-stream"); + mpe.addPart(fparm, fb); + UrlEncodedFormEntity ue = new UrlEncodedFormEntity(vals, "UTF-8"); + httppost.setEntity(ue); + HttpResponse response = httpclient.execute(httppost); + HttpEntity resEntity = response.getEntity(); + + if (resEntity != null) + { + BufferedReader r = new BufferedReader(new InputStreamReader( + resEntity.getContent())); + return r; + } + else + { + return null; + } + } + public static BufferedReader doHttpMpartInputstreamPost(String postUrl, + List vals, String fparm,String fname, InputStream is, String mtype) throws ClientProtocolException, + IOException + { + HttpClient httpclient = new DefaultHttpClient(); + HttpPost httppost = new HttpPost(postUrl); + MultipartEntity mpe = new MultipartEntity(HttpMultipartMode.STRICT); + for (NameValuePair nvp:vals) + { + mpe.addPart(nvp.getName(), new StringBody(nvp.getValue())); + } + + InputStreamBody fb = (mtype!=null) ? new InputStreamBody(is, fname, mtype) : new InputStreamBody(is, fname); + mpe.addPart(fparm, fb); + UrlEncodedFormEntity ue = new UrlEncodedFormEntity(vals, "UTF-8"); + httppost.setEntity(ue); + HttpResponse response = httpclient.execute(httppost); + HttpEntity resEntity = response.getEntity(); + + if (resEntity != null) + { + BufferedReader r = new BufferedReader(new InputStreamReader( + resEntity.getContent())); + return r; + } + else + { + return null; + } + } } diff --git a/test/jalview/ws/PDBSequenceFetcherTest.java b/test/jalview/ws/PDBSequenceFetcherTest.java new file mode 100644 index 0000000..f5913e6 --- /dev/null +++ b/test/jalview/ws/PDBSequenceFetcherTest.java @@ -0,0 +1,37 @@ +package jalview.ws; + +import static org.junit.Assert.*; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.SequenceI; +import jalview.ws.seqfetcher.DbSourceProxy; + +import java.util.List; + +import org.junit.Before; +import org.junit.Test; + +public class PDBSequenceFetcherTest +{ + + @Before + public void setUp() throws Exception + { + } + + @Test + public void testRnaSeqRetrieve() throws Exception + { + List sps = new SequenceFetcher(false) + .getSourceProxy("PDB"); + AlignmentI response = sps.get(0).getSequenceRecords("2GIS"); + assertTrue(response!=null); + assertTrue(response.getHeight()==1); + for (SequenceI sq:response.getSequences()) + { + assertTrue("No annotation transfered to sequence.",sq.getAnnotation().length>0); + assertTrue("No PDBEntry on sequence.",sq.getPDBId().size()>0); + assertTrue("No RNA annotation on sequence.", sq.getRNA()!=null); + } + } + +}