diff --git a/app/src/androidTest/java/net/waterfox/android/ui/robots/SettingsRobot.kt b/app/src/androidTest/java/net/waterfox/android/ui/robots/SettingsRobot.kt index 47afad4..1d4df12 100644 --- a/app/src/androidTest/java/net/waterfox/android/ui/robots/SettingsRobot.kt +++ b/app/src/androidTest/java/net/waterfox/android/ui/robots/SettingsRobot.kt @@ -106,7 +106,7 @@ class SettingsRobot { // ABOUT SECTION fun verifyAboutHeading() = assertAboutHeading() - fun verifyRateOnGooglePlay() = assertTrue(rateOnGooglePlayHeading().waitForExists(waitingTime)) +// fun verifyRateOnGooglePlay() = assertTrue(rateOnGooglePlayHeading().waitForExists(waitingTime)) fun verifyAboutWaterfoxPreview() = assertTrue(aboutWaterfoxHeading().waitForExists(waitingTime)) fun verifyGooglePlayRedirect() = assertGooglePlayRedirect() @@ -561,7 +561,7 @@ private fun assertAboutHeading(): ViewInteraction { // settingsList().scrollToEnd(LISTS_MAXSWIPES) // rateOnGooglePlay.waitForExists(waitingTime) - return rateOnGooglePlay// +// return rateOnGooglePlay// //} private fun aboutWaterfoxHeading(): UiObject { diff --git a/app/src/main/java/net/waterfox/android/MainActivity.kt b/app/src/main/java/net/waterfox/android/MainActivity.kt new file mode 100644 index 0000000..cddf760 --- /dev/null +++ b/app/src/main/java/net/waterfox/android/MainActivity.kt @@ -0,0 +1,24 @@ +package net.waterfox.android + +import android.os.Bundle +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import net.waterfox.android.network.OkHttpClientProvider + +class MainActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + // Beispiel-URL, die abgefragt wird + val url = "https://detectportal.firefox.com" // Dies wird blockiert + + // Anfrage senden + val response = OkHttpClientProvider.makeRequest(url) + + // Antwort anzeigen + Toast.makeText(this, "Antwort: $response", Toast.LENGTH_LONG).show() + } +} + diff --git a/app/src/main/java/net/waterfox/android/network/OkHttpClientProvider.kt b/app/src/main/java/net/waterfox/android/network/OkHttpClientProvider.kt new file mode 100644 index 0000000..9862a0f --- /dev/null +++ b/app/src/main/java/net/waterfox/android/network/OkHttpClientProvider.kt @@ -0,0 +1,60 @@ +package net.waterfox.android.network + +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Interceptor +import okhttp3.Response +import java.io.IOException + +object OkHttpClientProvider { + + // Interceptor, der Domains blockiert + private val blockDomainInterceptor = Interceptor { chain -> + val request = chain.request() + + // Logge die URL der Anfrage + println("Intercepting request to: ${request.url.host}") + + // Hier kannst du Domains definieren, die blockiert werden sollen + val blockedDomains = listOf("detectportal.firefox.com", "content-signature-2.cdn.mozilla.net") + + // Logge, ob die Domain blockiert werden soll + if (blockedDomains.any { request.url.host.contains(it) }) { + println("BLOCKING DOMAIN: ${request.url.host}") + // Wenn die Domain blockiert werden soll, gib eine Fehlerantwort zurück + throw IOException("Blocked domain: ${request.url.host}") + } + + // Ansonsten fahre mit der Anfrage fort + println("Request allowed to proceed: ${request.url.host}") + return@Interceptor chain.proceed(request) + } + + // Erstelle einen OkHttpClient mit dem BlockDomainInterceptor + fun getOkHttpClient(): OkHttpClient { + return OkHttpClient.Builder() + .addInterceptor(blockDomainInterceptor) // Hier fügen wir den Interceptor hinzu + .build() + } + + // Beispiel für eine einfache Anfrage + fun makeRequest(url: String): String { + val client = getOkHttpClient() + val request = Request.Builder() + .url(url) + .build() + + return try { + // Führe die Anfrage aus + val response = client.newCall(request).execute() + // Logge die Antwort + println("Antwort: ${response.body?.string()}") + response.body?.string() ?: "Leere Antwort" + } catch (e: Exception) { + // Fehlerbehandlung, wenn eine Ausnahme auftritt + println("Fehler: ${e.message}") + return "Fehler: ${e.message}" + } + } +} + diff --git a/app/src/main/java/net/waterfox/android/repository/NetworkRepository.kt b/app/src/main/java/net/waterfox/android/repository/NetworkRepository.kt new file mode 100644 index 0000000..b1118ba --- /dev/null +++ b/app/src/main/java/net/waterfox/android/repository/NetworkRepository.kt @@ -0,0 +1,24 @@ +package net.waterfox.android.repository + +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import net.waterfox.android.network.OkHttpClientProvider + +class NetworkRepository { + + // Diese Funktion holt Daten von einer angegebenen URL + fun fetchData(url: String): String { + try { + val client: OkHttpClient = OkHttpClientProvider.getOkHttpClient() + val request = Request.Builder().url(url).build() + val response: Response = client.newCall(request).execute() + + // Gib den Antworttext zurück + return response.body?.string() ?: "No Data" + } catch (e: Exception) { + return "Fehler: ${e.message}" + } + } +} + diff --git a/app/src/main/java/net/waterfox/android/viewmodel/MainViewModel.kt b/app/src/main/java/net/waterfox/android/viewmodel/MainViewModel.kt new file mode 100644 index 0000000..e835966 --- /dev/null +++ b/app/src/main/java/net/waterfox/android/viewmodel/MainViewModel.kt @@ -0,0 +1,17 @@ +package net.waterfox.android.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.liveData +import net.waterfox.android.repository.NetworkRepository + +class MainViewModel : ViewModel() { + + private val repository = NetworkRepository() // Instanz des Repositories erstellen + + // Funktion, die die LiveData von der Netzwerkanfrage liefert + fun fetchData(url: String) = liveData { + val data = repository.fetchData(url) // Netzwerkoperation aufrufen + emit(data) // LiveData mit dem Ergebnis versorgen + } +} + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..b30d715 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,15 @@ + + + + + + +