mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-06 16:50:39 +00:00
[FEATURE] Implemented API
This commit is contained in:
@@ -7,18 +7,6 @@ package org.parabot.core.io;
|
|||||||
* @author Everel
|
* @author Everel
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public interface ProgressListener {
|
public interface ProgressListener extends org.parabot.api.io.ProgressListener{
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when progress increased
|
|
||||||
* @param value
|
|
||||||
*/
|
|
||||||
public void onProgressUpdate(double value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates upload speed
|
|
||||||
* @param mbPerSecond
|
|
||||||
*/
|
|
||||||
public void updateDownloadSpeed(double mbPerSecond);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,327 +1,10 @@
|
|||||||
package org.parabot.environment.api.utils;
|
package org.parabot.environment.api.utils;
|
||||||
|
|
||||||
import org.json.simple.parser.JSONParser;
|
|
||||||
import org.parabot.core.io.ProgressListener;
|
|
||||||
import org.parabot.core.io.SizeInputStream;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.net.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A WebUtil class fetches data from an URL
|
* A WebUtil class fetches data from an URL
|
||||||
*
|
*
|
||||||
* @author Everel
|
* @author Everel
|
||||||
*/
|
*/
|
||||||
public class WebUtil {
|
public class WebUtil extends org.parabot.api.io.WebUtil {
|
||||||
|
|
||||||
private static JSONParser jsonParser;
|
|
||||||
|
|
||||||
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));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getContents(final String location, String parameters) throws MalformedURLException {
|
|
||||||
return getContents(new URL(location), parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get contents from URL
|
|
||||||
*
|
|
||||||
* @param url
|
|
||||||
* @return page contents
|
|
||||||
*/
|
|
||||||
public static String getContents(final URL url) {
|
|
||||||
return getContents(getConnection(url));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getContents(final URL url, final String parameters) {
|
|
||||||
return getContents(getConnection(url), parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
if (in != null) {
|
|
||||||
while ((line = in.readLine()) != null) {
|
|
||||||
builder.append(line);
|
|
||||||
}
|
|
||||||
in.close();
|
|
||||||
}
|
|
||||||
return builder.toString();
|
|
||||||
} catch (Throwable t) {
|
|
||||||
t.printStackTrace();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getContents(URLConnection urlConnection, String parameters) {
|
|
||||||
try {
|
|
||||||
urlConnection.setDoOutput(true);
|
|
||||||
OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());
|
|
||||||
wr.write(parameters);
|
|
||||||
wr.flush();
|
|
||||||
wr.close();
|
|
||||||
|
|
||||||
final BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
|
|
||||||
final StringBuilder builder = new StringBuilder();
|
|
||||||
String line;
|
|
||||||
while ((line = in.readLine()) != null) {
|
|
||||||
builder.append(line);
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static BufferedReader getReader(final URL url, String username, String password) {
|
|
||||||
try {
|
|
||||||
String data = URLEncoder.encode("username", "UTF-8") + "=" + username;
|
|
||||||
data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + password;
|
|
||||||
|
|
||||||
URLConnection connection = url.openConnection();
|
|
||||||
|
|
||||||
connection.setDoOutput(true);
|
|
||||||
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
|
|
||||||
wr.write(data);
|
|
||||||
wr.flush();
|
|
||||||
wr.close();
|
|
||||||
|
|
||||||
return new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
|
||||||
} catch (Throwable t) {
|
|
||||||
t.printStackTrace();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static URLConnection getConnection(final URL url, String username, String password) {
|
|
||||||
try {
|
|
||||||
String data = URLEncoder.encode("username", "UTF-8") + "=" + username;
|
|
||||||
data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + password;
|
|
||||||
|
|
||||||
URLConnection connection = url.openConnection();
|
|
||||||
|
|
||||||
connection.setDoOutput(true);
|
|
||||||
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
|
|
||||||
wr.write(data);
|
|
||||||
wr.flush();
|
|
||||||
wr.close();
|
|
||||||
|
|
||||||
return connection;
|
|
||||||
} 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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, String username, String password) {
|
|
||||||
try {
|
|
||||||
final URLConnection connection = getConnection(url, username, password);
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts file format to url format
|
|
||||||
*
|
|
||||||
* @param file
|
|
||||||
* @return url to file
|
|
||||||
*/
|
|
||||||
public static URL toURL(File file) {
|
|
||||||
try {
|
|
||||||
return file.toURI().toURL();
|
|
||||||
} catch (MalformedURLException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static JSONParser getJsonParser() {
|
|
||||||
if (jsonParser == null) {
|
|
||||||
jsonParser = new JSONParser();
|
|
||||||
}
|
|
||||||
return jsonParser;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static URI appendUri(String uri, String appendQuery) {
|
|
||||||
try {
|
|
||||||
URI oldUri = new URI(uri);
|
|
||||||
|
|
||||||
String newQuery = oldUri.getQuery();
|
|
||||||
if (newQuery == null) {
|
|
||||||
newQuery = appendQuery;
|
|
||||||
} else {
|
|
||||||
newQuery += "&" + appendQuery;
|
|
||||||
}
|
|
||||||
return new URI(oldUri.getScheme(), oldUri.getAuthority(),
|
|
||||||
oldUri.getPath(), newQuery, oldUri.getFragment());
|
|
||||||
} catch (URISyntaxException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user