Mercurial > hg4j
comparison cmdline/org/tmatesoft/hg/console/Remote.java @ 177:e10225daface
Use POST for long between queries. Batch between queries (pass multiple pairs to a server) to minimize number thereof
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Sat, 02 Apr 2011 23:05:28 +0200 |
| parents | 2c3e96674e2a |
| children | 62665d8f0686 |
comparison
equal
deleted
inserted
replaced
| 176:a8df7162ec75 | 177:e10225daface |
|---|---|
| 18 | 18 |
| 19 import java.io.File; | 19 import java.io.File; |
| 20 import java.io.FileOutputStream; | 20 import java.io.FileOutputStream; |
| 21 import java.io.IOException; | 21 import java.io.IOException; |
| 22 import java.io.InputStream; | 22 import java.io.InputStream; |
| 23 import java.io.OutputStream; | |
| 24 import java.net.HttpURLConnection; | |
| 23 import java.net.URL; | 25 import java.net.URL; |
| 24 import java.security.cert.CertificateException; | 26 import java.security.cert.CertificateException; |
| 25 import java.security.cert.X509Certificate; | 27 import java.security.cert.X509Certificate; |
| 26 import java.util.List; | 28 import java.util.List; |
| 27 import java.util.Map; | 29 import java.util.Map; |
| 91 public static void main(String[] args) throws Exception { | 93 public static void main(String[] args) throws Exception { |
| 92 ConfigFile cfg = new Internals().newConfigFile(); | 94 ConfigFile cfg = new Internals().newConfigFile(); |
| 93 cfg.addLocation(new File(System.getProperty("user.home"), ".hgrc")); | 95 cfg.addLocation(new File(System.getProperty("user.home"), ".hgrc")); |
| 94 String svnkitServer = cfg.getSection("paths").get("svnkit"); | 96 String svnkitServer = cfg.getSection("paths").get("svnkit"); |
| 95 // URL url = new URL(svnkitServer + "?cmd=branches&nodes=30bd389788464287cee22ccff54c330a4b715de5"); | 97 // URL url = new URL(svnkitServer + "?cmd=branches&nodes=30bd389788464287cee22ccff54c330a4b715de5"); |
| 96 URL url = new URL(svnkitServer + "?cmd=between&pairs=71ddbf8603e8e09d54ac9c5fe4bb5ae824589f1d-8c8e3f372fa1fbfcf92b004b6f2ada2dbaf60028"); | 98 URL url = new URL(svnkitServer + "?cmd=between"); |
| 97 // URL url = new URL(svnkitServer + "?cmd=changegroup&roots=" + Nodeid.NULL.toString()); | 99 // URL url = new URL(svnkitServer + "?cmd=changegroup&roots=" + Nodeid.NULL.toString()); |
| 98 // URL url = new URL("http://localhost:8000/" + "?cmd=stream_out"); | 100 // URL url = new URL("http://localhost:8000/" + "?cmd=between"); |
| 99 // URL url = new URL(svnkitServer + "?cmd=stream_out"); | 101 // URL url = new URL(svnkitServer + "?cmd=stream_out"); |
| 100 | 102 |
| 101 SSLContext sslContext = SSLContext.getInstance("SSL"); | 103 SSLContext sslContext = SSLContext.getInstance("SSL"); |
| 102 class TrustEveryone implements X509TrustManager { | 104 class TrustEveryone implements X509TrustManager { |
| 103 public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { | 105 public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { |
| 116 String authInfo = tempNode.get("xxx", null); | 118 String authInfo = tempNode.get("xxx", null); |
| 117 tempNode.removeNode(); | 119 tempNode.removeNode(); |
| 118 // | 120 // |
| 119 sslContext.init(null, new TrustManager[] { new TrustEveryone() }, null); | 121 sslContext.init(null, new TrustManager[] { new TrustEveryone() }, null); |
| 120 HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); | 122 HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); |
| 121 urlConnection.addRequestProperty("User-Agent", "jhg/0.1.0"); | 123 // HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); |
| 122 urlConnection.addRequestProperty("Accept", "application/mercurial-0.1"); | 124 urlConnection.setRequestProperty("User-Agent", "jhg/0.1.0"); |
| 123 urlConnection.addRequestProperty("Authorization", "Basic " + authInfo); | 125 urlConnection.setRequestProperty("Accept", "application/mercurial-0.1"); |
| 126 urlConnection.setRequestProperty("Authorization", "Basic " + authInfo); | |
| 124 urlConnection.setSSLSocketFactory(sslContext.getSocketFactory()); | 127 urlConnection.setSSLSocketFactory(sslContext.getSocketFactory()); |
| 125 urlConnection.connect(); | 128 byte[] body = "pairs=30bd389788464287cee22ccff54c330a4b715de5-dbd663faec1f0175619cf7668bddc6350548b8d6".getBytes(); |
| 129 urlConnection.setRequestMethod("POST"); | |
| 130 urlConnection.setRequestProperty("Content-Length", String.valueOf(body.length)); | |
| 131 urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); | |
| 132 urlConnection.setDoOutput(true); | |
| 133 urlConnection.setDoInput(true); | |
| 134 // urlConnection.connect(); | |
| 135 OutputStream os = urlConnection.getOutputStream(); | |
| 136 os.write(body); | |
| 137 os.flush(); | |
| 138 os.close(); | |
| 126 System.out.println("Query:" + url.getQuery()); | 139 System.out.println("Query:" + url.getQuery()); |
| 127 System.out.println("Response headers:"); | 140 System.out.println("Response headers:"); |
| 128 final Map<String, List<String>> headerFields = urlConnection.getHeaderFields(); | 141 final Map<String, List<String>> headerFields = urlConnection.getHeaderFields(); |
| 129 for (String s : headerFields.keySet()) { | 142 for (String s : headerFields.keySet()) { |
| 130 System.out.printf("%s: %s\n", s, urlConnection.getHeaderField(s)); | 143 System.out.printf("%s: %s\n", s, urlConnection.getHeaderField(s)); |
