UrlHttpClient.smali
.class public Lcom/amazonaws/http/UrlHttpClient;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/amazonaws/http/HttpClient;
# static fields
.field public static final b:Lcom/amazonaws/logging/Log;
# instance fields
.field public final a:Lcom/amazonaws/ClientConfiguration;
# direct methods
.method public static constructor <clinit>()V
.registers 1
const-class v0, Lcom/amazonaws/http/UrlHttpClient;
invoke-static {v0}, Lcom/amazonaws/logging/LogFactory;->a(Ljava/lang/Class;)Lcom/amazonaws/logging/Log;
move-result-object v0
sput-object v0, Lcom/amazonaws/http/UrlHttpClient;->b:Lcom/amazonaws/logging/Log;
return-void
.end method
.method public constructor <init>(Lcom/amazonaws/ClientConfiguration;)V
.registers 2
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Lcom/amazonaws/http/UrlHttpClient;->a:Lcom/amazonaws/ClientConfiguration;
return-void
.end method
# virtual methods
.method public final a(Lcom/amazonaws/http/HttpRequest;)Lcom/amazonaws/http/HttpResponse;
.registers 13
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
iget-object v0, p1, Lcom/amazonaws/http/HttpRequest;->b:Ljava/net/URI;
.line 2
invoke-virtual {v0}, Ljava/net/URI;->toURL()Ljava/net/URL;
move-result-object v0
.line 3
invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
move-result-object v0
invoke-static {v0}, Lcom/google/firebase/perf/network/FirebasePerfUrlConnection;->instrument(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/net/URLConnection;
check-cast v0, Ljava/net/HttpURLConnection;
.line 4
iget-object v1, p0, Lcom/amazonaws/http/UrlHttpClient;->a:Lcom/amazonaws/ClientConfiguration;
invoke-static {v1}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 5
iget-object v1, p0, Lcom/amazonaws/http/UrlHttpClient;->a:Lcom/amazonaws/ClientConfiguration;
.line 6
iget v1, v1, Lcom/amazonaws/ClientConfiguration;->f:I
.line 7
invoke-virtual {v0, v1}, Ljava/net/URLConnection;->setConnectTimeout(I)V
.line 8
iget-object v1, p0, Lcom/amazonaws/http/UrlHttpClient;->a:Lcom/amazonaws/ClientConfiguration;
.line 9
iget v1, v1, Lcom/amazonaws/ClientConfiguration;->e:I
.line 10
invoke-virtual {v0, v1}, Ljava/net/URLConnection;->setReadTimeout(I)V
const/4 v1, 0x0
.line 11
invoke-virtual {v0, v1}, Ljava/net/HttpURLConnection;->setInstanceFollowRedirects(Z)V
.line 12
invoke-virtual {v0, v1}, Ljava/net/URLConnection;->setUseCaches(Z)V
.line 13
iget-boolean v2, p1, Lcom/amazonaws/http/HttpRequest;->e:Z
if-eqz v2, :cond_33
.line 14
invoke-virtual {v0, v1}, Ljava/net/HttpURLConnection;->setChunkedStreamingMode(I)V
.line 15
:cond_33
instance-of v2, v0, Ljavax/net/ssl/HttpsURLConnection;
if-eqz v2, :cond_3f
.line 16
move-object v2, v0
check-cast v2, Ljavax/net/ssl/HttpsURLConnection;
.line 17
iget-object v2, p0, Lcom/amazonaws/http/UrlHttpClient;->a:Lcom/amazonaws/ClientConfiguration;
invoke-static {v2}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 18
:cond_3f
iget-object v2, p1, Lcom/amazonaws/http/HttpRequest;->c:Ljava/util/Map;
if-eqz v2, :cond_85
.line 19
invoke-interface {v2}, Ljava/util/Map;->isEmpty()Z
move-result v2
if-nez v2, :cond_85
.line 20
iget-object v2, p1, Lcom/amazonaws/http/HttpRequest;->c:Ljava/util/Map;
.line 21
invoke-interface {v2}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v2
invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_53
:goto_53
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_85
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/util/Map$Entry;
.line 22
invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/lang/String;
const-string v5, "Content-Length"
.line 23
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-nez v5, :cond_53
const-string v5, "Host"
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_76
goto :goto_53
:cond_76
const-string v5, "Expect"
.line 24
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
.line 25
invoke-interface {v3}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/String;
invoke-virtual {v0, v4, v3}, Ljava/net/URLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_53
.line 26
:cond_85
iget-object v2, p1, Lcom/amazonaws/http/HttpRequest;->a:Ljava/lang/String;
.line 27
invoke-virtual {v0, v2}, Ljava/net/HttpURLConnection;->setRequestMethod(Ljava/lang/String;)V
.line 28
iget-object v2, p1, Lcom/amazonaws/http/HttpRequest;->d:Ljava/io/InputStream;
if-eqz v2, :cond_c3
.line 29
invoke-virtual {p1}, Lcom/amazonaws/http/HttpRequest;->a()J
move-result-wide v2
const-wide/16 v4, 0x0
cmp-long v6, v2, v4
if-ltz v6, :cond_c3
const/4 v2, 0x1
.line 30
invoke-virtual {v0, v2}, Ljava/net/URLConnection;->setDoOutput(Z)V
.line 31
iget-boolean v2, p1, Lcom/amazonaws/http/HttpRequest;->e:Z
if-nez v2, :cond_a8
.line 32
invoke-virtual {p1}, Lcom/amazonaws/http/HttpRequest;->a()J
move-result-wide v2
long-to-int v3, v2
invoke-virtual {v0, v3}, Ljava/net/HttpURLConnection;->setFixedLengthStreamingMode(I)V
.line 33
:cond_a8
invoke-virtual {v0}, Ljava/net/URLConnection;->getOutputStream()Ljava/io/OutputStream;
move-result-object v2
.line 34
iget-object v3, p1, Lcom/amazonaws/http/HttpRequest;->d:Ljava/io/InputStream;
const/16 v4, 0x2000
new-array v4, v4, [B
.line 35
:goto_b2
invoke-virtual {v3, v4}, Ljava/io/InputStream;->read([B)I
move-result v5
const/4 v6, -0x1
if-eq v5, v6, :cond_bd
.line 36
invoke-virtual {v2, v4, v1, v5}, Ljava/io/OutputStream;->write([BII)V
goto :goto_b2
.line 37
:cond_bd
invoke-virtual {v2}, Ljava/io/OutputStream;->flush()V
.line 38
invoke-virtual {v2}, Ljava/io/OutputStream;->close()V
.line 39
:cond_c3
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getResponseMessage()Ljava/lang/String;
move-result-object v2
.line 40
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getResponseCode()I
move-result v3
.line 41
invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getErrorStream()Ljava/io/InputStream;
move-result-object v4
if-nez v4, :cond_df
.line 42
iget-object p1, p1, Lcom/amazonaws/http/HttpRequest;->a:Ljava/lang/String;
const-string v5, "HEAD"
.line 43
invoke-virtual {v5, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-nez p1, :cond_df
.line 44
:try_start_db
invoke-virtual {v0}, Ljava/net/URLConnection;->getInputStream()Ljava/io/InputStream;
move-result-object v4
:try_end_df
.catch Ljava/io/IOException; {:try_start_db .. :try_end_df} :catch_df
.line 45
:catch_df
:cond_df
new-instance p1, Lcom/amazonaws/http/HttpResponse$Builder;
invoke-direct {p1}, Lcom/amazonaws/http/HttpResponse$Builder;-><init>()V
.line 46
iput v3, p1, Lcom/amazonaws/http/HttpResponse$Builder;->b:I
.line 47
iput-object v2, p1, Lcom/amazonaws/http/HttpResponse$Builder;->a:Ljava/lang/String;
.line 48
iput-object v4, p1, Lcom/amazonaws/http/HttpResponse$Builder;->c:Ljava/io/InputStream;
.line 49
invoke-virtual {v0}, Ljava/net/URLConnection;->getHeaderFields()Ljava/util/Map;
move-result-object v0
invoke-interface {v0}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_f6
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_121
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/util/Map$Entry;
.line 50
invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v3
if-nez v3, :cond_109
goto :goto_f6
.line 51
:cond_109
invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/String;
invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/util/List;
invoke-interface {v2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
.line 52
iget-object v4, p1, Lcom/amazonaws/http/HttpResponse$Builder;->d:Ljava/util/HashMap;
invoke-virtual {v4, v3, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_f6
.line 53
:cond_121
new-instance v0, Lcom/amazonaws/http/HttpResponse;
iget-object v6, p1, Lcom/amazonaws/http/HttpResponse$Builder;->a:Ljava/lang/String;
iget v7, p1, Lcom/amazonaws/http/HttpResponse$Builder;->b:I
iget-object v1, p1, Lcom/amazonaws/http/HttpResponse$Builder;->d:Ljava/util/HashMap;
.line 54
invoke-static {v1}, Ljava/util/Collections;->unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;
move-result-object v8
iget-object v9, p1, Lcom/amazonaws/http/HttpResponse$Builder;->c:Ljava/io/InputStream;
const/4 v10, 0x0
move-object v5, v0
invoke-direct/range {v5 .. v10}, Lcom/amazonaws/http/HttpResponse;-><init>(Ljava/lang/String;ILjava/util/Map;Ljava/io/InputStream;Lcom/amazonaws/http/HttpResponse$1;)V
return-object v0
.end method