[tor-commits] [metrics-lib/master] Implements task-20039: DescriptorIndexCollector now accepts a URL path.
karsten at torproject.org
karsten at torproject.org
Wed Oct 19 14:54:08 UTC 2016
commit 421f38eeb95ba86d8b2f3007f62a111dc090d991
Author: iwakeh <iwakeh at torproject.org>
Date: Wed Oct 19 12:12:06 2016 +0200
Implements task-20039: DescriptorIndexCollector now accepts a URL path.
If only a base URL is given, try to retrieve 'index/index.json' from
the given host URL.
---
.../descriptor/index/DescriptorIndexCollector.java | 23 +++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java b/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java
index 4f62be6..d32f811 100644
--- a/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java
+++ b/src/main/java/org/torproject/descriptor/index/DescriptorIndexCollector.java
@@ -33,12 +33,14 @@ public class DescriptorIndexCollector implements DescriptorCollector {
.getLogger(DescriptorIndexCollector.class);
/**
- * The parameter usage differs from the interface:
- * <code>collecTorIndexUrl</code> is expected to contain the URL
- * for an index JSON file (plain or compressed).
+ * If <code>collecTorIndexUrlString</code> contains just the
+ * base url, e.g. https://some.host.org, the path
+ * <code>/index/index.json</code> will be appended.
+ * If a path is given (even just a final slash, e.g. https://some.host.org/),
+ * the <code>collecTorIndexUrlString</code> will be used as is.
*/
@Override
- public void collectDescriptors(String collecTorIndexUrl,
+ public void collectDescriptors(String collecTorIndexUrlString,
String[] remoteDirectories, long minLastModified,
File localDirectory, boolean deleteExtraneousLocalFiles) {
if (minLastModified < 0) {
@@ -52,11 +54,18 @@ public class DescriptorIndexCollector implements DescriptorCollector {
SortedMap<String, Long> localFiles = statLocalDirectory(localDirectory);
SortedMap<String, FileNode> remoteFiles = null;
IndexNode index = null;
+ String indexUrlString = "";
try {
- index = IndexNode.fetchIndex(collecTorIndexUrl);
+ URL indexUrl = new URL(collecTorIndexUrlString);
+ indexUrlString = indexUrl.toString();
+ if (indexUrl.getPath().isEmpty()) {
+ indexUrlString += "/index/index.json";
+ }
+ index = IndexNode.fetchIndex(indexUrlString);
remoteFiles = index.retrieveFilesIn(remoteDirectories);
- } catch (Exception ioe) {
- throw new RuntimeException("Cannot fetch index. ", ioe);
+ } catch (Exception ex) {
+ throw new RuntimeException("Cannot fetch index from '"
+ + indexUrlString + "'.", ex);
}
this.fetchRemoteFiles(index.path, remoteFiles, minLastModified,
localDirectory, localFiles);
More information about the tor-commits
mailing list