package org.sinrel.engine.library;
import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.UnknownHostException;
import org.apache.commons.codec.binary.StringUtils;
import org.sinrel.engine.Engine;
public final class NetManager {
/**
* Открывает браузером по-умолчанию принимаемою ссылку
*
* @param uri обьект класса {@link URI} содержащий ссылку для перехода
* @throws IOException
*/
public static final void openLink(URI uri) throws IOException {
Desktop.getDesktop().browse(uri);
}
/**
* Открывает браузером по-умолчанию принимаемою ссылку
*
* @param address строка содержащая ссылку для перехода
* @throws IOException
*/
public static final void openLink( String address ) throws MalformedURLException, IOException, URISyntaxException {
Desktop.getDesktop().browse( new URL ( address ).toURI() );
}
/**
* Проверяет наличие соединения с интернетом. При имеющимся таковом
* возвращает true, в ином случае false
*
* @return boolean
*/
public static final boolean isOnline() {
try {
InetAddress.getByName("sinrel.org");
return true;
}catch( UnknownHostException e ) {
try {
InetAddress.getByName("google.com");
return true;
}catch( UnknownHostException ex ) {
return false;
}
}
}
/**
* @param data Строка с данными
* @param requestURL Ссылка на получателя
* @return Возвращает строку содержащую ответ сервера. Если отправить запрос
* или получить ответ не удалось, возвращается строка BAD_CONNECTION
* @throws IOException
*/
public static final String sendPostRequest(String requestURL, String data) throws IOException {
return sendPostRequest(new URL(requestURL), data);
}
/**
* @param requestURL Ссылка на получателя
* @param data POST-данные
* @return Возвращает строку содержащую ответ сервера. Если отправить запрос
* или получить ответ не удалось, возвращается строка BAD_CONNECTION
* @throws IOException
*/
public static final String sendPostRequest(URL requestURL, String data) throws IOException {
byte[] bytes = StringUtils.getBytesUtf8(data);
HttpURLConnection conn = (HttpURLConnection) requestURL.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", Integer.toString(bytes.length));
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
OutputStream wr = conn.getOutputStream();
wr.write(bytes);
wr.flush();
wr.close();
StringBuffer s = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
s.append(line);
}
reader.close();
return s.toString();
}
/**
* @param engine Экземпляр класса {@link Engine}
* @return Возвращает ссылку на engine.php
* @throws MalformedURLException
*/
public static final String getEngineLink( Engine engine ) throws MalformedURLException {
URL url;
if (!engine.getSettings().getServerPath().equalsIgnoreCase("")) {
url = new URL("http://" + engine.getSettings().getDomain()
+ "/" + engine.getSettings().getServerPath() + "/"
+ "engine.php");
} else {
url = new URL("http://" + engine.getSettings().getDomain()
+ "/" + "engine.php");
}
return url.toString();
}
/**
* @param engine Экземпляр класса {@link Engine}
* @return Возвращает ссылку на директорию с engine.php
* @throws MalformedURLException
*/
public static final String getServerLink( Engine engine ) throws MalformedURLException {
URL url;
if (!engine.getSettings().getServerPath().equalsIgnoreCase("")) {
url = new URL("http://" + engine.getSettings().getDomain() + "/" + engine.getSettings().getServerPath() + "/");
} else {
url = new URL("http://" + engine.getSettings().getDomain() + "/");
}
return url.toString();
}
/**
* @param engine Экземпляр класса {@link Engine}
* @param clientName Название клиента
* @throws MalformedURLException
*/
public static final URL getClientBinaryLink( Engine engine, String clientName ) throws MalformedURLException {
URL url = new URL( getServerLink( engine ).concat( "clients/".concat( clientName.concat( "/bin/" ) ) ) );
return url;
}
}