public static ClientGetState create(ClientRequester requester, GetCompletionCallback cb,
FreenetURI uri, FetchContext ctx, ArchiveContext actx,
int maxRetries, int recursionLevel, boolean dontTellClientGet, long l, boolean isEssential,
boolean isFinal, ClientContext context, boolean realTimeFlag, boolean hasInitialMetadata) throws MalformedURLException, FetchException {
BaseClientKey key = null;
if(!hasInitialMetadata)
key = BaseClientKey.getBaseKey(uri);
if((!uri.hasMetaStrings()) &&
ctx.allowSplitfiles == false && ctx.followRedirects == false &&
key instanceof ClientKey && (!hasInitialMetadata))
return new SimpleSingleFileFetcher((ClientKey)key, maxRetries, ctx, requester, cb, isEssential, false, l, context, false, realTimeFlag);
if(key instanceof ClientKey || hasInitialMetadata)
return new SingleFileFetcher(requester, cb, null, (ClientKey)key, new ArrayList<String>(uri.listMetaStrings()), uri, 0, ctx, false, realTimeFlag, actx, null, null, maxRetries, recursionLevel, dontTellClientGet, l, isEssential, isFinal, false, (short)0, context, hasInitialMetadata);
else {
return uskCreate(requester, realTimeFlag, cb, (USK)key, new ArrayList<String>(uri.listMetaStrings()), ctx, actx, maxRetries, recursionLevel, dontTellClientGet, l, isEssential, isFinal, context);
}
}