/**
* Copyright (C) 2015 BITPlan GmbH
*
* Pater-Delp-Str. 1
* D-47877 Willich-Schiefbahn
*
* http://www.bitplan.com
*
*/
package com.bitplan.mediawiki.japi;
import static org.junit.Assert.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import org.apache.commons.io.FileUtils;
import org.junit.Ignore;
import org.junit.Test;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.client.apache.ApacheHttpClient;
/**
* test CSV access for test code
* @author wf
*
*/
public class TestGetCSV extends APITestbase {
private ApacheHttpClient client;
/**
* get a String from a given URL
* @param urlString
* @return
*/
public String getStringFromUrl(String urlString) {
client = ApacheHttpClient.create();
WebResource webResource = client.resource(urlString);
ClientResponse response = webResource.get(ClientResponse.class);
if (response.getStatus() != 200) {
throw new RuntimeException("HTTP error code : " + response.getStatus());
}
String result=response.getEntity(String.class);
return result;
}
/**
* get the a CSV File from the given urlString
* http://stackoverflow.com/questions/27224870/getting-http-400-error-when-trying-to-download-file-using-jersey-client
*
* @param urlString
* @param csvFile
* @throws IOException
*/
public void getCSVAsFile(String urlString, File csvFile) throws IOException {
client = ApacheHttpClient.create();
WebResource webResource = client.resource(urlString);
WebResource.Builder wb = webResource
.accept("application/json,application/pdf,text/plain,image/jpeg,application/xml,application/vnd.ms-excel");
ClientResponse response = wb.get(ClientResponse.class);
if (response.getStatus() != 200) {
throw new RuntimeException("HTTP error code : " + response.getStatus());
}
InputStream input = response.getEntity(InputStream.class);
byte[] byteArray = org.apache.commons.io.IOUtils.toByteArray(input);
FileOutputStream fos = new FileOutputStream(csvFile);
fos.write(byteArray);
fos.flush();
fos.close();
}
@Test
public void testSomething() {
// make JUnit happy
}
// FIXME this is issue #2
@Ignore
public void testGetCSV() throws IOException {
boolean debug=false;
String urlString="http://mediawiki-japi.bitplan.com/mediawiki-japi/index.php/Special:Ask/-5B-5BCategory:ExampleWiki-5D-5D-20-5B-5Bsiteurl::%2B-5D-5D/-3FSiteurl/-3FWikiid/-3FMwversion/mainlabel%3Dwiki/format%3Dcsv/sep%3D;/offset%3D0";
File csvFile=new File("/tmp/ExampleWikis.csv");
getCSVAsFile(urlString, csvFile);
String csv=FileUtils.readFileToString(csvFile);
if (debug)
LOGGER.log(Level.INFO, csv);
assertTrue(csv.contains("http://www.waihekepedia.org"));
csv=this.getStringFromUrl(urlString);
assertTrue(csv.contains("Www.en.wikipedia.org;http://www.en.wikipedia.org;en_wikipedia_org;1.25wmf12"));
if (debug)
LOGGER.log(Level.INFO, csv);
}
}