package com.limegroup.gnutella.helpers;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import com.limegroup.gnutella.URN;
import com.limegroup.gnutella.library.UrnCache;
public class UrnHelper {
/**
* Strings representing invalid URNs.
*/
public static final String[] INVALID_URN_STRINGS = {
"urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFBC",
"urn:sh1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"ur:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"rn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urnsha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
" urn:sHa1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn::sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn: sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1 :PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1 :PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1: PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWU GYQYPFB",
"urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWU GYQYPFB ",
null,
"",
"test"
};
/**
* String representing valid URNs.
*/
public static final String[] VALID_URN_STRINGS = {
"urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1:ZLSTHIPQGSSZTS5FJUPAKUZWUGZQYPFB",
"Urn:sha1:ALSTHIPQGSSZTS5FJUPAKUZWUGZQYPFB",
"uRn:sHa1:QLRTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1:WLPTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:Sha1:ELSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"UrN:sha1:RLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sHa1:ILSTIIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1:FLSTXIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPFB",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPZB",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPZC",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPZD",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPZE",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPRC",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPSD",
"urn:sha1:ULSTTIPQGSSZTS5FJUPAKUZWUGYQYPTE",
};
/**
* Array of URNs for use by tests.
*/
public static final URN[] URNS = new URN[VALID_URN_STRINGS.length];
/**
* Array of URNType instances for use by tests.
*/
public static final URN.Type[] URN_TYPES = new URN.Type[VALID_URN_STRINGS.length];
@SuppressWarnings("unchecked")
public static final Set<URN>[] URN_SETS = new Set[VALID_URN_STRINGS.length];
/**
* A "unique" SHA1 for convenience.
*/
public static final URN UNIQUE_SHA1;
public static final URN SHA1;
public static final URN TTROOT;
static {
try {
UNIQUE_SHA1 = URN.createSHA1Urn("urn:sha1:PLSTHIFQGSJZT45FJUPAKUZWUGYQYPFB");
SHA1 = URN.createSHA1Urn(UrnHelper.VALID_URN_STRINGS[3]);
TTROOT= URN.createTTRootUrn("urn:ttroot:PLSTHIFQGSJZT45FJUPAKUZWUGYQYPFBAAAAAAA");
for(int i=0; i<UrnHelper.VALID_URN_STRINGS.length; i++) {
URN urn = URN.createSHA1Urn(UrnHelper.VALID_URN_STRINGS[i]);
UrnHelper.URNS[i] = urn;
UrnHelper.URN_TYPES[i] = urn.getUrnType();
Set<URN> urnSet = new HashSet<URN>();
urnSet.add(urn);
UrnHelper.URN_SETS[i] = urnSet;
}
} catch(IOException iox) {
throw new RuntimeException(iox);
}
}
public static Set<URN> calculateAndCacheURN(File f, UrnCache urnCache) throws Exception {
return urnCache.calculateAndCacheUrns(f).get();
}
}