Skip to content

Commit

Permalink
WIP: Set proxy on NetworkProviders at creation
Browse files Browse the repository at this point in the history
This is not ready for merging yet and does not compile
  • Loading branch information
T0astBread committed Nov 17, 2020
1 parent 66c83f6 commit 068f0b1
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 22 deletions.
4 changes: 2 additions & 2 deletions app/src/main/java/de/grobox/transportr/TransportrActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import de.grobox.transportr.networks.PickTransportNetworkActivity
import de.grobox.transportr.networks.PickTransportNetworkActivity.Companion.FORCE_NETWORK_SELECTION
import de.grobox.transportr.networks.TransportNetworkManager
import de.grobox.transportr.settings.SettingsManager
import de.grobox.transportr.utils.updateGlobalHttpProxy
import de.grobox.transportr.utils.updateMapBoxProxy
import java.util.*
import javax.inject.Inject

Expand All @@ -51,7 +51,7 @@ abstract class TransportrActivity : AppCompatActivity() {
useLanguage()
AppCompatDelegate.setDefaultNightMode(settingsManager.theme)
ensureTransportNetworkSelected()
updateGlobalHttpProxy(settingsManager.proxy, manager)
updateMapBoxProxy(settingsManager.proxy)

super.onCreate(savedInstanceState)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@

import java.util.Date;

import javax.inject.Inject;

import de.grobox.transportr.networks.TransportNetwork;
import de.grobox.transportr.settings.SettingsManager;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.QueryDeparturesResult;

Expand All @@ -43,6 +46,9 @@ public class DeparturesLoader extends AsyncTaskLoader<QueryDeparturesResult> {
private final Date date;
private final int maxDepartures;

@Inject
protected SettingsManager settingsManager;

public DeparturesLoader(Context context, TransportNetwork network, Bundle args) {
super(context);

Expand All @@ -54,7 +60,7 @@ public DeparturesLoader(Context context, TransportNetwork network, Bundle args)

@Override
public QueryDeparturesResult loadInBackground() {
NetworkProvider np = network.getNetworkProvider();
NetworkProvider np = network.getNetworkProvider(settingsManager.getProxy());

Log.d(TAG, "Departures (" + maxDepartures + "): " + stationId);
Log.d(TAG, "Date: " + date.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@

import java.util.EnumSet;

import javax.inject.Inject;

import de.grobox.transportr.networks.TransportNetwork;
import de.grobox.transportr.settings.SettingsManager;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
Expand All @@ -44,6 +47,9 @@ public class NearbyLocationsLoader extends AsyncTaskLoader<NearbyLocationsResult
private final static EnumSet<LocationType> types = EnumSet.of(LocationType.STATION);
private final int maxDistance;

@Inject
protected SettingsManager settingsManager;

public NearbyLocationsLoader(Context context, TransportNetwork network, Bundle args) {
super(context);
this.network = network;
Expand All @@ -54,7 +60,7 @@ public NearbyLocationsLoader(Context context, TransportNetwork network, Bundle a

@Override
public NearbyLocationsResult loadInBackground() {
NetworkProvider np = network.getNetworkProvider();
NetworkProvider np = network.getNetworkProvider(settingsManager.getProxy());

Log.i(TAG, "NearbyStation from (" + String.valueOf(maxDistance) + "): " + location.toString());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,14 @@
package de.grobox.transportr.locations;

import android.os.AsyncTask;

import androidx.annotation.Nullable;

import javax.annotation.ParametersAreNonnullByDefault;
import javax.inject.Inject;

import de.grobox.transportr.networks.TransportNetwork;
import de.grobox.transportr.settings.SettingsManager;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.SuggestLocationsResult;

Expand All @@ -34,6 +37,9 @@ class SuggestLocationsTask extends AsyncTask<String, Void, SuggestLocationsResul
private final TransportNetwork network;
private final SuggestLocationsTaskCallback callback;

@Inject
protected SettingsManager settingsManager;

SuggestLocationsTask(TransportNetwork network, SuggestLocationsTaskCallback callback) {
this.network = network;
this.callback = callback;
Expand All @@ -43,12 +49,12 @@ class SuggestLocationsTask extends AsyncTask<String, Void, SuggestLocationsResul
@Override
protected SuggestLocationsResult doInBackground(String... strings) {
String search = strings[0];
if(search.length() < LocationAdapter.TYPING_THRESHOLD) return null;
if (search.length() < LocationAdapter.TYPING_THRESHOLD) return null;

NetworkProvider np = network.getNetworkProvider();
NetworkProvider np = network.getNetworkProvider(settingsManager.getProxy());
try {
return np.suggestLocations(search);
} catch(Exception e) {
} catch (Exception e) {
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import com.google.common.base.Preconditions.checkArgument
import de.grobox.transportr.R
import de.schildbach.pte.AbstractNetworkProvider
import de.schildbach.pte.NetworkId
import de.schildbach.pte.NetworkProvider
import java.lang.ref.SoftReference
import java.net.Proxy
import javax.annotation.concurrent.Immutable

@Immutable
Expand All @@ -46,10 +48,6 @@ data class TransportNetwork internal constructor(
ALPHA, BETA, STABLE
}

val networkProvider: NetworkProvider by lazy { networkProviderRef.get() ?: getNetworkProviderReference().get()!! }
private val networkProviderRef by lazy { getNetworkProviderReference() }
private fun getNetworkProviderReference() = SoftReference<NetworkProvider>(factory.invoke())

init {
checkArgument(description != 0 || agencies != 0)
}
Expand Down Expand Up @@ -78,6 +76,13 @@ data class TransportNetwork internal constructor(
return goodLineNames
}

fun getNetworkProvider(proxy: Proxy): NetworkProvider {
val provider = factory()
if (provider is AbstractNetworkProvider)
provider.setProxy(proxy)
return provider
}

internal fun getItem(): TransportNetworkItem {
return TransportNetworkItem(this, itemIdExtra)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import de.grobox.transportr.settings.SettingsManager.Companion.PROXY_HOST
import de.grobox.transportr.settings.SettingsManager.Companion.PROXY_PORT
import de.grobox.transportr.settings.SettingsManager.Companion.PROXY_PROTOCOL
import de.grobox.transportr.settings.SettingsManager.Companion.THEME
import de.grobox.transportr.utils.updateGlobalHttpProxy
import de.grobox.transportr.utils.updateMapBoxProxy
import javax.inject.Inject

class SettingsFragment : PreferenceFragmentCompat() {
Expand Down Expand Up @@ -103,7 +103,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
arrayOf(PROXY_ENABLE, PROXY_HOST, PROXY_PORT, PROXY_PROTOCOL).forEach { prefKey ->
(findPreference(prefKey) as Preference?)?.let { pref ->
pref.setOnPreferenceChangeListener { _, _ ->
updateGlobalHttpProxy(settingsManager.proxy, manager)
updateMapBoxProxy(settingsManager.proxy)
true
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class TripDetailViewModel @Inject internal constructor(

val errorString = getApplication<Application>().getString(R.string.error_trip_refresh_failed)
val query = TripQuery(from!!, via, to!!, oldTrip.firstDepartureTime, true, oldTrip.products())
TripReloader(network.networkProvider, settingsManager, query, trip, errorString, tripReloadError)
TripReloader(network.getNetworkProvider(settingsManager.proxy), settingsManager, query, trip, errorString, tripReloadError)
.reload()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ class DirectionsViewModel @Inject internal constructor(
if (network == null) network = getTransportNetwork(NetworkId.DB)
requireNotNull(network)
_tripsRepository = TripsRepository(
application.applicationContext, network.networkProvider,
application.applicationContext, network.getNetworkProvider(settingsManager.proxy),
settingsManager, locationRepository, searchesRepository
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,9 @@ object TransportrUtils {

fun Location.hasLocation() = hasCoord() && (latAs1E6 != 0 || lonAs1E6 != 0)

fun updateGlobalHttpProxy(newProxy: Proxy, manager: TransportNetworkManager) {
// MapBox
fun updateMapBoxProxy(newProxy: Proxy) {
HttpRequestUtil.setOkHttpClient(
OkHttpClient.Builder()
.proxy(newProxy)
.build())
// public-transport-enabler
manager.transportNetwork.value?.let {
if (it.networkProvider is AbstractNetworkProvider)
(it.networkProvider as AbstractNetworkProvider).setProxy(newProxy)
}
}

0 comments on commit 068f0b1

Please sign in to comment.