From 7663887261e8be6ec36ba5fc4bd115a3778d4fdd Mon Sep 17 00:00:00 2001
From: David Alysson <83242836+DavidAly@users.noreply.github.com>
Date: Mon, 2 Sep 2024 09:11:20 -0300
Subject: [PATCH] LunarScans: Add random User-Agent (#4877)

Add random User-Agent
---
 src/en/lunarscans/build.gradle                |  6 +++-
 .../extension/en/lunarscans/LunarScans.kt     | 34 +++++++++++++++----
 2 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/src/en/lunarscans/build.gradle b/src/en/lunarscans/build.gradle
index cbf6e8b4e..d7228ca76 100644
--- a/src/en/lunarscans/build.gradle
+++ b/src/en/lunarscans/build.gradle
@@ -3,8 +3,12 @@ ext {
     extClass = '.LunarScans'
     themePkg = 'mangathemesia'
     baseUrl = 'https://lunarscan.org'
-    overrideVersionCode = 1
+    overrideVersionCode = 2
     isNsfw = true
 }
 
 apply from: "$rootDir/common.gradle"
+
+dependencies {
+    implementation project(':lib:randomua')
+}
diff --git a/src/en/lunarscans/src/eu/kanade/tachiyomi/extension/en/lunarscans/LunarScans.kt b/src/en/lunarscans/src/eu/kanade/tachiyomi/extension/en/lunarscans/LunarScans.kt
index f3a95f697..9d9db7ab1 100644
--- a/src/en/lunarscans/src/eu/kanade/tachiyomi/extension/en/lunarscans/LunarScans.kt
+++ b/src/en/lunarscans/src/eu/kanade/tachiyomi/extension/en/lunarscans/LunarScans.kt
@@ -1,8 +1,15 @@
 package eu.kanade.tachiyomi.extension.en.lunarscans
 
+import android.app.Application
+import androidx.preference.PreferenceScreen
+import eu.kanade.tachiyomi.lib.randomua.addRandomUAPreferenceToScreen
+import eu.kanade.tachiyomi.lib.randomua.getPrefCustomUA
+import eu.kanade.tachiyomi.lib.randomua.getPrefUAType
+import eu.kanade.tachiyomi.lib.randomua.setRandomUserAgent
 import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
 import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.network.interceptor.rateLimit
+import eu.kanade.tachiyomi.source.ConfigurableSource
 import eu.kanade.tachiyomi.source.model.Filter
 import eu.kanade.tachiyomi.source.model.FilterList
 import eu.kanade.tachiyomi.source.model.Page
@@ -10,14 +17,25 @@ import kotlinx.serialization.Serializable
 import kotlinx.serialization.decodeFromString
 import okhttp3.Request
 import org.jsoup.nodes.Document
+import uy.kohesive.injekt.Injekt
+import uy.kohesive.injekt.api.get
+
+class LunarScans :
+    MangaThemesia(
+        "Lunar Scans",
+        "https://lunarscan.org",
+        "en",
+        "/series",
+    ),
+    ConfigurableSource {
+
+    private val preferences = Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
 
-class LunarScans : MangaThemesia(
-    "Lunar Scans",
-    "https://lunarscan.org",
-    "en",
-    "/series",
-) {
     override val client = super.client.newBuilder()
+        .setRandomUserAgent(
+            preferences.getPrefUAType(),
+            preferences.getPrefCustomUA(),
+        )
         .rateLimit(1)
         .build()
 
@@ -71,6 +89,10 @@ class LunarScans : MangaThemesia(
         return imageUrls.mapIndexed { index, imageUrl -> Page(index, document.location(), imageUrl) }
     }
 
+    override fun setupPreferenceScreen(screen: PreferenceScreen) {
+        addRandomUAPreferenceToScreen(screen)
+    }
+
     @Serializable
     data class TSReader(
         val sources: List<ReaderImageSource>,