DefaultHttpRequestFactory.smali
.class public Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;
.super Ljava/lang/Object;
.source "DefaultHttpRequestFactory.java"
# interfaces
.implements Lio/fabric/sdk/android/services/network/HttpRequestFactory;
# static fields
.field private static final HTTPS:Ljava/lang/String; = "https"
# instance fields
.field private attemptedSslInit:Z
.field private final logger:Lio/fabric/sdk/android/Logger;
.field private pinningInfo:Lio/fabric/sdk/android/services/network/PinningInfoProvider;
.field private sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
# direct methods
.method public constructor <init>()V
.registers 2
.line 49
new-instance v0, Lio/fabric/sdk/android/DefaultLogger;
invoke-direct {v0}, Lio/fabric/sdk/android/DefaultLogger;-><init>()V
invoke-direct {p0, v0}, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;-><init>(Lio/fabric/sdk/android/Logger;)V
return-void
.end method
.method public constructor <init>(Lio/fabric/sdk/android/Logger;)V
.registers 2
.line 52
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 53
iput-object p1, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->logger:Lio/fabric/sdk/android/Logger;
return-void
.end method
.method private declared-synchronized getSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
.registers 2
monitor-enter p0
.line 122
:try_start_1
iget-object v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
if-nez v0, :cond_f
iget-boolean v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->attemptedSslInit:Z
if-nez v0, :cond_f
.line 123
invoke-direct {p0}, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->initSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
move-result-object v0
iput-object v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
.line 125
:cond_f
iget-object v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
:try_end_11
.catchall {:try_start_1 .. :try_end_11} :catchall_13
monitor-exit p0
return-object v0
:catchall_13
move-exception v0
monitor-exit p0
throw v0
.end method
.method private declared-synchronized initSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
.registers 5
monitor-enter p0
const/4 v0, 0x1
.line 129
:try_start_2
iput-boolean v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->attemptedSslInit:Z
:try_end_4
.catchall {:try_start_2 .. :try_end_4} :catchall_22
.line 132
:try_start_4
iget-object v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->pinningInfo:Lio/fabric/sdk/android/services/network/PinningInfoProvider;
invoke-static {v0}, Lio/fabric/sdk/android/services/network/NetworkUtils;->getSSLSocketFactory(Lio/fabric/sdk/android/services/network/PinningInfoProvider;)Ljavax/net/ssl/SSLSocketFactory;
move-result-object v0
.line 134
iget-object v1, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->logger:Lio/fabric/sdk/android/Logger;
const-string v2, "Fabric"
const-string v3, "Custom SSL pinning enabled"
invoke-interface {v1, v2, v3}, Lio/fabric/sdk/android/Logger;->d(Ljava/lang/String;Ljava/lang/String;)V
:try_end_13
.catch Ljava/lang/Exception; {:try_start_4 .. :try_end_13} :catch_15
.catchall {:try_start_4 .. :try_end_13} :catchall_22
.line 135
monitor-exit p0
return-object v0
:catch_15
move-exception v0
.line 137
:try_start_16
iget-object v1, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->logger:Lio/fabric/sdk/android/Logger;
const-string v2, "Fabric"
const-string v3, "Exception while validating pinned certs"
invoke-interface {v1, v2, v3, v0}, Lio/fabric/sdk/android/Logger;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_1f
.catchall {:try_start_16 .. :try_end_1f} :catchall_22
const/4 v0, 0x0
.line 139
monitor-exit p0
return-object v0
:catchall_22
move-exception v0
monitor-exit p0
throw v0
.end method
.method private isHttps(Ljava/lang/String;)Z
.registers 3
if-eqz p1, :cond_12
.line 118
sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale;
invoke-virtual {p1, v0}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String;
move-result-object p1
const-string v0, "https"
invoke-virtual {p1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result p1
if-eqz p1, :cond_12
const/4 p1, 0x1
goto :goto_13
:cond_12
const/4 p1, 0x0
:goto_13
return p1
.end method
.method private declared-synchronized resetSSLSocketFactory()V
.registers 2
monitor-enter p0
const/4 v0, 0x0
.line 70
:try_start_2
iput-boolean v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->attemptedSslInit:Z
const/4 v0, 0x0
.line 71
iput-object v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
:try_end_7
.catchall {:try_start_2 .. :try_end_7} :catchall_9
.line 72
monitor-exit p0
return-void
:catchall_9
move-exception v0
monitor-exit p0
throw v0
.end method
# virtual methods
.method public buildHttpRequest(Lio/fabric/sdk/android/services/network/HttpMethod;Ljava/lang/String;)Lio/fabric/sdk/android/services/network/HttpRequest;
.registers 4
.line 76
invoke-static {}, Ljava/util/Collections;->emptyMap()Ljava/util/Map;
move-result-object v0
invoke-virtual {p0, p1, p2, v0}, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->buildHttpRequest(Lio/fabric/sdk/android/services/network/HttpMethod;Ljava/lang/String;Ljava/util/Map;)Lio/fabric/sdk/android/services/network/HttpRequest;
move-result-object p1
return-object p1
.end method
.method public buildHttpRequest(Lio/fabric/sdk/android/services/network/HttpMethod;Ljava/lang/String;Ljava/util/Map;)Lio/fabric/sdk/android/services/network/HttpRequest;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/fabric/sdk/android/services/network/HttpMethod;",
"Ljava/lang/String;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;)",
"Lio/fabric/sdk/android/services/network/HttpRequest;"
}
.end annotation
.line 83
sget-object v0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory$1;->$SwitchMap$io$fabric$sdk$android$services$network$HttpMethod:[I
invoke-virtual {p1}, Lio/fabric/sdk/android/services/network/HttpMethod;->ordinal()I
move-result p1
aget p1, v0, p1
const/4 v0, 0x1
if-eq p1, v0, :cond_2b
const/4 v1, 0x2
if-eq p1, v1, :cond_26
const/4 p3, 0x3
if-eq p1, p3, :cond_21
const/4 p3, 0x4
if-ne p1, p3, :cond_19
.line 97
invoke-static {p2}, Lio/fabric/sdk/android/services/network/HttpRequest;->delete(Ljava/lang/CharSequence;)Lio/fabric/sdk/android/services/network/HttpRequest;
move-result-object p1
goto :goto_2f
.line 101
:cond_19
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Unsupported HTTP method!"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 93
:cond_21
invoke-static {p2}, Lio/fabric/sdk/android/services/network/HttpRequest;->put(Ljava/lang/CharSequence;)Lio/fabric/sdk/android/services/network/HttpRequest;
move-result-object p1
goto :goto_2f
.line 89
:cond_26
invoke-static {p2, p3, v0}, Lio/fabric/sdk/android/services/network/HttpRequest;->post(Ljava/lang/CharSequence;Ljava/util/Map;Z)Lio/fabric/sdk/android/services/network/HttpRequest;
move-result-object p1
goto :goto_2f
.line 85
:cond_2b
invoke-static {p2, p3, v0}, Lio/fabric/sdk/android/services/network/HttpRequest;->get(Ljava/lang/CharSequence;Ljava/util/Map;Z)Lio/fabric/sdk/android/services/network/HttpRequest;
move-result-object p1
.line 105
:goto_2f
invoke-direct {p0, p2}, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->isHttps(Ljava/lang/String;)Z
move-result p2
if-eqz p2, :cond_48
iget-object p2, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->pinningInfo:Lio/fabric/sdk/android/services/network/PinningInfoProvider;
if-eqz p2, :cond_48
.line 106
invoke-direct {p0}, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->getSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
move-result-object p2
if-eqz p2, :cond_48
.line 109
invoke-virtual {p1}, Lio/fabric/sdk/android/services/network/HttpRequest;->getConnection()Ljava/net/HttpURLConnection;
move-result-object p3
check-cast p3, Ljavax/net/ssl/HttpsURLConnection;
invoke-virtual {p3, p2}, Ljavax/net/ssl/HttpsURLConnection;->setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V
:cond_48
return-object p1
.end method
.method public getPinningInfoProvider()Lio/fabric/sdk/android/services/network/PinningInfoProvider;
.registers 2
.line 58
iget-object v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->pinningInfo:Lio/fabric/sdk/android/services/network/PinningInfoProvider;
return-object v0
.end method
.method public setPinningInfoProvider(Lio/fabric/sdk/android/services/network/PinningInfoProvider;)V
.registers 3
.line 63
iget-object v0, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->pinningInfo:Lio/fabric/sdk/android/services/network/PinningInfoProvider;
if-eq v0, p1, :cond_9
.line 64
iput-object p1, p0, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->pinningInfo:Lio/fabric/sdk/android/services/network/PinningInfoProvider;
.line 65
invoke-direct {p0}, Lio/fabric/sdk/android/services/network/DefaultHttpRequestFactory;->resetSSLSocketFactory()V
:cond_9
return-void
.end method