all Downloaders have a URL, so make the base class store it for use
This lets the local broadcasts include the URL as an extra, and other tricks.
This commit is contained in:
parent
9a9bf92126
commit
5d4bdf6139
@ -22,6 +22,8 @@ import org.xml.sax.XMLReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.security.CodeSigner;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.X509Certificate;
|
||||
@ -71,14 +73,15 @@ public class RepoUpdater {
|
||||
|
||||
public List<Apk> getApks() { return apks; }
|
||||
|
||||
protected String getIndexAddress() {
|
||||
protected URL getIndexAddress() throws MalformedURLException {
|
||||
String urlString = repo.address + "/index.jar";
|
||||
try {
|
||||
String versionName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
|
||||
return repo.address + "/index.jar?client_version=" + versionName;
|
||||
urlString += "?client_version=" + versionName;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return repo.address + "/index.jar";
|
||||
return new URL(urlString);
|
||||
}
|
||||
|
||||
Downloader downloadIndex() throws UpdateException {
|
||||
|
@ -33,9 +33,10 @@ public abstract class Downloader {
|
||||
|
||||
public abstract InputStream getInputStream() throws IOException;
|
||||
|
||||
Downloader(Context context, File destFile)
|
||||
Downloader(Context context, URL url, File destFile)
|
||||
throws FileNotFoundException, MalformedURLException {
|
||||
this.context = context;
|
||||
this.sourceUrl = url;
|
||||
outputFile = destFile;
|
||||
outputStream = new FileOutputStream(outputFile);
|
||||
}
|
||||
|
@ -4,23 +4,38 @@ import android.content.Context;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
public class DownloaderFactory {
|
||||
|
||||
/**
|
||||
* Downloads to a temporary file, which *you must delete yourself when
|
||||
* you are done
|
||||
* you are done. It is stored in {@link Context#getCacheDir()} and starts
|
||||
* with the prefix {@code dl-}.
|
||||
*/
|
||||
public static Downloader create(Context context, String url)
|
||||
public static Downloader create(Context context, String urlString)
|
||||
throws IOException {
|
||||
return create(context, new URL(urlString));
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads to a temporary file, which *you must delete yourself when
|
||||
* you are done. It is stored in {@link Context#getCacheDir()} and starts
|
||||
* with the prefix {@code dl-}.
|
||||
*/
|
||||
public static Downloader create(Context context, URL url)
|
||||
throws IOException {
|
||||
File destFile = File.createTempFile("dl-", "", context.getCacheDir());
|
||||
if (isOnionAddress(url)) {
|
||||
return new TorHttpDownloader(context, url, destFile);
|
||||
}
|
||||
return new HttpDownloader(context, url, destFile);
|
||||
destFile.deleteOnExit(); // this probably does nothing, but maybe...
|
||||
return create(context, url, destFile);
|
||||
}
|
||||
|
||||
public static Downloader create(Context context, String url, File destFile)
|
||||
public static Downloader create(Context context, String urlString, File destFile)
|
||||
throws IOException {
|
||||
return create(context, new URL(urlString), destFile);
|
||||
}
|
||||
|
||||
public static Downloader create(Context context, URL url, File destFile)
|
||||
throws IOException {
|
||||
if (isOnionAddress(url)) {
|
||||
return new TorHttpDownloader(context, url, destFile);
|
||||
@ -28,7 +43,7 @@ public class DownloaderFactory {
|
||||
return new HttpDownloader(context, url, destFile);
|
||||
}
|
||||
|
||||
private static boolean isOnionAddress(String url) {
|
||||
return url.matches("^[a-zA-Z0-9]+://[^/]+\\.onion/.*");
|
||||
private static boolean isOnionAddress(URL url) {
|
||||
return url.getHost().endsWith(".onion");
|
||||
}
|
||||
}
|
||||
|
@ -27,10 +27,9 @@ public class HttpDownloader extends Downloader {
|
||||
protected HttpURLConnection connection;
|
||||
private int statusCode = -1;
|
||||
|
||||
HttpDownloader(Context context, String source, File destFile)
|
||||
HttpDownloader(Context context, URL url, File destFile)
|
||||
throws FileNotFoundException, MalformedURLException {
|
||||
super(context, destFile);
|
||||
sourceUrl = new URL(source);
|
||||
super(context, url, destFile);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -10,10 +10,11 @@ import java.net.InetSocketAddress;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.Proxy;
|
||||
import java.net.SocketAddress;
|
||||
import java.net.URL;
|
||||
|
||||
public class TorHttpDownloader extends HttpDownloader {
|
||||
|
||||
TorHttpDownloader(Context context, String url, File destFile)
|
||||
TorHttpDownloader(Context context, URL url, File destFile)
|
||||
throws FileNotFoundException, MalformedURLException {
|
||||
super(context, url, destFile);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user