mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-03 00:37:55 +00:00
190 lines
4.3 KiB
Java
190 lines
4.3 KiB
Java
package org.parabot.environment.api.utils;
|
|
|
|
import java.io.BufferedInputStream;
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.net.MalformedURLException;
|
|
import java.net.URL;
|
|
import java.net.URLConnection;
|
|
|
|
import org.parabot.core.io.ProgressListener;
|
|
import org.parabot.core.io.SizeInputStream;
|
|
|
|
/**
|
|
*
|
|
* A WebUtil class fetches data from an URL
|
|
*
|
|
* @author Everel
|
|
*
|
|
*/
|
|
public class WebUtil {
|
|
private static String agent = "Mozilla/5.0 (Wind0ws NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1";
|
|
|
|
/**
|
|
* Agent to set at a URL connection
|
|
*
|
|
* @param userAgent
|
|
*/
|
|
public static void setUserAgent(final String userAgent) {
|
|
agent = userAgent;
|
|
}
|
|
|
|
/**
|
|
* Gets useragent
|
|
*
|
|
* @return useragent
|
|
*/
|
|
public static String getUserAgent() {
|
|
return agent;
|
|
}
|
|
|
|
/**
|
|
* Fetches content of a page
|
|
*
|
|
* @param location
|
|
* @return contents of page
|
|
* @throws MalformedURLException
|
|
*/
|
|
public static String getContents(final String location)
|
|
throws MalformedURLException {
|
|
return getContents(new URL(location));
|
|
}
|
|
|
|
/**
|
|
* Get contents from URL
|
|
*
|
|
* @param url
|
|
* @return page contents
|
|
*/
|
|
public static String getContents(final URL url) {
|
|
return getContents(getConnection(url));
|
|
}
|
|
|
|
/**
|
|
* Gets contents from URLConnection
|
|
*
|
|
* @param urlConnection
|
|
* @return page contents
|
|
*/
|
|
public static String getContents(URLConnection urlConnection) {
|
|
try {
|
|
final BufferedReader in = getReader(urlConnection);
|
|
final StringBuilder builder = new StringBuilder();
|
|
String line;
|
|
while ((line = in.readLine()) != null) {
|
|
builder.append(line);
|
|
}
|
|
in.close();
|
|
return builder.toString();
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Gets buffered reader from string url
|
|
*
|
|
* @param url
|
|
* @return bufferedreader
|
|
*/
|
|
public static BufferedReader getReader(final String url) {
|
|
try {
|
|
return getReader(new URL(url));
|
|
} catch (MalformedURLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Gets BufferedReader from URL
|
|
*
|
|
* @param url
|
|
* @return BufferedReader from URL
|
|
*/
|
|
public static BufferedReader getReader(final URL url) {
|
|
return getReader(getConnection(url));
|
|
}
|
|
|
|
public static BufferedReader getReader(final URLConnection urlConnection) {
|
|
try {
|
|
return new BufferedReader(new InputStreamReader(
|
|
urlConnection.getInputStream()));
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Gets inputstream from url
|
|
*
|
|
* @param url
|
|
* @return inputstream from url
|
|
*/
|
|
public static InputStream getInputStream(final URL url) {
|
|
final URLConnection con = getConnection(url);
|
|
try {
|
|
return con.getInputStream();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Opens a connection
|
|
*
|
|
* @param url
|
|
* @return URLConnection to URL
|
|
*/
|
|
public static URLConnection getConnection(final URL url) {
|
|
try {
|
|
final URLConnection con = url.openConnection();
|
|
con.setRequestProperty("User-Agent", agent);
|
|
return con;
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Downloads a file on the internet
|
|
* @param url
|
|
* @param destination
|
|
* @param listener
|
|
*/
|
|
public static void downloadFile(final URL url, final File destination,
|
|
final ProgressListener listener) {
|
|
try {
|
|
final URLConnection connection = getConnection(url);
|
|
int size = connection.getContentLength();
|
|
SizeInputStream sizeInputStream = new SizeInputStream(
|
|
connection.getInputStream(), size, listener);
|
|
BufferedInputStream in = new BufferedInputStream(sizeInputStream);
|
|
FileOutputStream fileOut = new FileOutputStream(destination);
|
|
try {
|
|
byte data[] = new byte[1024];
|
|
int count;
|
|
while ((count = in.read(data, 0, 1024)) != -1) {
|
|
fileOut.write(data, 0, count);
|
|
}
|
|
} finally {
|
|
if (in != null)
|
|
in.close();
|
|
if (fileOut != null)
|
|
fileOut.close();
|
|
}
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
}
|
|
|
|
}
|