.class public Lcom/helpshift/network/HSDownloaderNetwork; .super Ljava/lang/Object; .source "SourceFile" # instance fields .field public final urlConnectionProvider:Lcom/helpshift/network/URLConnectionProvider; # direct methods .method public constructor (Lcom/helpshift/network/URLConnectionProvider;)V .locals 0 .line 28 invoke-direct {p0}, Ljava/lang/Object;->()V iput-object p1, p0, Lcom/helpshift/network/HSDownloaderNetwork;->urlConnectionProvider:Lcom/helpshift/network/URLConnectionProvider; return-void .end method .method public static generateHeaderValue(Ljava/util/List;)Ljava/lang/String; .locals 3 .line 123 invoke-static {p0}, Lcom/helpshift/util/ListUtil;->isEmpty(Ljava/util/List;)Z move-result v0 if-eqz v0, :cond_0 const-string p0, "" return-object p0 .line 127 :cond_0 new-instance v0, Ljava/lang/StringBuilder; const/4 v1, 0x0 invoke-interface {p0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/lang/String; invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V const/4 v1, 0x1 .line 128 :goto_0 invoke-interface {p0}, Ljava/util/List;->size()I move-result v2 if-ge v1, v2, :cond_1 const-string v2, ";" .line 129 invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-interface {p0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v2 check-cast v2, Ljava/lang/String; invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; add-int/lit8 v1, v1, 0x1 goto :goto_0 .line 131 :cond_1 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .end method # virtual methods .method public downloadResource(Ljava/lang/String;Ljava/util/Map;Ljava/io/File;)Lcom/helpshift/network/HSDownloaderResponse; .locals 19 move-object/from16 v1, p1 move-object/from16 v0, p2 const-string v2, "Error downloading resource: " const-string v3, "gzip" const-string v4, "dwnldrNet" const-string v5, "" const-string v6, "utf-8" .line 47 new-instance v9, Lorg/json/JSONObject; invoke-direct {v9}, Lorg/json/JSONObject;->()V const/16 v8, 0x194 move-object/from16 v14, p0 :try_start_0 iget-object v11, v14, Lcom/helpshift/network/HSDownloaderNetwork;->urlConnectionProvider:Lcom/helpshift/network/URLConnectionProvider; .line 50 invoke-virtual {v11, v1}, Lcom/helpshift/network/URLConnectionProvider;->getURL(Ljava/lang/String;)Ljava/net/URL; move-result-object v11 .line 51 invoke-virtual {v11}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection; move-result-object v11 invoke-static {v11}, Lcom/google/firebase/perf/network/FirebasePerfUrlConnection;->instrument(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v11 check-cast v11, Ljava/net/URLConnection; check-cast v11, Ljavax/net/ssl/HttpsURLConnection; const-string v12, "Accept-Encoding" .line 53 invoke-interface {v0, v12, v3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 55 invoke-interface/range {p2 .. p2}, Ljava/util/Map;->entrySet()Ljava/util/Set; move-result-object v12 invoke-interface {v12}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v12 :goto_0 invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z move-result v13 :try_end_0 .catch Ljava/net/UnknownHostException; {:try_start_0 .. :try_end_0} :catch_d .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_c .catchall {:try_start_0 .. :try_end_0} :catchall_0 if-eqz v13, :cond_0 :try_start_1 invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v13 check-cast v13, Ljava/util/Map$Entry; .line 56 invoke-interface {v13}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v15 check-cast v15, Ljava/lang/String; invoke-interface {v13}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; move-result-object v13 check-cast v13, Ljava/lang/String; invoke-virtual {v11, v15, v13}, Ljava/net/URLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V :try_end_1 .catch Ljava/net/UnknownHostException; {:try_start_1 .. :try_end_1} :catch_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 .catchall {:try_start_1 .. :try_end_1} :catchall_0 goto :goto_0 :catchall_0 move-exception v0 const/4 v10, 0x0 goto/16 :goto_f :catch_0 move-exception v0 move-object v3, v0 move-object v0, v5 :goto_1 const/4 v7, 0x0 :goto_2 const/4 v10, 0x0 goto/16 :goto_b :catch_1 move-exception v0 move-object v3, v0 move-object v0, v5 :goto_3 const/4 v7, 0x0 :goto_4 const/4 v10, 0x0 goto/16 :goto_d .line 59 :cond_0 :try_start_2 invoke-virtual {v11}, Ljava/net/HttpURLConnection;->getResponseCode()I move-result v8 .line 60 invoke-virtual {v11}, Ljava/net/URLConnection;->getContentEncoding()Ljava/lang/String; move-result-object v6 .line 61 invoke-virtual {v11}, Ljava/net/URLConnection;->getContentType()Ljava/lang/String; move-result-object v12 :try_end_2 .catch Ljava/net/UnknownHostException; {:try_start_2 .. :try_end_2} :catch_d .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_c .catchall {:try_start_2 .. :try_end_2} :catchall_0 .line 63 :try_start_3 invoke-virtual {v11}, Ljava/net/URLConnection;->getHeaderFields()Ljava/util/Map; move-result-object v13 .line 66 invoke-interface {v13}, Ljava/util/Map;->entrySet()Ljava/util/Set; move-result-object v15 invoke-interface {v15}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v15 :cond_1 :goto_5 invoke-interface {v15}, Ljava/util/Iterator;->hasNext()Z move-result v16 :try_end_3 .catch Ljava/net/UnknownHostException; {:try_start_3 .. :try_end_3} :catch_9 .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_8 .catchall {:try_start_3 .. :try_end_3} :catchall_0 if-eqz v16, :cond_4 :try_start_4 invoke-interface {v15}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v16 check-cast v16, Ljava/util/Map$Entry; .line 67 invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v17 if-nez v17, :cond_2 invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; move-result-object v17 if-nez v17, :cond_2 goto :goto_5 :catch_2 move-exception v0 move-object v3, v0 move-object v0, v5 move-object v5, v12 goto :goto_1 :catch_3 move-exception v0 move-object v3, v0 move-object v0, v5 move-object v5, v12 goto :goto_3 .line 71 :cond_2 invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v17 if-nez v17, :cond_3 .line 72 invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; move-result-object v16 check-cast v16, Ljava/util/List; invoke-static/range {v16 .. v16}, Lcom/helpshift/network/HSDownloaderNetwork;->generateHeaderValue(Ljava/util/List;)Ljava/lang/String; move-result-object v10 invoke-virtual {v9, v5, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; goto :goto_5 .line 76 :cond_3 invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v10 check-cast v10, Ljava/lang/String; invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; move-result-object v18 check-cast v18, Ljava/util/List; invoke-static/range {v18 .. v18}, Lcom/helpshift/network/HSDownloaderNetwork;->generateHeaderValue(Ljava/util/List;)Ljava/lang/String; move-result-object v7 invoke-virtual {v9, v10, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; .line 77 invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v7 check-cast v7, Ljava/lang/String; const-string v10, "Access-Control-Allow-Origin" invoke-virtual {v7, v10}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v7 if-eqz v7, :cond_1 .line 78 invoke-interface/range {v16 .. v16}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v7 check-cast v7, Ljava/lang/String; const-string v10, "*" invoke-virtual {v9, v7, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; :try_end_4 .catch Ljava/net/UnknownHostException; {:try_start_4 .. :try_end_4} :catch_3 .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_2 .catchall {:try_start_4 .. :try_end_4} :catchall_0 goto :goto_5 :cond_4 :try_start_5 const-string v7, "etag" .line 83 invoke-interface {v13, v7}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v7 check-cast v7, Ljava/util/List; .line 84 invoke-static {v7}, Lcom/helpshift/util/ListUtil;->isNotEmpty(Ljava/util/List;)Z move-result v10 :try_end_5 .catch Ljava/net/UnknownHostException; {:try_start_5 .. :try_end_5} :catch_9 .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_8 .catchall {:try_start_5 .. :try_end_5} :catchall_0 if-eqz v10, :cond_5 const/4 v10, 0x0 .line 85 :try_start_6 invoke-interface {v7, v10}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v7 check-cast v7, Ljava/lang/String; :try_end_6 .catch Ljava/net/UnknownHostException; {:try_start_6 .. :try_end_6} :catch_3 .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_6} :catch_2 .catchall {:try_start_6 .. :try_end_6} :catchall_0 move-object v5, v7 :cond_5 const/16 v7, 0x12c const/16 v10, 0xc8 if-lt v8, v10, :cond_8 if-gt v8, v7, :cond_8 .line 90 :try_start_7 invoke-virtual {v11}, Ljava/net/URLConnection;->getInputStream()Ljava/io/InputStream; move-result-object v11 .line 91 invoke-static {v6}, Lcom/helpshift/util/Utils;->isNotEmpty(Ljava/lang/String;)Z move-result v13 :try_end_7 .catch Ljava/net/UnknownHostException; {:try_start_7 .. :try_end_7} :catch_9 .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_7} :catch_8 .catchall {:try_start_7 .. :try_end_7} :catchall_0 if-eqz v13, :cond_6 :try_start_8 invoke-virtual {v6, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z move-result v3 if-eqz v3, :cond_6 .line 92 new-instance v3, Ljava/util/zip/GZIPInputStream; invoke-direct {v3, v11}, Ljava/util/zip/GZIPInputStream;->(Ljava/io/InputStream;)V :try_end_8 .catch Ljava/net/UnknownHostException; {:try_start_8 .. :try_end_8} :catch_3 .catch Ljava/lang/Exception; {:try_start_8 .. :try_end_8} :catch_2 .catchall {:try_start_8 .. :try_end_8} :catchall_0 move-object v11, v3 .line 95 :cond_6 :try_start_9 new-instance v3, Ljava/io/FileOutputStream; move-object/from16 v13, p3 invoke-direct {v3, v13}, Ljava/io/FileOutputStream;->(Ljava/io/File;)V :try_end_9 .catch Ljava/net/UnknownHostException; {:try_start_9 .. :try_end_9} :catch_9 .catch Ljava/lang/Exception; {:try_start_9 .. :try_end_9} :catch_8 .catchall {:try_start_9 .. :try_end_9} :catchall_0 const/16 v13, 0x2000 :try_start_a new-array v13, v13, [B .line 98 :goto_6 invoke-virtual {v11, v13}, Ljava/io/InputStream;->read([B)I move-result v15 :try_end_a .catch Ljava/net/UnknownHostException; {:try_start_a .. :try_end_a} :catch_7 .catch Ljava/lang/Exception; {:try_start_a .. :try_end_a} :catch_6 .catchall {:try_start_a .. :try_end_a} :catchall_1 const/4 v7, -0x1 if-eq v15, v7, :cond_7 const/4 v7, 0x0 .line 99 :try_start_b invoke-virtual {v3, v13, v7, v15}, Ljava/io/FileOutputStream;->write([BII)V :try_end_b .catch Ljava/net/UnknownHostException; {:try_start_b .. :try_end_b} :catch_5 .catch Ljava/lang/Exception; {:try_start_b .. :try_end_b} :catch_4 .catchall {:try_start_b .. :try_end_b} :catchall_1 const/16 v7, 0x12c goto :goto_6 :catchall_1 move-exception v0 move-object v10, v3 goto/16 :goto_f :catch_4 move-exception v0 :goto_7 move-object v10, v3 move-object v3, v0 move-object v0, v5 move-object v5, v12 goto/16 :goto_b :catch_5 move-exception v0 :goto_8 move-object v10, v3 move-object v3, v0 move-object v0, v5 move-object v5, v12 goto/16 :goto_d :cond_7 const/4 v7, 0x0 move-object/from16 v17, v3 goto :goto_9 :catch_6 move-exception v0 const/4 v7, 0x0 goto :goto_7 :catch_7 move-exception v0 const/4 v7, 0x0 goto :goto_8 :catch_8 move-exception v0 const/4 v7, 0x0 move-object v3, v0 move-object v0, v5 move-object v5, v12 goto/16 :goto_2 :catch_9 move-exception v0 const/4 v7, 0x0 move-object v3, v0 move-object v0, v5 move-object v5, v12 goto/16 :goto_4 :cond_8 const/4 v7, 0x0 const/16 v17, 0x0 :goto_9 if-lt v8, v10, :cond_9 const/16 v3, 0x12c if-le v8, v3, :cond_a :cond_9 const/16 v3, 0x130 if-ne v8, v3, :cond_b .line 104 :cond_a :try_start_c new-instance v3, Ljava/lang/StringBuilder; invoke-direct {v3}, Ljava/lang/StringBuilder;->()V const-string v10, "Successfully downloaded the resource with Url: " invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v10, " headers: " invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-static {v4, v0}, Lcom/helpshift/log/HSLogger;->d(Ljava/lang/String;Ljava/lang/String;)V :try_end_c .catch Ljava/net/UnknownHostException; {:try_start_c .. :try_end_c} :catch_b .catch Ljava/lang/Exception; {:try_start_c .. :try_end_c} :catch_a .catchall {:try_start_c .. :try_end_c} :catchall_2 const/4 v7, 0x1 goto :goto_a :catchall_2 move-exception v0 move-object/from16 v10, v17 goto/16 :goto_f :catch_a move-exception v0 move-object v3, v0 move-object v0, v5 move-object v5, v12 move-object/from16 v10, v17 goto :goto_b :catch_b move-exception v0 move-object v3, v0 move-object v0, v5 move-object v5, v12 move-object/from16 v10, v17 goto :goto_d .line 115 :cond_b :goto_a invoke-static/range {v17 .. v17}, Lcom/helpshift/util/Utils;->closeQuietly(Ljava/io/Closeable;)V move-object v10, v5 move v13, v7 move-object v11, v12 move-object v12, v6 goto :goto_e :catch_c move-exception v0 const/4 v7, 0x0 move-object v3, v0 move-object v0, v5 goto/16 :goto_2 :catch_d move-exception v0 const/4 v7, 0x0 move-object v3, v0 move-object v0, v5 goto/16 :goto_4 .line 112 :goto_b :try_start_d new-instance v11, Ljava/lang/StringBuilder; invoke-direct {v11}, Ljava/lang/StringBuilder;->()V invoke-virtual {v11, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v11, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-static {v4, v1, v3}, Lcom/helpshift/log/HSLogger;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V :try_end_d .catchall {:try_start_d .. :try_end_d} :catchall_3 .line 115 :goto_c invoke-static {v10}, Lcom/helpshift/util/Utils;->closeQuietly(Ljava/io/Closeable;)V move-object v10, v0 move-object v11, v5 move-object v12, v6 move v13, v7 goto :goto_e :catchall_3 move-exception v0 goto :goto_f .line 109 :goto_d :try_start_e new-instance v11, Ljava/lang/StringBuilder; invoke-direct {v11}, Ljava/lang/StringBuilder;->()V invoke-virtual {v11, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v11, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v1, " \n " invoke-virtual {v11, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v3}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String; move-result-object v1 invoke-virtual {v11, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-static {v4, v1}, Lcom/helpshift/log/HSLogger;->e(Ljava/lang/String;Ljava/lang/String;)V :try_end_e .catchall {:try_start_e .. :try_end_e} :catchall_3 goto :goto_c .line 118 :goto_e new-instance v0, Lcom/helpshift/network/HSDownloaderResponse; move-object v7, v0 invoke-direct/range {v7 .. v13}, Lcom/helpshift/network/HSDownloaderResponse;->(ILorg/json/JSONObject;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V return-object v0 .line 115 :goto_f invoke-static {v10}, Lcom/helpshift/util/Utils;->closeQuietly(Ljava/io/Closeable;)V .line 116 throw v0 .end method