X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java index b2e845e..2db9f21 100644 --- a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java @@ -1,8 +1,6 @@ package net.sourceforge.phpeclipse.wiki.actions.mediawiki; -import java.io.IOException; import java.io.InputStream; -import java.io.StringReader; import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; @@ -27,15 +25,83 @@ public class MediaWikiConnector { * Get the text of a wikimedia Wiki-Description from en.wikipedia.org * */ - public static String getWikiText(String wikiDescriptor) { - return getWikiText(wikiDescriptor, null); + public static String getWikiRawText(String wikiDescriptor) { + return getWikiRawText(wikiDescriptor, null); } /** * Get the text of a wikimedia Wiki-Description * */ - public static String getWikiText(String wikiname, String urlStr) { + public static String getWikiRawText(String wikiname, String urlStr) { + // examples + // http://en.wikipedia.org/w/wiki.phtml?title=Main_Page&action=raw + // http://en.wikibooks.org/w/index.php?title=Programming:PHP:SQL_Injection&action=raw + // http://en.wikipedia.org/w/wiki.phtml?title=Talk:Division_by_zero&action=raw + HttpMethod method = null; + try { + if (urlStr == null) { + WikiEditorPlugin.getDefault().reportError("No Wikipedia URL configured", "URL-String == null"); + // urlStr = "http://en.wikipedia.org/w/wiki.phtml?title=" + wikiname + "&action=raw"; + } + URI uri = new URI(urlStr.toCharArray()); + + String schema = uri.getScheme(); + if ((schema == null) || (schema.equals(""))) { + schema = "http"; + } + 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"))); + } + + if (connection.isProxied() && connection.isSecure()) { + method = new ConnectMethod(method); + } + + method.execute(state, connection); + + if (method.getStatusCode() == HttpStatus.SC_OK) { + // get the wiki text now: + String wikiText = method.getResponseBodyAsString(); + return wikiText; + // wrong text not always complete + // InputStream stream = method.getResponseBodyAsStream(); + // int byteLen = stream.available(); + // int count = 1; + // byte[] buffer = new byte[byteLen]; + // int len = 0; + // stream.read(buffer, 0, byteLen); + // String wikiText = new String(buffer); + // return wikiText; + // System.out.println(wikiText); + } + } catch (Throwable e) { + WikiEditorPlugin.log(e); + WikiEditorPlugin.getDefault().reportError("Exception occured", e.getMessage() + "\nSee stacktrace in /.metadata/.log file."); + } finally { + if (method != null) { + method.releaseConnection(); + } + } + return null; // no success in getting wiki text + } + + public static String getWikiEditTextarea(String wikiname, String urlStr) { // examples // http://en.wikipedia.org/w/wiki.phtml?title=Main_Page&action=edit // http://en.wikibooks.org/w/wiki.phtml?title=Programming:PHP:SQL_Injection&action=edit @@ -44,10 +110,10 @@ public class MediaWikiConnector { try { if (urlStr == null) { urlStr = "http://en.wikipedia.org/w/wiki.phtml?title=" + wikiname + "&action=edit"; - } -// else { -// urlStr = urlStr + "?title=" + wikiname + "&action=edit"; -// } + } + // else { + // urlStr = urlStr + "?title=" + wikiname + "&action=edit"; + // } URI uri = new URI(urlStr.toCharArray()); String schema = uri.getScheme(); @@ -86,7 +152,7 @@ public class MediaWikiConnector { byte[] buffer = new byte[byteLen]; stream.read(buffer, 0, byteLen); String wikiText = new String(buffer); -// String wikiText = method.getResponseBodyAsString(); + // String wikiText = method.getResponseBodyAsString(); int start = wikiText.indexOf("", start + 1);