summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2024-03-17 20:25:44 +0100
committerGitHub <noreply@github.com>2024-03-17 20:25:44 +0100
commit2d77b1f11802da28cbcd87c9456bcc7ee3abf2a0 (patch)
tree7f54438ed59eee3272cd38dab79f8ebfe291e9e4 /core
parentb84a05bd4e2bf2d10b7791155cc0a7a0e5aa3dcf (diff)
downloadAntennaPod-2d77b1f11802da28cbcd87c9456bcc7ee3abf2a0.zip
Remove dependency from :ui:glide to :core module (#6998)
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/BasicAuthorizationInterceptor.java83
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java16
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java110
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DefaultDownloaderFactory.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java10
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderFactory.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/EpisodeDownloadWorker.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpCredentialEncoder.java18
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java10
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java37
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java144
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/URIUtil.java34
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/download/FeedUpdateManager.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/download/MediaSizeLoader.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/download/NetworkConnectionChangeHandler.java2
-rw-r--r--core/src/test/java/de/danoeh/antennapod/core/util/URIUtilTest.java24
28 files changed, 45 insertions, 505 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java
index 360c8c9e2..69abcee93 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/ClientConfig.java
@@ -5,10 +5,5 @@ package de.danoeh.antennapod.core;
* Apps using the core module of AntennaPod should register implementations of all interfaces here.
*/
public class ClientConfig {
- /**
- * Should be used when setting User-Agent header for HTTP-requests.
- */
- public static String USER_AGENT;
-
public static ApplicationCallbacks applicationCallbacks;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java b/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java
index 86d65bbff..85ba7a3d5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java
@@ -1,16 +1,19 @@
package de.danoeh.antennapod.core;
import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.SleepTimerPreferences;
import de.danoeh.antennapod.core.preferences.UsageStatistics;
+import de.danoeh.antennapod.net.common.UserAgentInterceptor;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
+import de.danoeh.antennapod.net.common.AntennapodHttpClient;
import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface;
import de.danoeh.antennapod.core.service.download.DownloadServiceInterfaceImpl;
import de.danoeh.antennapod.core.sync.SyncService;
import de.danoeh.antennapod.core.sync.queue.SynchronizationQueueSink;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.core.util.download.NetworkConnectionChangeHandler;
import de.danoeh.antennapod.net.ssl.SslProviderInstaller;
import de.danoeh.antennapod.storage.database.PodDBAdapter;
@@ -25,6 +28,12 @@ public class ClientConfigurator {
if (initialized) {
return;
}
+ try {
+ PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
+ UserAgentInterceptor.USER_AGENT = "AntennaPod/" + packageInfo.versionName;
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
PodDBAdapter.init(context);
UserPreferences.init(context);
UsageStatistics.init(context);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/BasicAuthorizationInterceptor.java b/core/src/main/java/de/danoeh/antennapod/core/service/BasicAuthorizationInterceptor.java
deleted file mode 100644
index 77a58e682..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/service/BasicAuthorizationInterceptor.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package de.danoeh.antennapod.core.service;
-
-import android.text.TextUtils;
-import android.util.Log;
-import androidx.annotation.NonNull;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
-import de.danoeh.antennapod.core.service.download.HttpCredentialEncoder;
-import de.danoeh.antennapod.core.storage.DBReader;
-import de.danoeh.antennapod.core.util.URIUtil;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.List;
-
-import okhttp3.Interceptor;
-import okhttp3.Request;
-import okhttp3.Response;
-
-public class BasicAuthorizationInterceptor implements Interceptor {
- private static final String TAG = "BasicAuthInterceptor";
- private static final String HEADER_AUTHORIZATION = "Authorization";
-
- @Override
- @NonNull
- public Response intercept(Chain chain) throws IOException {
- Request request = chain.request();
-
- Response response = chain.proceed(request);
-
- if (response.code() != HttpURLConnection.HTTP_UNAUTHORIZED) {
- return response;
- }
-
- Request.Builder newRequest = request.newBuilder();
- if (!TextUtils.equals(response.request().url().toString(), request.url().toString())) {
- // Redirect detected. OkHTTP does not re-add the headers on redirect, so calling the new location directly.
- newRequest.url(response.request().url());
-
- List<String> authorizationHeaders = request.headers().values(HEADER_AUTHORIZATION);
- if (!authorizationHeaders.isEmpty() && !TextUtils.isEmpty(authorizationHeaders.get(0))) {
- // Call already had authorization headers. Try again with the same credentials.
- newRequest.header(HEADER_AUTHORIZATION, authorizationHeaders.get(0));
- return chain.proceed(newRequest.build());
- }
- }
-
- String userInfo;
- if (request.tag() instanceof DownloadRequest) {
- DownloadRequest downloadRequest = (DownloadRequest) request.tag();
- userInfo = URIUtil.getURIFromRequestUrl(downloadRequest.getSource()).getUserInfo();
- if (TextUtils.isEmpty(userInfo)
- && (!TextUtils.isEmpty(downloadRequest.getUsername())
- || !TextUtils.isEmpty(downloadRequest.getPassword()))) {
- userInfo = downloadRequest.getUsername() + ":" + downloadRequest.getPassword();
- }
- } else {
- userInfo = DBReader.getImageAuthentication(request.url().toString());
- }
-
- if (TextUtils.isEmpty(userInfo)) {
- Log.d(TAG, "no credentials for '" + request.url() + "'");
- return response;
- }
-
- if (!userInfo.contains(":")) {
- Log.d(TAG, "Invalid credentials for '" + request.url() + "'");
- return response;
- }
- String username = userInfo.substring(0, userInfo.indexOf(':'));
- String password = userInfo.substring(userInfo.indexOf(':') + 1);
-
- Log.d(TAG, "Authorization failed, re-trying with ISO-8859-1 encoded credentials");
- newRequest.header(HEADER_AUTHORIZATION, HttpCredentialEncoder.encode(username, password, "ISO-8859-1"));
- response = chain.proceed(newRequest.build());
-
- if (response.code() != HttpURLConnection.HTTP_UNAUTHORIZED) {
- return response;
- }
-
- Log.d(TAG, "Authorization failed, re-trying with UTF-8 encoded credentials");
- newRequest.header(HEADER_AUTHORIZATION, HttpCredentialEncoder.encode(username, password, "UTF-8"));
- return chain.proceed(newRequest.build());
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java
index 2ec938730..5e864c5c0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java
@@ -27,13 +27,14 @@ import de.danoeh.antennapod.core.service.download.handler.FeedSyncTask;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.core.util.download.FeedUpdateManager;
import de.danoeh.antennapod.model.download.DownloadError;
import de.danoeh.antennapod.model.download.DownloadResult;
import de.danoeh.antennapod.model.feed.Feed;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
+import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequestBuilder;
import de.danoeh.antennapod.ui.notifications.NotificationUtils;
import java.util.ArrayList;
import java.util.Collections;
@@ -166,7 +167,7 @@ public class FeedUpdateWorker extends Worker {
if (nextPage) {
feed.setPageNr(feed.getPageNr() + 1);
}
- DownloadRequest.Builder builder = DownloadRequestCreator.create(feed);
+ DownloadRequestBuilder builder = DownloadRequestCreator.create(feed);
builder.setForce(force || feed.hasLastUpdateFailed());
if (nextPage) {
builder.setSource(feed.getNextPageLink());
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java b/core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java
deleted file mode 100644
index 3676347f7..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/service/UserAgentInterceptor.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package de.danoeh.antennapod.core.service;
-
-import de.danoeh.antennapod.core.ClientConfig;
-import okhttp3.Interceptor;
-import okhttp3.Response;
-
-import java.io.IOException;
-
-public class UserAgentInterceptor implements Interceptor {
- @Override
- public Response intercept(Chain chain) throws IOException {
- return chain.proceed(chain.request().newBuilder()
- .header("User-Agent", ClientConfig.USER_AGENT)
- .build());
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
deleted file mode 100644
index 9f1f97bf0..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package de.danoeh.antennapod.core.service.download;
-
-import android.text.TextUtils;
-import android.util.Log;
-import androidx.annotation.NonNull;
-import de.danoeh.antennapod.core.service.BasicAuthorizationInterceptor;
-import de.danoeh.antennapod.core.service.UserAgentInterceptor;
-import de.danoeh.antennapod.model.download.ProxyConfig;
-import de.danoeh.antennapod.net.ssl.SslClientSetup;
-import okhttp3.Cache;
-import okhttp3.Credentials;
-import okhttp3.JavaNetCookieJar;
-import okhttp3.OkHttpClient;
-import java.io.File;
-import java.net.CookieManager;
-import java.net.CookiePolicy;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.net.SocketAddress;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Provides access to a HttpClient singleton.
- */
-public class AntennapodHttpClient {
- private static final String TAG = "AntennapodHttpClient";
- private static final int CONNECTION_TIMEOUT = 10000;
- private static final int READ_TIMEOUT = 30000;
- private static final int MAX_CONNECTIONS = 8;
- private static File cacheDirectory;
- private static ProxyConfig proxyConfig;
-
- private static volatile OkHttpClient httpClient = null;
-
- private AntennapodHttpClient() {
-
- }
-
- /**
- * Returns the HttpClient singleton.
- */
- public static synchronized OkHttpClient getHttpClient() {
- if (httpClient == null) {
- httpClient = newBuilder().build();
- }
- return httpClient;
- }
-
- public static synchronized void reinit() {
- httpClient = newBuilder().build();
- }
-
- /**
- * Creates a new HTTP client. Most users should just use
- * getHttpClient() to get the standard AntennaPod client,
- * but sometimes it's necessary for others to have their own
- * copy so that the clients don't share state.
- * @return http client
- */
- @NonNull
- public static OkHttpClient.Builder newBuilder() {
- Log.d(TAG, "Creating new instance of HTTP client");
-
- System.setProperty("http.maxConnections", String.valueOf(MAX_CONNECTIONS));
-
- OkHttpClient.Builder builder = new OkHttpClient.Builder();
- builder.interceptors().add(new BasicAuthorizationInterceptor());
- builder.networkInterceptors().add(new UserAgentInterceptor());
-
- // set cookie handler
- CookieManager cm = new CookieManager();
- cm.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
- builder.cookieJar(new JavaNetCookieJar(cm));
-
- // set timeouts
- builder.connectTimeout(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS);
- builder.readTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS);
- builder.writeTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS);
- builder.cache(new Cache(cacheDirectory, 20L * 1000000)); // 20MB
-
- // configure redirects
- builder.followRedirects(true);
- builder.followSslRedirects(true);
-
- if (proxyConfig != null && proxyConfig.type != Proxy.Type.DIRECT && !TextUtils.isEmpty(proxyConfig.host)) {
- int port = proxyConfig.port > 0 ? proxyConfig.port : ProxyConfig.DEFAULT_PORT;
- SocketAddress address = InetSocketAddress.createUnresolved(proxyConfig.host, port);
- builder.proxy(new Proxy(proxyConfig.type, address));
- if (!TextUtils.isEmpty(proxyConfig.username) && proxyConfig.password != null) {
- builder.proxyAuthenticator((route, response) -> {
- String credentials = Credentials.basic(proxyConfig.username, proxyConfig.password);
- return response.request().newBuilder()
- .header("Proxy-Authorization", credentials)
- .build();
- });
- }
- }
-
- SslClientSetup.installCertificates(builder);
- return builder;
- }
-
- public static void setCacheDirectory(File cacheDirectory) {
- AntennapodHttpClient.cacheDirectory = cacheDirectory;
- }
-
- public static void setProxyConfig(ProxyConfig proxyConfig) {
- AntennapodHttpClient.proxyConfig = proxyConfig;
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DefaultDownloaderFactory.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DefaultDownloaderFactory.java
index ff29e2e15..a1cc9bf6d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DefaultDownloaderFactory.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DefaultDownloaderFactory.java
@@ -4,7 +4,7 @@ import android.util.Log;
import android.webkit.URLUtil;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
public class DefaultDownloaderFactory implements DownloaderFactory {
private static final String TAG = "DefaultDwnldrFactory";
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java
index 9ade2f03a..459ca71aa 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java
@@ -2,11 +2,11 @@ package de.danoeh.antennapod.core.service.download;
import android.util.Log;
import android.webkit.URLUtil;
+import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequestBuilder;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
import de.danoeh.antennapod.core.util.FileNameGenerator;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.model.feed.FeedMedia;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
import org.apache.commons.io.FilenameUtils;
import java.io.File;
@@ -19,7 +19,7 @@ public class DownloadRequestCreator {
private static final String FEED_DOWNLOADPATH = "cache/";
private static final String MEDIA_DOWNLOADPATH = "media/";
- public static DownloadRequest.Builder create(Feed feed) {
+ public static DownloadRequestBuilder create(Feed feed) {
File dest = new File(getFeedfilePath(), getFeedfileName(feed));
if (dest.exists()) {
dest.delete();
@@ -29,12 +29,12 @@ public class DownloadRequestCreator {
String username = (feed.getPreferences() != null) ? feed.getPreferences().getUsername() : null;
String password = (feed.getPreferences() != null) ? feed.getPreferences().getPassword() : null;
- return new DownloadRequest.Builder(dest.toString(), feed)
+ return new DownloadRequestBuilder(dest.toString(), feed)
.withAuthentication(username, password)
.lastModified(feed.getLastModified());
}
- public static DownloadRequest.Builder create(FeedMedia media) {
+ public static DownloadRequestBuilder create(FeedMedia media) {
final boolean partiallyDownloadedFileExists =
media.getFile_url() != null && new File(media.getFile_url()).exists();
File dest;
@@ -54,7 +54,7 @@ public class DownloadRequestCreator {
String password = (media.getItem().getFeed().getPreferences() != null)
? media.getItem().getFeed().getPreferences().getPassword() : null;
- return new DownloadRequest.Builder(dest.toString(), media)
+ return new DownloadRequestBuilder(dest.toString(), media)
.withAuthentication(username, password);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
index 35247509d..d1334190a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
@@ -10,7 +10,7 @@ import java.util.concurrent.Callable;
import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.model.download.DownloadResult;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
/**
* Downloads files
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderFactory.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderFactory.java
index 48601c4f7..45ad45381 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderFactory.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderFactory.java
@@ -2,7 +2,7 @@ package de.danoeh.antennapod.core.service.download;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
public interface DownloaderFactory {
@Nullable
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/EpisodeDownloadWorker.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/EpisodeDownloadWorker.java
index 1e943eed8..6957c25b1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/EpisodeDownloadWorker.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/EpisodeDownloadWorker.java
@@ -27,7 +27,7 @@ import de.danoeh.antennapod.event.MessageEvent;
import de.danoeh.antennapod.model.download.DownloadError;
import de.danoeh.antennapod.model.download.DownloadResult;
import de.danoeh.antennapod.model.feed.FeedMedia;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface;
import de.danoeh.antennapod.ui.appstartintent.MainActivityStarter;
import de.danoeh.antennapod.ui.notifications.NotificationUtils;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpCredentialEncoder.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpCredentialEncoder.java
deleted file mode 100644
index 9866f91b6..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpCredentialEncoder.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package de.danoeh.antennapod.core.service.download;
-
-import android.util.Base64;
-
-import java.io.UnsupportedEncodingException;
-
-public abstract class HttpCredentialEncoder {
- public static String encode(String username, String password, String charset) {
- try {
- String credentials = username + ":" + password;
- byte[] bytes = credentials.getBytes(charset);
- String encoded = Base64.encodeToString(bytes, Base64.NO_WRAP);
- return "Basic " + encoded;
- } catch (UnsupportedEncodingException e) {
- throw new AssertionError(e);
- }
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
index 94cd81337..5e2a82f33 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
@@ -4,9 +4,10 @@ import androidx.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.model.download.DownloadResult;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
+import de.danoeh.antennapod.net.common.AntennapodHttpClient;
import okhttp3.CacheControl;
import okhttp3.internal.http.StatusLine;
import org.apache.commons.io.IOUtils;
@@ -29,7 +30,7 @@ import de.danoeh.antennapod.model.feed.FeedMedia;
import de.danoeh.antennapod.parser.feed.util.DateUtils;
import de.danoeh.antennapod.model.download.DownloadError;
import de.danoeh.antennapod.core.util.StorageUtils;
-import de.danoeh.antennapod.core.util.URIUtil;
+import de.danoeh.antennapod.net.common.UriUtil;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
import okhttp3.Request;
@@ -54,7 +55,7 @@ public class HttpDownloader extends Downloader {
ResponseBody responseBody = null;
try {
- final URI uri = URIUtil.getURIFromRequestUrl(request.getSource());
+ final URI uri = UriUtil.getURIFromRequestUrl(request.getSource());
Request.Builder httpReq = new Request.Builder().url(uri.toURL());
httpReq.tag(request);
httpReq.cacheControl(new CacheControl.Builder().noStore().build());
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
index 264740032..1fecd4b8c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
@@ -7,7 +7,7 @@ import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedPreferences;
import de.danoeh.antennapod.model.feed.VolumeAdaptionSetting;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
import de.danoeh.antennapod.model.download.DownloadResult;
import de.danoeh.antennapod.parser.feed.FeedHandler;
import de.danoeh.antennapod.parser.feed.FeedHandlerResult;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java
index 3b72ed164..03d7ab6ec 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java
@@ -5,7 +5,7 @@ import androidx.annotation.NonNull;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.model.download.DownloadResult;
import de.danoeh.antennapod.model.feed.Feed;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
import de.danoeh.antennapod.parser.feed.FeedHandlerResult;
public class FeedSyncTask {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java
index 55831b821..21a908efa 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java
@@ -14,7 +14,7 @@ import java.io.InterruptedIOException;
import java.util.concurrent.ExecutionException;
import de.danoeh.antennapod.event.UnreadItemsUpdateEvent;
-import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
+import de.danoeh.antennapod.model.download.DownloadRequest;
import de.danoeh.antennapod.model.download.DownloadResult;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
index 51adbf477..9d455ebcc 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
@@ -42,13 +42,13 @@ import androidx.media3.extractor.DefaultExtractorsFactory;
import androidx.media3.extractor.mp3.Mp3Extractor;
import androidx.media3.ui.DefaultTrackNameProvider;
import androidx.media3.ui.TrackNameProvider;
-import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.R;
+import de.danoeh.antennapod.net.common.UserAgentInterceptor;
import de.danoeh.antennapod.model.feed.VolumeAdaptionSetting;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
-import de.danoeh.antennapod.core.service.download.HttpCredentialEncoder;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.AntennapodHttpClient;
+import de.danoeh.antennapod.net.common.HttpCredentialEncoder;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.model.playback.Playable;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -234,7 +234,7 @@ public class ExoPlayerWrapper {
Log.d(TAG, "setDataSource: " + s);
final OkHttpDataSource.Factory httpDataSourceFactory =
new OkHttpDataSource.Factory((Call.Factory) AntennapodHttpClient.getHttpClient())
- .setUserAgent(ClientConfig.USER_AGENT);
+ .setUserAgent(UserAgentInterceptor.USER_AGENT);
if (!TextUtils.isEmpty(user) && !TextUtils.isEmpty(password)) {
final HashMap<String, String> requestProperties = new HashMap<>();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index f34a9ba8e..abeb9f942 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -76,7 +76,7 @@ import de.danoeh.antennapod.core.util.ChapterUtils;
import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.FeedUtil;
import de.danoeh.antennapod.core.util.IntentUtils;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.core.util.playback.PlayableUtils;
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
import de.danoeh.antennapod.core.widget.WidgetUpdater;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java
index ecfe5f4dd..350a6fbbf 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java
@@ -14,7 +14,7 @@ import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedPreferences;
import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.core.util.PowerUtils;
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
index b390f5f44..16c12bdd5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
@@ -1,7 +1,6 @@
package de.danoeh.antennapod.core.storage;
import android.database.Cursor;
-import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -585,42 +584,6 @@ public final class DBReader {
}
/**
- * Returns credentials based on image URL
- *
- * @param imageUrl The URL of the image
- * @return Credentials in format "Username:Password", empty String if no authorization given
- */
- public static String getImageAuthentication(final String imageUrl) {
- Log.d(TAG, "getImageAuthentication() called with: " + "imageUrl = [" + imageUrl + "]");
-
- PodDBAdapter adapter = PodDBAdapter.getInstance();
- adapter.open();
- try {
- return getImageAuthentication(imageUrl, adapter);
- } finally {
- adapter.close();
- }
- }
-
- private static String getImageAuthentication(final String imageUrl, PodDBAdapter adapter) {
- String credentials;
- try (Cursor cursor = adapter.getImageAuthenticationCursor(imageUrl)) {
- if (cursor.moveToFirst()) {
- String username = cursor.getString(0);
- String password = cursor.getString(1);
- if (!TextUtils.isEmpty(username) && password != null) {
- credentials = username + ":" + password;
- } else {
- credentials = "";
- }
- } else {
- credentials = "";
- }
- }
- return credentials;
- }
-
- /**
* Loads a specific FeedItem from the database.
*
* @param guid feed item guid
diff --git a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
index 3ee7c2b54..5f750a50b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
@@ -41,7 +41,7 @@ import java.util.concurrent.TimeUnit;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.event.SyncServiceEvent;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
+import de.danoeh.antennapod.net.common.AntennapodHttpClient;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java
index 901771913..6253b260d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java
@@ -9,7 +9,7 @@ import androidx.annotation.NonNull;
import de.danoeh.antennapod.model.feed.Chapter;
import de.danoeh.antennapod.core.feed.ChapterMerger;
import de.danoeh.antennapod.model.feed.FeedMedia;
-import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
+import de.danoeh.antennapod.net.common.AntennapodHttpClient;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.util.comparator.ChapterStartTimeComparator;
import de.danoeh.antennapod.parser.feed.PodcastIndexChapterParser;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
deleted file mode 100644
index dfdc6c32a..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package de.danoeh.antennapod.core.util;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiManager;
-import android.os.Build;
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import de.danoeh.antennapod.storage.preferences.UserPreferences;
-
-public class NetworkUtils {
- private static final String REGEX_PATTERN_IP_ADDRESS = "([0-9]{1,3}[\\.]){3}[0-9]{1,3}";
-
- private NetworkUtils(){}
-
- private static Context context;
-
- public static void init(Context context) {
- NetworkUtils.context = context;
- }
-
- public static boolean isAutoDownloadAllowed() {
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo networkInfo = cm.getActiveNetworkInfo();
- if (networkInfo == null) {
- return false;
- }
- if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
- if (UserPreferences.isEnableAutodownloadWifiFilter()) {
- return isInAllowedWifiNetwork();
- } else {
- return !isNetworkMetered();
- }
- } else if (networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
- return true;
- } else {
- return UserPreferences.isAllowMobileAutoDownload() || !NetworkUtils.isNetworkRestricted();
- }
- }
-
- public static boolean networkAvailable() {
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo info = cm.getActiveNetworkInfo();
- return info != null && info.isConnected();
- }
-
- public static boolean isEpisodeDownloadAllowed() {
- return UserPreferences.isAllowMobileEpisodeDownload() || !NetworkUtils.isNetworkRestricted();
- }
-
- public static boolean isEpisodeHeadDownloadAllowed() {
- // It is not an image but it is a similarly tiny request
- // that is probably not even considered a download by most users
- return isImageAllowed();
- }
-
- public static boolean isImageAllowed() {
- return UserPreferences.isAllowMobileImages() || !NetworkUtils.isNetworkRestricted();
- }
-
- public static boolean isStreamingAllowed() {
- return UserPreferences.isAllowMobileStreaming() || !NetworkUtils.isNetworkRestricted();
- }
-
- public static boolean isFeedRefreshAllowed() {
- return UserPreferences.isAllowMobileFeedRefresh() || !NetworkUtils.isNetworkRestricted();
- }
-
- public static boolean isNetworkRestricted() {
- return isNetworkMetered() || isNetworkCellular();
- }
-
- private static boolean isNetworkMetered() {
- ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- return connManager.isActiveNetworkMetered();
- }
-
- public static boolean isVpnOverWifi() {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
- return false;
- }
- ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkCapabilities capabilities = connManager.getNetworkCapabilities(connManager.getActiveNetwork());
- return capabilities != null
- && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
- && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN);
- }
-
- private static boolean isNetworkCellular() {
- ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- if (Build.VERSION.SDK_INT >= 23) {
- Network network = connManager.getActiveNetwork();
- if (network == null) {
- return false; // Nothing connected
- }
- NetworkInfo info = connManager.getNetworkInfo(network);
- if (info == null) {
- return true; // Better be safe than sorry
- }
- NetworkCapabilities capabilities = connManager.getNetworkCapabilities(network);
- if (capabilities == null) {
- return true; // Better be safe than sorry
- }
- return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
- } else {
- // if the default network is a VPN,
- // this method will return the NetworkInfo for one of its underlying networks
- NetworkInfo info = connManager.getActiveNetworkInfo();
- if (info == null) {
- return false; // Nothing connected
- }
- //noinspection deprecation
- return info.getType() == ConnectivityManager.TYPE_MOBILE;
- }
- }
-
- private static boolean isInAllowedWifiNetwork() {
- WifiManager wm = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
- List<String> selectedNetworks = Arrays.asList(UserPreferences.getAutodownloadSelectedNetworks());
- return selectedNetworks.contains(Integer.toString(wm.getConnectionInfo().getNetworkId()));
- }
-
- public static boolean wasDownloadBlocked(Throwable throwable) {
- String message = throwable.getMessage();
- if (message != null) {
- Pattern pattern = Pattern.compile(REGEX_PATTERN_IP_ADDRESS);
- Matcher matcher = pattern.matcher(message);
- if (matcher.find()) {
- String ip = matcher.group();
- return ip.startsWith("127.") || ip.startsWith("0.");
- }
- }
- if (throwable.getCause() != null) {
- return wasDownloadBlocked(throwable.getCause());
- }
- return false;
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/URIUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/URIUtil.java
deleted file mode 100644
index e093dc766..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/util/URIUtil.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package de.danoeh.antennapod.core.util;
-
-import android.util.Log;
-
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import de.danoeh.antennapod.core.BuildConfig;
-
-/**
- * Utility methods for dealing with URL encoding.
- */
-public class URIUtil {
- private static final String TAG = "URIUtil";
-
- private URIUtil() {}
-
- public static URI getURIFromRequestUrl(String source) {
- // try without encoding the URI
- try {
- return new URI(source);
- } catch (URISyntaxException e) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Source is not encoded, encoding now");
- }
- try {
- URL url = new URL(source);
- return new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
- } catch (MalformedURLException | URISyntaxException e) {
- throw new IllegalArgumentException(e);
- }
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/download/FeedUpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/util/download/FeedUpdateManager.java
index 2f2726bdb..89097d9ee 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/download/FeedUpdateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/download/FeedUpdateManager.java
@@ -16,7 +16,7 @@ import androidx.work.WorkManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.service.FeedUpdateWorker;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.event.MessageEvent;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/download/MediaSizeLoader.java b/core/src/main/java/de/danoeh/antennapod/core/util/download/MediaSizeLoader.java
index 67ec35327..df35365c9 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/download/MediaSizeLoader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/download/MediaSizeLoader.java
@@ -1,9 +1,9 @@
package de.danoeh.antennapod.core.util.download;
import android.text.TextUtils;
-import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
+import de.danoeh.antennapod.net.common.AntennapodHttpClient;
import de.danoeh.antennapod.core.storage.DBWriter;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.model.feed.FeedMedia;
import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/download/NetworkConnectionChangeHandler.java b/core/src/main/java/de/danoeh/antennapod/core/util/download/NetworkConnectionChangeHandler.java
index de2d8e9f4..8097a4cb1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/download/NetworkConnectionChangeHandler.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/download/NetworkConnectionChangeHandler.java
@@ -4,7 +4,7 @@ import android.content.Context;
import android.util.Log;
import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface;
import de.danoeh.antennapod.core.storage.DBTasks;
-import de.danoeh.antennapod.core.util.NetworkUtils;
+import de.danoeh.antennapod.net.common.NetworkUtils;
public abstract class NetworkConnectionChangeHandler {
private static final String TAG = "NetConnChangeHandler";
diff --git a/core/src/test/java/de/danoeh/antennapod/core/util/URIUtilTest.java b/core/src/test/java/de/danoeh/antennapod/core/util/URIUtilTest.java
deleted file mode 100644
index 3feb4d376..000000000
--- a/core/src/test/java/de/danoeh/antennapod/core/util/URIUtilTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package de.danoeh.antennapod.core.util;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Test class for URIUtil
- */
-public class URIUtilTest {
-
- @Test
- public void testGetURIFromRequestUrlShouldNotEncode() {
- final String testUrl = "http://example.com/this%20is%20encoded";
- assertEquals(testUrl, URIUtil.getURIFromRequestUrl(testUrl).toString());
- }
-
- @Test
- public void testGetURIFromRequestUrlShouldEncode() {
- final String testUrl = "http://example.com/this is not encoded";
- final String expected = "http://example.com/this%20is%20not%20encoded";
- assertEquals(expected, URIUtil.getURIFromRequestUrl(testUrl).toString());
- }
-}