import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin;
import org.apache.commons.httpclient.ConnectMethod;
+import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpConnection;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.util.EncodingUtil;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Preferences;
/**
* This class gets the wikitext from a wikipedia edit page
manager.setConnectionStaleCheckingEnabled(true);
// open the conversation
client = new HttpClient(manager);
+ setHTTPClientParameters(client);
//client.State.CookiePolicy = CookiePolicy.COMPATIBILITY;
//client.HostConfiguration.setHost(LOGON_SITE, LOGON_PORT, "http");
}
&& responseBody.matches(config.getLoginNoUser())) {
result = false;
if (responseBody.matches(config.getLoginNoUser())) {
- throw new UnexpectedAnswerException("login not successful: wrong user name: "+user);
+ throw new UnexpectedAnswerException("login not successful: wrong user name: " + user);
} else if (responseBody.matches(config.getLoginWrongPw())) {
- throw new UnexpectedAnswerException("login not successful: wrong password for user: "+user);
+ throw new UnexpectedAnswerException("login not successful: wrong password for user: " + user);
} else {
throw new UnexpectedAnswerException("logout not successful: responseCode == 200");
}
return result;
}
- public ArrayList loadXML(IWikipedia config, String actionURL, String pages) throws UnexpectedAnswerException, MethodException , InterruptedException{
- storeThrottle.delay();
+ public ArrayList loadXML(IWikipedia config, String actionURL, String pages) throws UnexpectedAnswerException, MethodException,
+ InterruptedException {
+ storeThrottle.delay();
PostMethod method = new PostMethod(actionURL);
method.setFollowRedirects(false);
method.addRequestHeader("User-Agent", userAgent);
method.addRequestHeader("Content-Type", PostMethod.FORM_URL_ENCODED_CONTENT_TYPE + "; charset=" + config.getCharSet());
-
- NameValuePair[] params = new NameValuePair[] {
- new NameValuePair("pages", pages),
+
+ NameValuePair[] params = new NameValuePair[] {
+ new NameValuePair("pages", pages),
new NameValuePair("curonly", "X"),
new NameValuePair("action", "submit") };
method.addParameters(params);
} else {
throw new UnexpectedAnswerException("XML load not successful: expected 200 OK, got " + method.getStatusLine());
}
- } catch(CoreException e) {
+ } catch (CoreException e) {
throw new UnexpectedAnswerException("XML load method failed" + e.getMessage());
} catch (HttpException e) {
throw new MethodException("XML load method failed", e);
storeThrottle.delay();
PostMethod method = new PostMethod(actionUrl);
+
method.setFollowRedirects(false);
method.addRequestHeader("User-Agent", userAgent);
method.addRequestHeader("Content-Type", PostMethod.FORM_URL_ENCODED_CONTENT_TYPE + "; charset=" + config.getCharSet());
}
Protocol protocol = Protocol.getProtocol(schema);
- HttpState state = new HttpState();
-
method = new GetMethod(uri.toString());
String host = uri.getHost();
int port = uri.getPort();
HttpConnection connection = new HttpConnection(host, port, protocol);
- // timeout after 30 seconds
- connection.setConnectionTimeout(30000);
- connection.setProxyHost(System.getProperty("http.proxyHost"));
- connection.setProxyPort(Integer.parseInt(System.getProperty("http.proxyPort", "80")));
-
- if (System.getProperty("http.proxyUserName") != null) {
- state.setProxyCredentials(null, null, new UsernamePasswordCredentials(System.getProperty("http.proxyUserName"), System
- .getProperty("http.proxyPassword")));
- }
+ HttpState state = setHTTPParameters(connection);
if (connection.isProxied() && connection.isSecure()) {
method = new ConnectMethod(method);
// }
// return null; // no success in getting wiki text
// }
-
+
+ /**
+ * @param state
+ * @param connection
+ */
+ private HttpState setHTTPParameters(HttpConnection connection) {
+ HttpState state = new HttpState();
+ Preferences prefs = WikiEditorPlugin.getDefault().getPluginPreferences();
+ String timeout = prefs.getString(WikiEditorPlugin.HTTP_TIMEOUT);
+ String proxyHost = prefs.getString(WikiEditorPlugin.HTTP_PROXYHOST);
+
+ try {
+ // timeout after xx seconds
+ connection.setConnectionTimeout(Integer.parseInt(timeout));
+
+ if (proxyHost.length() > 0) {
+ String proxyPort = prefs.getString(WikiEditorPlugin.HTTP_PROXYPORT);
+ connection.setProxyHost(proxyHost);
+ connection.setProxyPort(Integer.parseInt(proxyPort));
+
+ String proxyUserName = prefs.getString(WikiEditorPlugin.HTTP_PROXYUSERNAME);
+ if (proxyUserName.length() > 0) {
+ String proxyPassWord = prefs.getString(WikiEditorPlugin.HTTP_PROXYPASSWORD);
+ state.setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUserName, proxyPassWord));
+ }
+ }
+
+ } catch (Exception e) {
+
+ }
+ return state;
+ }
+
+ private void setHTTPClientParameters(HttpClient client) {
+
+ Preferences prefs = WikiEditorPlugin.getDefault().getPluginPreferences();
+ String timeout = prefs.getString(WikiEditorPlugin.HTTP_TIMEOUT);
+ String proxyHost = prefs.getString(WikiEditorPlugin.HTTP_PROXYHOST);
+
+ try {
+ // timeout after xx seconds
+ client.setConnectionTimeout(Integer.parseInt(timeout));
+
+ if (proxyHost.length() > 0) {
+ String proxyPort = prefs.getString(WikiEditorPlugin.HTTP_PROXYPORT);
+ HostConfiguration conf = new HostConfiguration();
+ client.setHostConfiguration(conf);
+ conf.setProxy(proxyHost, Integer.parseInt(proxyPort));
+
+ String proxyUserName = prefs.getString(WikiEditorPlugin.HTTP_PROXYUSERNAME);
+ if (proxyUserName.length() > 0) {
+ HttpState state = new HttpState();
+ String proxyPassWord = prefs.getString(WikiEditorPlugin.HTTP_PROXYPASSWORD);
+ state.setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUserName, proxyPassWord));
+ client.setState(state);
+ }
+ }
+
+ } catch (Exception e) {
+
+ }
+
+ }
public static void main(String[] args) {
MediaWikiConnector mwc = new MediaWikiConnector();
try {
- IWikipedia wp = null;
+ IWikipedia wp = null;
ArrayList list = mwc.loadXML(wp, "http://www.plog4u.de/wiki/index.php/Spezial:Export", "Mechanisches Fernsehen\nSynästhesie");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
- }
+ }
}
}
package net.sourceforge.phpeclipse.wiki.editor;
import java.io.IOException;
+import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import java.util.MissingResourceException;
+import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import net.sourceforge.phpeclipse.wiki.actions.mediawiki.config.IWikipedia;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IPluginDescriptor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.MessageDialog;
public final static String AUTOMATICALLY_CREATED = "<!-- automatically created -->";
public final static String WP_EXTENSION = "wp";
+
public final static String XML_START_1 = "<?xml version=\"1.0\" encoding=\"";
- public final static String XML_START_2 = "\" ?>\n"
- + "<mediawiki version=\"0.1\">\n";
- public final static String XML_END ="\n</mediawiki>";
+
+ public final static String XML_START_2 = "\" ?>\n" + "<mediawiki version=\"0.1\">\n";
+
+ public final static String XML_END = "\n</mediawiki>";
+
public static final String PREFIX_LOAD = "Load ";
public static final String PREFIX_STORE = "Store ";
public final static String LOCAL_CSS_URL = "__local_css_url";
public final static String EXPORT_CSS_URL = "__export_css_url";
-
+
public final static String PREF_STRING_CONFIGURATIONS = "__configurations4";
-
+
public final static String CONSOLE_OUTPUT = "__console_output";
+ public final static String HTTP_TIMEOUT = "http.timeout";
+
+ public final static String HTTP_PROXYHOST = "http.proxyHost";
+
+ public final static String HTTP_PROXYPORT = "http.proxyPort";
+
+ public final static String HTTP_PROXYUSERNAME = "http.proxyUserName";
+
+ public final static String HTTP_PROXYPASSWORD = "http.proxyPassword";
+
public final static String CONFIG_MEMENTO = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<configurations>"
+ "<config name=\"Google Search\" type-id=\"HTTP Query\" url=\"http://www.google.com/search?q=$text.selection\"/>"
+ "<config name=\"Koders.com Search\" type-id=\"HTTP Query\" url=\"http://koders.com/?s=$text.selection\"/>"
return fTemplateStore;
}
+ private static boolean isDefined(String test) {
+ if (test != null && test.length() > 0) {
+ for (int i = 0; i < test.length(); i++) {
+ if (!Character.isWhitespace(test.charAt(i))) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
/*
* (non-Javadoc)
*
protected void initializeDefaultPreferences(IPreferenceStore store) {
store.setDefault(PREF_STRING_CONFIGURATIONS, CONFIG_MEMENTO);
store.setDefault(CONSOLE_OUTPUT, "true");
+
+ String operatingSystem = Platform.getOS();
+ // operatingSystem ==> maxosx, linux, solaris, win32,...
+ try {
+ InputStream is = getDefault().openStream(new Path("prefs/default_" + operatingSystem + ".properties"));
+ PropertyResourceBundle resourceBundle = new PropertyResourceBundle(is);
+
+ String key = HTTP_TIMEOUT;
+ try {
+ String timeout = resourceBundle.getString(key);
+ int val = Integer.parseInt(timeout);
+ if (val > 0) {
+ val *= 1000;
+ } else {
+ val = 30000;
+ }
+ store.setDefault(key, Integer.toString(val));
+ } catch (Exception e) {
+ store.setDefault(key, "30000"); // 30 seconds timeout
+ }
+
+ key = HTTP_PROXYHOST;
+ try {
+ String proxyHost = resourceBundle.getString(key);
+ if (isDefined(proxyHost)) {
+ store.setDefault(key, proxyHost);
+ } else {
+ store.setDefault(key, System.getProperty(key, ""));
+ }
+ } catch (Exception e) {
+ store.setDefault(key, System.getProperty(key, ""));
+ }
+
+ key = HTTP_PROXYPORT;
+ try {
+ String proxyPort = resourceBundle.getString(key);
+ if (isDefined(proxyPort)) {
+ // check for integer parse exception:
+ Integer.parseInt(proxyPort);
+ store.setDefault(key, proxyPort);
+ } else {
+ store.setDefault(key, System.getProperty(key, "80"));
+ }
+ } catch (Exception e) {
+ store.setDefault(key, System.getProperty(key, "80"));
+ }
+
+ key = HTTP_PROXYUSERNAME;
+ try {
+ String proxyUserName = resourceBundle.getString(key);
+ if (isDefined(proxyUserName)) {
+ store.setDefault(key, proxyUserName);
+ } else {
+ store.setDefault(key, System.getProperty(key, ""));
+ }
+ } catch (Exception e) {
+ store.setDefault(key, System.getProperty(key, ""));
+ }
+
+ key = HTTP_PROXYPASSWORD;
+ try {
+ String proxyPassWord = resourceBundle.getString(key);
+ if (isDefined(proxyPassWord)) {
+ store.setDefault(key, proxyPassWord);
+ } else {
+ store.setDefault(key, System.getProperty(key, ""));
+ }
+ } catch (Exception e) {
+ store.setDefault(key, System.getProperty(key, ""));
+ }
+
+ } catch (Exception e) {
+ }
+
}
/*
public void reportError(String title, String message) {
try {
-// Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ // Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
MessageDialog.openError(null, title, message);
} catch (RuntimeException e) {
log(e.getLocalizedMessage(), e);