Primer paso de la investigacion. Se aportan el .apk, las carpetas con el apk extraido y el apk descompilado. El archivo API_DOCUMENTATION.md es un archivo donde se anotaran los descubrimientos del funcionamiento de la API, y los .py son scripts para probar la funcionalidad de la API con los métodos que vayamos encontrando. Finalmente, los archivos .js son scripts de Frida para extraer informacion de la APP durante la ejecucion.
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
package com.adif.elcanomovil.domain.usecases.recentSearch;
|
||||
|
||||
import com.adif.elcanomovil.domain.repositories.searches.SearchesRepository;
|
||||
import com.adif.elcanomovil.domain.usecases.stations.GetStationByIdUseCase;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.jvm.internal.SourceDebugExtension;
|
||||
|
||||
@Metadata(d1 = {"\u0000$\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\u0015\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005¢\u0006\u0002\u0010\u0006J\u0014\u0010\u0007\u001a\b\u0012\u0004\u0012\u00020\t0\bH\u0086B¢\u0006\u0002\u0010\nR\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u000b"}, d2 = {"Lcom/adif/elcanomovil/domain/usecases/recentSearch/GetRecentSearchesUseCase;", "", "searchesRepository", "Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;", "getStationByIdUseCase", "Lcom/adif/elcanomovil/domain/usecases/stations/GetStationByIdUseCase;", "(Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;Lcom/adif/elcanomovil/domain/usecases/stations/GetStationByIdUseCase;)V", "invoke", "", "Lcom/adif/elcanomovil/domain/entities/station/Station;", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "domain_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
@SourceDebugExtension({"SMAP\nGetRecentSearchesUseCase.kt\nKotlin\n*S Kotlin\n*F\n+ 1 GetRecentSearchesUseCase.kt\ncom/adif/elcanomovil/domain/usecases/recentSearch/GetRecentSearchesUseCase\n+ 2 _Collections.kt\nkotlin/collections/CollectionsKt___CollectionsKt\n+ 3 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,21:1\n1603#2,9:22\n1855#2:31\n1856#2:33\n1612#2:34\n1#3:32\n*S KotlinDebug\n*F\n+ 1 GetRecentSearchesUseCase.kt\ncom/adif/elcanomovil/domain/usecases/recentSearch/GetRecentSearchesUseCase\n*L\n13#1:22,9\n13#1:31\n13#1:33\n13#1:34\n13#1:32\n*E\n"})
|
||||
/* loaded from: classes.dex */
|
||||
public final class GetRecentSearchesUseCase {
|
||||
private final GetStationByIdUseCase getStationByIdUseCase;
|
||||
private final SearchesRepository searchesRepository;
|
||||
|
||||
public GetRecentSearchesUseCase(SearchesRepository searchesRepository, GetStationByIdUseCase getStationByIdUseCase) {
|
||||
Intrinsics.checkNotNullParameter(searchesRepository, "searchesRepository");
|
||||
Intrinsics.checkNotNullParameter(getStationByIdUseCase, "getStationByIdUseCase");
|
||||
this.searchesRepository = searchesRepository;
|
||||
this.getStationByIdUseCase = getStationByIdUseCase;
|
||||
}
|
||||
|
||||
/* JADX WARN: Code restructure failed: missing block: B:18:0x0086, code lost:
|
||||
|
||||
if (r8 == r1) goto L26;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:19:0x0088, code lost:
|
||||
|
||||
return r1;
|
||||
*/
|
||||
/* JADX WARN: Code restructure failed: missing block: B:30:0x004f, code lost:
|
||||
|
||||
if (r8 == r1) goto L26;
|
||||
*/
|
||||
/* JADX WARN: Removed duplicated region for block: B:15:0x0065 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:22:0x0093 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:24:0x008f */
|
||||
/* JADX WARN: Removed duplicated region for block: B:29:0x0042 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:8:0x0024 */
|
||||
/* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:18:0x0086 -> B:11:0x0089). Please report as a decompilation issue!!! */
|
||||
/* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:21:0x008c -> B:12:0x008d). Please report as a decompilation issue!!! */
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public final java.lang.Object invoke(kotlin.coroutines.Continuation<? super java.util.List<com.adif.elcanomovil.domain.entities.station.Station>> r8) {
|
||||
/*
|
||||
r7 = this;
|
||||
boolean r0 = r8 instanceof n1.a
|
||||
if (r0 == 0) goto L13
|
||||
r0 = r8
|
||||
n1.a r0 = (n1.a) r0
|
||||
int r1 = r0.f7848f
|
||||
r2 = -2147483648(0xffffffff80000000, float:-0.0)
|
||||
r3 = r1 & r2
|
||||
if (r3 == 0) goto L13
|
||||
int r1 = r1 - r2
|
||||
r0.f7848f = r1
|
||||
goto L18
|
||||
L13:
|
||||
n1.a r0 = new n1.a
|
||||
r0.<init>(r7, r8)
|
||||
L18:
|
||||
java.lang.Object r8 = r0.f7846d
|
||||
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
|
||||
int r2 = r0.f7848f
|
||||
r3 = 2
|
||||
r4 = 1
|
||||
if (r2 == 0) goto L42
|
||||
if (r2 == r4) goto L3c
|
||||
if (r2 != r3) goto L34
|
||||
java.util.Iterator r7 = r0.f7845c
|
||||
java.util.Collection r2 = r0.f7844b
|
||||
java.util.Collection r2 = (java.util.Collection) r2
|
||||
com.adif.elcanomovil.domain.usecases.recentSearch.GetRecentSearchesUseCase r4 = r0.f7843a
|
||||
kotlin.ResultKt.throwOnFailure(r8)
|
||||
goto L89
|
||||
L34:
|
||||
java.lang.IllegalStateException r7 = new java.lang.IllegalStateException
|
||||
java.lang.String r8 = "call to 'resume' before 'invoke' with coroutine"
|
||||
r7.<init>(r8)
|
||||
throw r7
|
||||
L3c:
|
||||
com.adif.elcanomovil.domain.usecases.recentSearch.GetRecentSearchesUseCase r7 = r0.f7843a
|
||||
kotlin.ResultKt.throwOnFailure(r8)
|
||||
goto L52
|
||||
L42:
|
||||
kotlin.ResultKt.throwOnFailure(r8)
|
||||
com.adif.elcanomovil.domain.repositories.searches.SearchesRepository r8 = r7.searchesRepository
|
||||
r0.f7843a = r7
|
||||
r0.f7848f = r4
|
||||
java.lang.Object r8 = r8.fetchStations(r0)
|
||||
if (r8 != r1) goto L52
|
||||
goto L88
|
||||
L52:
|
||||
java.lang.Iterable r8 = (java.lang.Iterable) r8
|
||||
java.util.ArrayList r2 = new java.util.ArrayList
|
||||
r2.<init>()
|
||||
java.util.Iterator r8 = r8.iterator()
|
||||
r4 = r7
|
||||
r7 = r8
|
||||
L5f:
|
||||
boolean r8 = r7.hasNext()
|
||||
if (r8 == 0) goto L93
|
||||
java.lang.Object r8 = r7.next()
|
||||
com.adif.elcanomovil.domain.entities.StorableData r8 = (com.adif.elcanomovil.domain.entities.StorableData) r8
|
||||
boolean r5 = r8 instanceof com.adif.elcanomovil.domain.entities.StorableStation
|
||||
if (r5 == 0) goto L8c
|
||||
com.adif.elcanomovil.domain.usecases.stations.GetStationByIdUseCase r5 = r4.getStationByIdUseCase
|
||||
com.adif.elcanomovil.domain.entities.StorableStation r8 = (com.adif.elcanomovil.domain.entities.StorableStation) r8
|
||||
java.lang.String r8 = r8.getStationCode()
|
||||
r0.f7843a = r4
|
||||
r6 = r2
|
||||
java.util.Collection r6 = (java.util.Collection) r6
|
||||
r0.f7844b = r6
|
||||
r0.f7845c = r7
|
||||
r0.f7848f = r3
|
||||
java.lang.Object r8 = r5.invoke(r8, r0)
|
||||
if (r8 != r1) goto L89
|
||||
L88:
|
||||
return r1
|
||||
L89:
|
||||
com.adif.elcanomovil.domain.entities.station.Station r8 = (com.adif.elcanomovil.domain.entities.station.Station) r8
|
||||
goto L8d
|
||||
L8c:
|
||||
r8 = 0
|
||||
L8d:
|
||||
if (r8 == 0) goto L5f
|
||||
r2.add(r8)
|
||||
goto L5f
|
||||
L93:
|
||||
java.util.List r2 = (java.util.List) r2
|
||||
return r2
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.adif.elcanomovil.domain.usecases.recentSearch.GetRecentSearchesUseCase.invoke(kotlin.coroutines.Continuation):java.lang.Object");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.adif.elcanomovil.domain.usecases.recentSearch;
|
||||
|
||||
import com.adif.elcanomovil.domain.entities.StorableData;
|
||||
import com.adif.elcanomovil.domain.repositories.searches.SearchesRepository;
|
||||
import java.util.List;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlinx.coroutines.BuildersKt;
|
||||
import kotlinx.coroutines.Dispatchers;
|
||||
import n1.b;
|
||||
|
||||
@Metadata(d1 = {"\u0000\u001e\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\u0014\u0010\u0005\u001a\b\u0012\u0004\u0012\u00020\u00070\u0006H\u0086B¢\u0006\u0002\u0010\bR\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\t"}, d2 = {"Lcom/adif/elcanomovil/domain/usecases/recentSearch/GetRecentTrainSearchesUseCase;", "", "searchesRepository", "Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;", "(Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;)V", "invoke", "", "Lcom/adif/elcanomovil/domain/entities/StorableData;", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "domain_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class GetRecentTrainSearchesUseCase {
|
||||
private final SearchesRepository searchesRepository;
|
||||
|
||||
public GetRecentTrainSearchesUseCase(SearchesRepository searchesRepository) {
|
||||
Intrinsics.checkNotNullParameter(searchesRepository, "searchesRepository");
|
||||
this.searchesRepository = searchesRepository;
|
||||
}
|
||||
|
||||
public final Object invoke(Continuation<? super List<? extends StorableData>> continuation) {
|
||||
return BuildersKt.withContext(Dispatchers.getIO(), new b(this, null), continuation);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.adif.elcanomovil.domain.usecases.recentSearch;
|
||||
|
||||
import com.adif.elcanomovil.domain.repositories.searches.SearchesRepository;
|
||||
import java.util.List;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.Unit;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.coroutines.intrinsics.IntrinsicsKt;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlinx.coroutines.BuildersKt;
|
||||
import kotlinx.coroutines.Dispatchers;
|
||||
import n1.c;
|
||||
|
||||
@Metadata(d1 = {"\u0000$\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\u001c\u0010\u0005\u001a\u00020\u00062\f\u0010\u0007\u001a\b\u0012\u0004\u0012\u00020\t0\bH\u0086B¢\u0006\u0002\u0010\nR\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u000b"}, d2 = {"Lcom/adif/elcanomovil/domain/usecases/recentSearch/SaveRecentSearchUseCase;", "", "searchesRepository", "Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;", "(Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;)V", "invoke", "", "stationsCode", "", "", "(Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "domain_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class SaveRecentSearchUseCase {
|
||||
private final SearchesRepository searchesRepository;
|
||||
|
||||
public SaveRecentSearchUseCase(SearchesRepository searchesRepository) {
|
||||
Intrinsics.checkNotNullParameter(searchesRepository, "searchesRepository");
|
||||
this.searchesRepository = searchesRepository;
|
||||
}
|
||||
|
||||
public final Object invoke(List<String> list, Continuation<? super Unit> continuation) {
|
||||
Object withContext = BuildersKt.withContext(Dispatchers.getIO(), new c(this, list, null), continuation);
|
||||
return withContext == IntrinsicsKt.getCOROUTINE_SUSPENDED() ? withContext : Unit.INSTANCE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.adif.elcanomovil.domain.usecases.recentSearch;
|
||||
|
||||
import com.adif.elcanomovil.commonNavGraph.arguments.NavArguments;
|
||||
import com.adif.elcanomovil.domain.repositories.searches.SearchesRepository;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.Unit;
|
||||
import kotlin.coroutines.Continuation;
|
||||
import kotlin.coroutines.intrinsics.IntrinsicsKt;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlinx.coroutines.BuildersKt;
|
||||
import kotlinx.coroutines.Dispatchers;
|
||||
import n1.d;
|
||||
|
||||
@Metadata(d1 = {"\u0000(\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0005\n\u0002\u0010\t\n\u0002\b\u0004\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004JP\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\b2\u0006\u0010\t\u001a\u00020\b2\u0006\u0010\n\u001a\u00020\b2\u0006\u0010\u000b\u001a\u00020\b2\u0006\u0010\f\u001a\u00020\b2\u0006\u0010\r\u001a\u00020\u000e2\u0006\u0010\u000f\u001a\u00020\u000e2\b\u0010\u0010\u001a\u0004\u0018\u00010\bH\u0086B¢\u0006\u0002\u0010\u0011R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u0012"}, d2 = {"Lcom/adif/elcanomovil/domain/usecases/recentSearch/SaveRecentTrainSearchUseCase;", "", "searchesRepository", "Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;", "(Lcom/adif/elcanomovil/domain/repositories/searches/SearchesRepository;)V", "invoke", "", NavArguments.ARG_DYNAMIC_LINKS_OPERATOR, "", NavArguments.ARG_DYNAMIC_LINKS_COMMERCIAL_PRODUCT, NavArguments.ARG_DYNAMIC_LINKS_COMMERCIAL_NUMBER, NavArguments.ARG_DYNAMIC_LINKS_STATION_CODE, NavArguments.ARG_DYNAMIC_LINKS_STATION_TO_CODE, "date", "", NavArguments.ARG_DYNAMIC_LINKS_LAUNCHDATE, "observation", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJLjava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "domain_proNon_corporateRelease"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes.dex */
|
||||
public final class SaveRecentTrainSearchUseCase {
|
||||
private final SearchesRepository searchesRepository;
|
||||
|
||||
public SaveRecentTrainSearchUseCase(SearchesRepository searchesRepository) {
|
||||
Intrinsics.checkNotNullParameter(searchesRepository, "searchesRepository");
|
||||
this.searchesRepository = searchesRepository;
|
||||
}
|
||||
|
||||
public final Object invoke(String str, String str2, String str3, String str4, String str5, long j4, long j5, String str6, Continuation<? super Unit> continuation) {
|
||||
Object withContext = BuildersKt.withContext(Dispatchers.getIO(), new d(this, str, str2, str3, str4, str5, j4, j5, str6, null), continuation);
|
||||
return withContext == IntrinsicsKt.getCOROUTINE_SUSPENDED() ? withContext : Unit.INSTANCE;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user