generated from ReVanced/revanced-patches-template
-
-
Notifications
You must be signed in to change notification settings - Fork 310
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(Tumblr): Add
Fix old versions
patch (#2954)
Co-authored-by: oSumAtrIX <[email protected]>
- Loading branch information
Showing
3 changed files
with
63 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
src/main/kotlin/app/revanced/patches/tumblr/fixes/FixOldVersionsPatch.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package app.revanced.patches.tumblr.fixes | ||
|
||
import app.revanced.patcher.data.BytecodeContext | ||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions | ||
import app.revanced.patcher.patch.BytecodePatch | ||
import app.revanced.patcher.patch.annotation.CompatiblePackage | ||
import app.revanced.patcher.patch.annotation.Patch | ||
import app.revanced.patches.tumblr.fixes.fingerprints.HttpPathParserFingerprint | ||
import app.revanced.util.exception | ||
|
||
@Patch( | ||
name = "Fix old versions", | ||
description = "Fixes old versions of the app (v33.2 and earlier) breaking due to Tumblr removing remnants of Tumblr" + | ||
" Live from the API, which causes many requests to fail. This patch has no effect on newer versions of the app.", | ||
compatiblePackages = [CompatiblePackage("com.tumblr")], | ||
use = false, | ||
) | ||
@Suppress("unused") | ||
object FixOldVersionsPatch : BytecodePatch( | ||
setOf(HttpPathParserFingerprint), | ||
) { | ||
override fun execute(context: BytecodeContext) = | ||
HttpPathParserFingerprint.result?.let { | ||
val endIndex = it.scanResult.patternScanResult!!.endIndex | ||
|
||
it.mutableMethod.addInstructions( | ||
endIndex + 1, | ||
""" | ||
# Remove "?live_now" from the request path p2. | ||
# p2 = p2.replace(p1, p3) | ||
const-string p1, ",?live_now" | ||
const-string p3, "" | ||
invoke-virtual {p2, p1, p3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; | ||
move-result-object p2 | ||
""", | ||
) | ||
} ?: throw HttpPathParserFingerprint.exception | ||
} |
15 changes: 15 additions & 0 deletions
15
src/main/kotlin/app/revanced/patches/tumblr/fixes/fingerprints/HttpPathParserFingerprint.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package app.revanced.patches.tumblr.fixes.fingerprints | ||
|
||
import app.revanced.patcher.fingerprint.MethodFingerprint | ||
import com.android.tools.smali.dexlib2.Opcode | ||
|
||
// Fingerprint for the parseHttpMethodAndPath from retrofit2 | ||
// https://github.com/square/retrofit/blob/ebf87b10997e2136af4d335276fa950221852c64/retrofit/src/main/java/retrofit2/RequestFactory.java#L270-L302 | ||
// Injecting here allows modifying the path/query params of API endpoints defined via annotations | ||
object HttpPathParserFingerprint : MethodFingerprint( | ||
strings = listOf("Only one HTTP method is allowed. Found: %s and %s."), | ||
opcodes = listOf( | ||
Opcode.IPUT_OBJECT, | ||
Opcode.IPUT_BOOLEAN | ||
) | ||
) |