From 3b02f95c02a3289bd7ecc5999c294f68c19c1c99 Mon Sep 17 00:00:00 2001
From: Andreas <andreas.everos@gmail.com>
Date: Thu, 25 Mar 2021 00:18:50 +0100
Subject: [PATCH] Imgur intent filter for Guya (#6277)

---
 src/en/guya/AndroidManifest.xml               | 11 +++-
 src/en/guya/build.gradle                      |  2 +-
 .../extension/en/guya/GuyaUrlActivity.kt      | 52 +++++++++++++------
 3 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/src/en/guya/AndroidManifest.xml b/src/en/guya/AndroidManifest.xml
index 3fa10fee4..ba161dbbe 100644
--- a/src/en/guya/AndroidManifest.xml
+++ b/src/en/guya/AndroidManifest.xml
@@ -22,7 +22,16 @@
                     android:host="guya.moe"
                     android:pathPattern="/proxy/..*"
                     android:scheme="https" />
+
+                <data
+                    android:host="*imgur.com"
+                    android:pathPattern="/a/..*"
+                    android:scheme="https" />
+                <data
+                    android:host="*imgur.com"
+                    android:pathPattern="/gallery/..*"
+                    android:scheme="https" />
             </intent-filter>
         </activity>
     </application>
-</manifest>
+</manifest>
\ No newline at end of file
diff --git a/src/en/guya/build.gradle b/src/en/guya/build.gradle
index aeec3bba6..5fcdbc596 100644
--- a/src/en/guya/build.gradle
+++ b/src/en/guya/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'Guya'
     pkgNameSuffix = "en.guya"
     extClass = '.Guya'
-    extVersionCode = 16
+    extVersionCode = 17
     libVersion = '1.2'
 }
 
diff --git a/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/GuyaUrlActivity.kt b/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/GuyaUrlActivity.kt
index 23db1fe54..78d7f969e 100644
--- a/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/GuyaUrlActivity.kt
+++ b/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/GuyaUrlActivity.kt
@@ -17,23 +17,21 @@ class GuyaUrlActivity : Activity() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        val host = intent?.data?.host
         val pathSegments = intent?.data?.pathSegments
-        if (pathSegments != null && pathSegments.size >= 3) {
-            Log.d("GuyaUrlActivity", pathSegments[0])
 
-            val query = when (pathSegments[0]) {
-                "proxy" -> {
-                    val source = pathSegments[1]
-                    val id = pathSegments[2]
-                    "${Guya.PROXY_PREFIX}$source/$id"
-                }
-                else -> {
-                    val slug = pathSegments[2]
-                    "${Guya.SLUG_PREFIX}$slug"
-                }
+        if (host != null && pathSegments != null) {
+            val query = when (host) {
+                "m.imgur.com", "imgur.com" -> fromImgur(pathSegments)
+                else -> fromGuya(pathSegments)
+            }
+
+            if (query == null) {
+                Log.e("GuyaUrlActivity", "Unable to parse URI from intent $intent")
+                finish()
+                exitProcess(1)
             }
 
-            // Gotta do it like this since slug title != actual title
             val mainIntent = Intent().apply {
                 action = "eu.kanade.tachiyomi.SEARCH"
                 putExtra("query", query)
@@ -45,11 +43,35 @@ class GuyaUrlActivity : Activity() {
             } catch (e: ActivityNotFoundException) {
                 Log.e("GuyaUrlActivity", e.toString())
             }
-        } else {
-            Log.e("GuyaUrlActivity", "Unable to parse URI from intent $intent")
         }
 
         finish()
         exitProcess(0)
     }
+
+    private fun fromImgur(pathSegments: List<String>): String? {
+        if (pathSegments.size >= 2) {
+            val id = pathSegments[1]
+
+            return "${Guya.PROXY_PREFIX}imgur/$id"
+        }
+        return null
+    }
+
+    private fun fromGuya(pathSegments: MutableList<String>): String? {
+        if (pathSegments.size >= 3) {
+            return when (pathSegments[0]) {
+                "proxy" -> {
+                    val source = pathSegments[1]
+                    val id = pathSegments[2]
+                    "${Guya.PROXY_PREFIX}$source/$id"
+                }
+                else -> {
+                    val slug = pathSegments[2]
+                    "${Guya.SLUG_PREFIX}$slug"
+                }
+            }
+        }
+        return null
+    }
 }