Downloader.smali
.class public Lcom/h/m/Downloader;
.super Ljava/lang/Object;
# instance fields
.field private mHttpConnection:Lcom/h/r/HttpConnection;
# direct methods
.method public constructor <init>(Lcom/h/r/NetworkExecutor;)V
.registers 3
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
new-instance v0, Lcom/h/r/HttpConnection;
invoke-direct {v0, p1}, Lcom/h/r/HttpConnection;-><init>(Lcom/h/r/NetworkExecutor;)V
iput-object v0, p0, Lcom/h/m/Downloader;->mHttpConnection:Lcom/h/r/HttpConnection;
return-void
.end method
.method private getConnectionRetry(Lcom/h/m/DownloadRequest;)Lcom/h/r/Connection;
.registers 5
iget-object v0, p0, Lcom/h/m/Downloader;->mHttpConnection:Lcom/h/r/HttpConnection;
invoke-virtual {v0, p1}, Lcom/h/r/HttpConnection;->getConnection(Lcom/h/r/BasicRequest;)Lcom/h/r/Connection;
move-result-object v0
invoke-virtual {v0}, Lcom/h/r/Connection;->exception()Ljava/lang/Exception;
move-result-object v1
if-eqz v1, :cond_d
throw v1
:cond_d
invoke-virtual {v0}, Lcom/h/r/Connection;->responseHeaders()Lcom/h/r/Headers;
move-result-object v1
invoke-virtual {v1}, Lcom/h/r/Headers;->getResponseCode()I
move-result v1
const/16 v2, 0x1a0
if-ne v1, v2, :cond_25
const-string/jumbo v0, "Range"
invoke-virtual {p1, v0}, Lcom/h/m/DownloadRequest;->removeHeader(Ljava/lang/String;)Lcom/h/r/BasicRequest;
iget-object v0, p0, Lcom/h/m/Downloader;->mHttpConnection:Lcom/h/r/HttpConnection;
invoke-virtual {v0, p1}, Lcom/h/r/HttpConnection;->getConnection(Lcom/h/r/BasicRequest;)Lcom/h/r/Connection;
move-result-object v0
:cond_25
return-object v0
.end method
.method private getRealFileName(Lcom/h/m/DownloadRequest;Lcom/h/r/Headers;)Ljava/lang/String;
.registers 6
const/4 v0, 0x0
invoke-virtual {p2}, Lcom/h/r/Headers;->getContentDisposition()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v2
if-nez v2, :cond_3d
const-string/jumbo v2, "filename"
invoke-static {v1, v2, v0}, Lcom/h/q/HeaderUtils;->parseHeadValue(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v1
if-nez v1, :cond_3d
:try_start_18
invoke-virtual {p1}, Lcom/h/m/DownloadRequest;->getParamsEncoding()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Ljava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
:try_end_1f
.catch Ljava/io/UnsupportedEncodingException; {:try_start_18 .. :try_end_1f} :catch_6b
move-result-object v0
:goto_20
const-string/jumbo v1, "\""
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_3d
const-string/jumbo v1, "\""
invoke-virtual {v0, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_3d
const/4 v1, 0x1
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v2
add-int/lit8 v2, v2, -0x1
invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
:cond_3d
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v1
if-eqz v1, :cond_5d
invoke-virtual {p1}, Lcom/h/m/DownloadRequest;->url()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/net/URI;->create(Ljava/lang/String;)Ljava/net/URI;
move-result-object v1
invoke-virtual {v1}, Ljava/net/URI;->getPath()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v2
if-eqz v2, :cond_5e
invoke-virtual {v0}, Ljava/lang/String;->hashCode()I
move-result v0
invoke-static {v0}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
move-result-object v0
:cond_5d
:goto_5d
return-object v0
:cond_5e
const-string/jumbo v0, "/"
invoke-virtual {v1, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
array-length v1, v0
add-int/lit8 v1, v1, -0x1
aget-object v0, v0, v1
goto :goto_5d
:catch_6b
move-exception v1
goto :goto_20
.end method
.method private validateDevice(Ljava/lang/String;)V
.registers 5
invoke-static {}, Lcom/h/q/NetUtils;->isNetworkAvailable()Z
move-result v0
if-nez v0, :cond_f
new-instance v0, Lcom/h/n/NetworkError;
const-string/jumbo v1, "Network is not available, please check network and permission: INTERNET, ACCESS_WIFI_STATE, ACCESS_NETWORK_STATE."
invoke-direct {v0, v1}, Lcom/h/n/NetworkError;-><init>(Ljava/lang/String;)V
throw v0
:cond_f
invoke-static {p1}, Lcom/h/q/IOUtils;->createFolder(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_2b
new-instance v0, Lcom/h/n/StorageReadWriteError;
new-instance v1, Ljava/lang/StringBuilder;
const-string/jumbo v2, "SD card isn\'t available, please check SD card and permission: WRITE_EXTERNAL_STORAGE.\nYou must pay attention to Android6.0 RunTime Permissions: https://github.com/yanzhenjie/AndPermission.\nFailed to create folder: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/h/n/StorageReadWriteError;-><init>(Ljava/lang/String;)V
throw v0
:cond_2b
return-void
.end method
.method private validateParam(Lcom/h/m/DownloadRequest;Lcom/h/m/DownloadListener;)V
.registers 5
if-nez p1, :cond_b
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string/jumbo v1, "DownloadRequest == null."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_b
if-nez p2, :cond_16
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string/jumbo v1, "DownloadListener == null."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_16
return-void
.end method
# virtual methods
.method public download(ILcom/h/m/DownloadRequest;Lcom/h/m/DownloadListener;)V
.registers 38
move-object/from16 v0, p0
move-object/from16 v1, p2
move-object/from16 v2, p3
invoke-direct {v0, v1, v2}, Lcom/h/m/Downloader;->validateParam(Lcom/h/m/DownloadRequest;Lcom/h/m/DownloadListener;)V
const/4 v7, 0x0
const/4 v12, 0x0
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->getFileDir()Ljava/lang/String;
move-result-object v5
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->getFileName()Ljava/lang/String;
move-result-object v8
:try_start_13
invoke-static {v5}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v4
if-eqz v4, :cond_580
invoke-static {}, Lcom/h/r/NoHttp;->getContext()Landroid/content/Context;
move-result-object v4
invoke-virtual {v4}, Landroid/content/Context;->getFilesDir()Ljava/io/File;
move-result-object v4
invoke-virtual {v4}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
:try_end_24
.catch Ljava/net/MalformedURLException; {:try_start_13 .. :try_end_24} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_13 .. :try_end_24} :catch_56e
.catch Ljava/net/SocketTimeoutException; {:try_start_13 .. :try_end_24} :catch_564
.catch Ljava/io/IOException; {:try_start_13 .. :try_end_24} :catch_54a
.catch Ljava/lang/Exception; {:try_start_13 .. :try_end_24} :catch_506
.catchall {:try_start_13 .. :try_end_24} :catchall_52f
move-result-object v29
:goto_25
:try_start_25
move-object/from16 v0, p0
move-object/from16 v1, v29
invoke-direct {v0, v1}, Lcom/h/m/Downloader;->validateDevice(Ljava/lang/String;)V
const-string/jumbo v4, "Range"
move-object/from16 v0, p2
invoke-virtual {v0, v4}, Lcom/h/m/DownloadRequest;->removeHeader(Ljava/lang/String;)Lcom/h/r/BasicRequest;
invoke-static {v8}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v4
if-eqz v4, :cond_16d
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-direct {v0, v1}, Lcom/h/m/Downloader;->getConnectionRetry(Lcom/h/m/DownloadRequest;)Lcom/h/r/Connection;
:try_end_41
.catch Ljava/net/MalformedURLException; {:try_start_25 .. :try_end_41} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_25 .. :try_end_41} :catch_56e
.catch Ljava/net/SocketTimeoutException; {:try_start_25 .. :try_end_41} :catch_564
.catch Ljava/io/IOException; {:try_start_25 .. :try_end_41} :catch_54f
.catch Ljava/lang/Exception; {:try_start_25 .. :try_end_41} :catch_506
.catchall {:try_start_25 .. :try_end_41} :catchall_52f
move-result-object v7
:try_start_42
invoke-virtual {v7}, Lcom/h/r/Connection;->exception()Ljava/lang/Exception;
move-result-object v4
if-eqz v4, :cond_6b
throw v4
:try_end_49
.catch Ljava/net/MalformedURLException; {:try_start_42 .. :try_end_49} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_42 .. :try_end_49} :catch_dd
.catch Ljava/net/SocketTimeoutException; {:try_start_42 .. :try_end_49} :catch_1d0
.catch Ljava/io/IOException; {:try_start_42 .. :try_end_49} :catch_556
.catch Ljava/lang/Exception; {:try_start_42 .. :try_end_49} :catch_540
.catchall {:try_start_42 .. :try_end_49} :catchall_533
:catch_49
move-exception v4
move-object v5, v12
:goto_4b
:try_start_4b
invoke-static {v4}, Lcom/h/r/Logger;->e(Ljava/lang/Throwable;)V
new-instance v6, Lcom/h/n/URLError;
invoke-virtual {v4}, Ljava/net/MalformedURLException;->getMessage()Ljava/lang/String;
move-result-object v4
invoke-direct {v6, v4}, Lcom/h/n/URLError;-><init>(Ljava/lang/String;)V
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v6}, Lcom/h/m/DownloadListener;->onDownloadError(ILjava/lang/Exception;)V
:try_end_5e
.catchall {:try_start_4b .. :try_end_5e} :catchall_53b
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-static {v5}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static {v7}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
:goto_6a
return-void
:cond_6b
:try_start_6b
invoke-virtual {v7}, Lcom/h/r/Connection;->responseHeaders()Lcom/h/r/Headers;
move-result-object v6
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-direct {v0, v1, v6}, Lcom/h/m/Downloader;->getRealFileName(Lcom/h/m/DownloadRequest;Lcom/h/r/Headers;)Ljava/lang/String;
move-result-object v9
new-instance v8, Ljava/io/File;
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v4, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
const-string/jumbo v5, ".nohttp"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
move-object/from16 v0, v29
invoke-direct {v8, v0, v4}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->isRange()Z
move-result v4
if-eqz v4, :cond_160
invoke-virtual {v8}, Ljava/io/File;->exists()Z
move-result v4
if-eqz v4, :cond_160
invoke-virtual {v8}, Ljava/io/File;->length()J
move-result-wide v4
const-wide/16 v10, 0x0
cmp-long v4, v4, v10
if-lez v4, :cond_160
invoke-virtual {v7}, Lcom/h/r/Connection;->close()V
invoke-virtual {v8}, Ljava/io/File;->length()J
move-result-wide v4
const-string/jumbo v6, "Range"
new-instance v10, Ljava/lang/StringBuilder;
const-string/jumbo v11, "bytes="
invoke-direct {v10, v11}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v10, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v10
const-string/jumbo v11, "-"
invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v10
invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v10
move-object/from16 v0, p2
invoke-virtual {v0, v6, v10}, Lcom/h/m/DownloadRequest;->setHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/h/r/BasicRequest;
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-direct {v0, v1}, Lcom/h/m/Downloader;->getConnectionRetry(Lcom/h/m/DownloadRequest;)Lcom/h/r/Connection;
move-result-object v7
invoke-virtual {v7}, Lcom/h/r/Connection;->exception()Ljava/lang/Exception;
move-result-object v6
if-eqz v6, :cond_101
throw v6
:try_end_dd
.catch Ljava/net/MalformedURLException; {:try_start_6b .. :try_end_dd} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_6b .. :try_end_dd} :catch_dd
.catch Ljava/net/SocketTimeoutException; {:try_start_6b .. :try_end_dd} :catch_1d0
.catch Ljava/io/IOException; {:try_start_6b .. :try_end_dd} :catch_556
.catch Ljava/lang/Exception; {:try_start_6b .. :try_end_dd} :catch_540
.catchall {:try_start_6b .. :try_end_dd} :catchall_533
:catch_dd
move-exception v4
move-object/from16 v28, v7
:goto_e0
:try_start_e0
invoke-static {v4}, Lcom/h/r/Logger;->e(Ljava/lang/Throwable;)V
new-instance v5, Lcom/h/n/UnKnownHostError;
invoke-virtual {v4}, Ljava/net/UnknownHostException;->getMessage()Ljava/lang/String;
move-result-object v4
invoke-direct {v5, v4}, Lcom/h/n/UnKnownHostError;-><init>(Ljava/lang/String;)V
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v5}, Lcom/h/m/DownloadListener;->onDownloadError(ILjava/lang/Exception;)V
:try_end_f3
.catchall {:try_start_e0 .. :try_end_f3} :catchall_4f8
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-static {v12}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:cond_101
:try_start_101
invoke-virtual {v7}, Lcom/h/r/Connection;->responseHeaders()Lcom/h/r/Headers;
move-result-object v6
const-string/jumbo v10, "Range"
move-object/from16 v0, p2
invoke-virtual {v0, v10}, Lcom/h/m/DownloadRequest;->containsHeader(Ljava/lang/String;)Z
move-result v10
if-nez v10, :cond_165
invoke-static {v8}, Lcom/h/q/IOUtils;->delFileOrFolder(Ljava/io/File;)Z
:try_end_113
.catch Ljava/net/MalformedURLException; {:try_start_101 .. :try_end_113} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_101 .. :try_end_113} :catch_dd
.catch Ljava/net/SocketTimeoutException; {:try_start_101 .. :try_end_113} :catch_1d0
.catch Ljava/io/IOException; {:try_start_101 .. :try_end_113} :catch_556
.catch Ljava/lang/Exception; {:try_start_101 .. :try_end_113} :catch_540
.catchall {:try_start_101 .. :try_end_113} :catchall_533
const-wide/16 v4, 0x0
move-object/from16 v30, v8
move-object v13, v9
move-object/from16 v28, v7
move-wide v7, v4
move-object v9, v6
:goto_11c
:try_start_11c
const-string/jumbo v4, "----------Response Start----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-virtual {v9}, Lcom/h/r/Headers;->getResponseCode()I
move-result v4
invoke-virtual/range {v28 .. v28}, Lcom/h/r/Connection;->serverStream()Ljava/io/InputStream;
move-result-object v31
const/16 v5, 0x190
if-lt v4, v5, :cond_216
new-instance v5, Lcom/h/n/ServerError;
new-instance v6, Ljava/lang/StringBuilder;
const-string/jumbo v7, "Download failed, the server response code is "
invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v4
const-string/jumbo v6, ": "
invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->url()Ljava/lang/String;
move-result-object v6
invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-direct {v5, v4}, Lcom/h/n/ServerError;-><init>(Ljava/lang/String;)V
invoke-static/range {v31 .. v31}, Lcom/h/q/IOUtils;->toString(Ljava/io/InputStream;)Ljava/lang/String;
move-result-object v4
invoke-virtual {v5, v4}, Lcom/h/n/ServerError;->setErrorBody(Ljava/lang/String;)V
throw v5
:try_end_15a
.catch Ljava/net/MalformedURLException; {:try_start_11c .. :try_end_15a} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_11c .. :try_end_15a} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_11c .. :try_end_15a} :catch_28e
.catch Ljava/io/IOException; {:try_start_11c .. :try_end_15a} :catch_34e
.catch Ljava/lang/Exception; {:try_start_11c .. :try_end_15a} :catch_544
.catchall {:try_start_11c .. :try_end_15a} :catchall_4f8
:catch_15a
move-exception v4
move-object v5, v12
move-object/from16 v7, v28
goto/16 :goto_4b
:cond_160
:try_start_160
invoke-static {v8}, Lcom/h/q/IOUtils;->delFileOrFolder(Ljava/io/File;)Z
:try_end_163
.catch Ljava/net/MalformedURLException; {:try_start_160 .. :try_end_163} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_160 .. :try_end_163} :catch_dd
.catch Ljava/net/SocketTimeoutException; {:try_start_160 .. :try_end_163} :catch_1d0
.catch Ljava/io/IOException; {:try_start_160 .. :try_end_163} :catch_556
.catch Ljava/lang/Exception; {:try_start_160 .. :try_end_163} :catch_540
.catchall {:try_start_160 .. :try_end_163} :catchall_533
const-wide/16 v4, 0x0
:cond_165
move-object/from16 v30, v8
move-object v13, v9
move-object/from16 v28, v7
move-wide v7, v4
move-object v9, v6
goto :goto_11c
:cond_16d
:try_start_16d
new-instance v6, Ljava/io/File;
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v4, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
const-string/jumbo v5, ".nohttp"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
move-object/from16 v0, v29
invoke-direct {v6, v0, v4}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->isRange()Z
move-result v4
if-eqz v4, :cond_1f4
invoke-virtual {v6}, Ljava/io/File;->exists()Z
move-result v4
if-eqz v4, :cond_1f4
invoke-virtual {v6}, Ljava/io/File;->length()J
move-result-wide v4
const-wide/16 v10, 0x0
cmp-long v4, v4, v10
if-lez v4, :cond_1f4
invoke-virtual {v6}, Ljava/io/File;->length()J
move-result-wide v4
const-string/jumbo v9, "Range"
new-instance v10, Ljava/lang/StringBuilder;
const-string/jumbo v11, "bytes="
invoke-direct {v10, v11}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v10, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v10
const-string/jumbo v11, "-"
invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v10
invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v10
move-object/from16 v0, p2
invoke-virtual {v0, v9, v10}, Lcom/h/m/DownloadRequest;->setHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/h/r/BasicRequest;
:goto_1c1
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-direct {v0, v1}, Lcom/h/m/Downloader;->getConnectionRetry(Lcom/h/m/DownloadRequest;)Lcom/h/r/Connection;
:try_end_1c8
.catch Ljava/net/MalformedURLException; {:try_start_16d .. :try_end_1c8} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_16d .. :try_end_1c8} :catch_56e
.catch Ljava/net/SocketTimeoutException; {:try_start_16d .. :try_end_1c8} :catch_564
.catch Ljava/io/IOException; {:try_start_16d .. :try_end_1c8} :catch_54f
.catch Ljava/lang/Exception; {:try_start_16d .. :try_end_1c8} :catch_506
.catchall {:try_start_16d .. :try_end_1c8} :catchall_52f
move-result-object v7
:try_start_1c9
invoke-virtual {v7}, Lcom/h/r/Connection;->exception()Ljava/lang/Exception;
move-result-object v9
if-eqz v9, :cond_1fa
throw v9
:try_end_1d0
.catch Ljava/net/MalformedURLException; {:try_start_1c9 .. :try_end_1d0} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_1c9 .. :try_end_1d0} :catch_dd
.catch Ljava/net/SocketTimeoutException; {:try_start_1c9 .. :try_end_1d0} :catch_1d0
.catch Ljava/io/IOException; {:try_start_1c9 .. :try_end_1d0} :catch_556
.catch Ljava/lang/Exception; {:try_start_1c9 .. :try_end_1d0} :catch_540
.catchall {:try_start_1c9 .. :try_end_1d0} :catchall_533
:catch_1d0
move-exception v4
move-object/from16 v28, v7
:goto_1d3
:try_start_1d3
invoke-static {v4}, Lcom/h/r/Logger;->e(Ljava/lang/Throwable;)V
new-instance v5, Lcom/h/n/TimeoutError;
invoke-virtual {v4}, Ljava/net/SocketTimeoutException;->getMessage()Ljava/lang/String;
move-result-object v4
invoke-direct {v5, v4}, Lcom/h/n/TimeoutError;-><init>(Ljava/lang/String;)V
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v5}, Lcom/h/m/DownloadListener;->onDownloadError(ILjava/lang/Exception;)V
:try_end_1e6
.catchall {:try_start_1d3 .. :try_end_1e6} :catchall_4f8
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-static {v12}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:cond_1f4
:try_start_1f4
invoke-static {v6}, Lcom/h/q/IOUtils;->delFileOrFolder(Ljava/io/File;)Z
:try_end_1f7
.catch Ljava/net/MalformedURLException; {:try_start_1f4 .. :try_end_1f7} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_1f4 .. :try_end_1f7} :catch_56e
.catch Ljava/net/SocketTimeoutException; {:try_start_1f4 .. :try_end_1f7} :catch_564
.catch Ljava/io/IOException; {:try_start_1f4 .. :try_end_1f7} :catch_54f
.catch Ljava/lang/Exception; {:try_start_1f4 .. :try_end_1f7} :catch_506
.catchall {:try_start_1f4 .. :try_end_1f7} :catchall_52f
const-wide/16 v4, 0x0
goto :goto_1c1
:cond_1fa
:try_start_1fa
invoke-virtual {v7}, Lcom/h/r/Connection;->responseHeaders()Lcom/h/r/Headers;
move-result-object v9
const-string/jumbo v10, "Range"
move-object/from16 v0, p2
invoke-virtual {v0, v10}, Lcom/h/m/DownloadRequest;->containsHeader(Ljava/lang/String;)Z
move-result v10
if-nez v10, :cond_578
invoke-static {v6}, Lcom/h/q/IOUtils;->delFileOrFolder(Ljava/io/File;)Z
:try_end_20c
.catch Ljava/net/MalformedURLException; {:try_start_1fa .. :try_end_20c} :catch_49
.catch Ljava/net/UnknownHostException; {:try_start_1fa .. :try_end_20c} :catch_dd
.catch Ljava/net/SocketTimeoutException; {:try_start_1fa .. :try_end_20c} :catch_1d0
.catch Ljava/io/IOException; {:try_start_1fa .. :try_end_20c} :catch_556
.catch Ljava/lang/Exception; {:try_start_1fa .. :try_end_20c} :catch_540
.catchall {:try_start_1fa .. :try_end_20c} :catchall_533
const-wide/16 v4, 0x0
move-object/from16 v30, v6
move-object v13, v8
move-object/from16 v28, v7
move-wide v7, v4
goto/16 :goto_11c
:cond_216
const/16 v5, 0xce
if-ne v4, v5, :cond_291
:try_start_21a
invoke-virtual {v9}, Lcom/h/r/Headers;->getContentRange()Ljava/lang/String;
:try_end_21d
.catch Ljava/net/MalformedURLException; {:try_start_21a .. :try_end_21d} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_21a .. :try_end_21d} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_21a .. :try_end_21d} :catch_28e
.catch Ljava/io/IOException; {:try_start_21a .. :try_end_21d} :catch_34e
.catch Ljava/lang/Exception; {:try_start_21a .. :try_end_21d} :catch_544
.catchall {:try_start_21a .. :try_end_21d} :catchall_4f8
move-result-object v5
const/16 v6, 0x2f
:try_start_220
invoke-virtual {v5, v6}, Ljava/lang/String;->indexOf(I)I
move-result v6
add-int/lit8 v6, v6, 0x1
invoke-virtual {v5, v6}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v6
invoke-static {v6}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
:try_end_22d
.catch Ljava/lang/Throwable; {:try_start_220 .. :try_end_22d} :catch_270
.catch Ljava/net/MalformedURLException; {:try_start_220 .. :try_end_22d} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_220 .. :try_end_22d} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_220 .. :try_end_22d} :catch_28e
.catch Ljava/io/IOException; {:try_start_220 .. :try_end_22d} :catch_34e
.catch Ljava/lang/Exception; {:try_start_220 .. :try_end_22d} :catch_544
.catchall {:try_start_220 .. :try_end_22d} :catchall_4f8
move-result-wide v10
:goto_22e
:try_start_22e
new-instance v32, Ljava/io/File;
move-object/from16 v0, v32
move-object/from16 v1, v29
invoke-direct {v0, v1, v13}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
invoke-virtual/range {v32 .. v32}, Ljava/io/File;->exists()Z
move-result v5
if-eqz v5, :cond_246
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->isDeleteOld()Z
move-result v5
if-eqz v5, :cond_2ed
invoke-static/range {v32 .. v32}, Lcom/h/q/IOUtils;->delFileOrFolder(Ljava/io/File;)Z
:cond_246
invoke-static/range {v29 .. v29}, Lcom/h/q/IOUtils;->getDirSize(Ljava/lang/String;)J
move-result-wide v14
cmp-long v5, v14, v10
if-gez v5, :cond_32c
new-instance v4, Lcom/h/n/StorageSpaceNotEnoughError;
new-instance v5, Ljava/lang/StringBuilder;
const-string/jumbo v6, "The folder is not enough space to save the downloaded file: "
invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
move-object/from16 v0, v29
invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
const-string/jumbo v6, "."
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5}, Lcom/h/n/StorageSpaceNotEnoughError;-><init>(Ljava/lang/String;)V
throw v4
:catch_26d
move-exception v4
goto/16 :goto_e0
:catch_270
move-exception v4
new-instance v4, Lcom/h/n/ServerError;
new-instance v6, Ljava/lang/StringBuilder;
const-string/jumbo v7, "ResponseCode is 206, but content-Range error in Server HTTP header information: "
invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
const-string/jumbo v6, "."
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5}, Lcom/h/n/ServerError;-><init>(Ljava/lang/String;)V
throw v4
:catch_28e
move-exception v4
goto/16 :goto_1d3
:cond_291
const/16 v5, 0x130
if-ne v4, v5, :cond_2e4
invoke-virtual {v9}, Lcom/h/r/Headers;->getContentLength()I
move-result v14
const/4 v6, 0x1
int-to-long v7, v14
int-to-long v10, v14
move-object/from16 v4, p3
move/from16 v5, p1
invoke-interface/range {v4 .. v11}, Lcom/h/m/DownloadListener;->onStart(IZJLcom/h/r/Headers;J)V
const/16 v7, 0x64
int-to-long v8, v14
const-wide/16 v10, 0x0
move-object/from16 v5, p3
move/from16 v6, p1
invoke-interface/range {v5 .. v11}, Lcom/h/m/DownloadListener;->onProgress(IIJJ)V
const-string/jumbo v4, "-------Download finish-------"
invoke-static {v4}, Lcom/h/r/Logger;->d(Ljava/lang/Object;)V
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
move-object/from16 v0, v29
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
sget-object v5, Ljava/io/File;->separator:Ljava/lang/String;
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v4}, Lcom/h/m/DownloadListener;->onFinish(ILjava/lang/String;)V
:try_end_2d5
.catch Ljava/net/MalformedURLException; {:try_start_22e .. :try_end_2d5} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_22e .. :try_end_2d5} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_22e .. :try_end_2d5} :catch_28e
.catch Ljava/io/IOException; {:try_start_22e .. :try_end_2d5} :catch_34e
.catch Ljava/lang/Exception; {:try_start_22e .. :try_end_2d5} :catch_544
.catchall {:try_start_22e .. :try_end_2d5} :catchall_4f8
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
const/4 v4, 0x0
invoke-static {v4}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:cond_2e4
const-wide/16 v7, 0x0
:try_start_2e6
invoke-virtual {v9}, Lcom/h/r/Headers;->getContentLength()I
move-result v5
int-to-long v10, v5
goto/16 :goto_22e
:cond_2ed
const/4 v6, 0x1
invoke-virtual/range {v32 .. v32}, Ljava/io/File;->length()J
move-result-wide v7
invoke-virtual/range {v32 .. v32}, Ljava/io/File;->length()J
move-result-wide v10
move-object/from16 v4, p3
move/from16 v5, p1
invoke-interface/range {v4 .. v11}, Lcom/h/m/DownloadListener;->onStart(IZJLcom/h/r/Headers;J)V
const/16 v7, 0x64
invoke-virtual/range {v32 .. v32}, Ljava/io/File;->length()J
move-result-wide v8
const-wide/16 v10, 0x0
move-object/from16 v5, p3
move/from16 v6, p1
invoke-interface/range {v5 .. v11}, Lcom/h/m/DownloadListener;->onProgress(IIJJ)V
const-string/jumbo v4, "-------Download finish-------"
invoke-static {v4}, Lcom/h/r/Logger;->d(Ljava/lang/Object;)V
invoke-virtual/range {v32 .. v32}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v4
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v4}, Lcom/h/m/DownloadListener;->onFinish(ILjava/lang/String;)V
:try_end_31d
.catch Ljava/net/MalformedURLException; {:try_start_2e6 .. :try_end_31d} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_2e6 .. :try_end_31d} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_2e6 .. :try_end_31d} :catch_28e
.catch Ljava/io/IOException; {:try_start_2e6 .. :try_end_31d} :catch_34e
.catch Ljava/lang/Exception; {:try_start_2e6 .. :try_end_31d} :catch_544
.catchall {:try_start_2e6 .. :try_end_31d} :catchall_4f8
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
const/4 v4, 0x0
invoke-static {v4}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:cond_32c
const/16 v5, 0xce
if-eq v4, v5, :cond_384
:try_start_330
invoke-static/range {v30 .. v30}, Lcom/h/q/IOUtils;->createNewFile(Ljava/io/File;)Z
move-result v4
if-nez v4, :cond_384
new-instance v4, Lcom/h/n/StorageReadWriteError;
new-instance v5, Ljava/lang/StringBuilder;
const-string/jumbo v6, "SD card isn\'t available, please check SD card and permission: WRITE_EXTERNAL_STORAGE.\nYou must pay attention to Android6.0 RunTime Permissions: https://github.com/yanzhenjie/AndPermission.\nFailed to create file: "
invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
move-object/from16 v0, v30
invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5}, Lcom/h/n/StorageReadWriteError;-><init>(Ljava/lang/String;)V
throw v4
:try_end_34e
.catch Ljava/net/MalformedURLException; {:try_start_330 .. :try_end_34e} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_330 .. :try_end_34e} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_330 .. :try_end_34e} :catch_28e
.catch Ljava/io/IOException; {:try_start_330 .. :try_end_34e} :catch_34e
.catch Ljava/lang/Exception; {:try_start_330 .. :try_end_34e} :catch_544
.catchall {:try_start_330 .. :try_end_34e} :catchall_4f8
:catch_34e
move-exception v4
move-object/from16 v5, v29
:goto_351
:try_start_351
invoke-static {v5}, Lcom/h/q/IOUtils;->canWrite(Ljava/lang/String;)Z
move-result v6
if-nez v6, :cond_4d0
new-instance v4, Lcom/h/n/StorageReadWriteError;
new-instance v6, Ljava/lang/StringBuilder;
const-string/jumbo v7, "SD card isn\'t available, please check SD card and permission: WRITE_EXTERNAL_STORAGE.\nYou must pay attention to Android6.0 RunTime Permissions: https://github.com/yanzhenjie/AndPermission.\nFailed to create folder: "
invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5}, Lcom/h/n/StorageReadWriteError;-><init>(Ljava/lang/String;)V
:cond_36c
:goto_36c
invoke-static {v4}, Lcom/h/r/Logger;->e(Ljava/lang/Throwable;)V
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v4}, Lcom/h/m/DownloadListener;->onDownloadError(ILjava/lang/Exception;)V
:try_end_376
.catchall {:try_start_351 .. :try_end_376} :catchall_4f8
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-static {v12}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:cond_384
:try_start_384
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->isCanceled()Z
move-result v4
if-eqz v4, :cond_3a9
const-string/jumbo v4, "NoHttpDownloader"
const-string/jumbo v5, "Download request is canceled."
invoke-static {v4, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1}, Lcom/h/m/DownloadListener;->onCancel(I)V
:try_end_39a
.catch Ljava/net/MalformedURLException; {:try_start_384 .. :try_end_39a} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_384 .. :try_end_39a} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_384 .. :try_end_39a} :catch_28e
.catch Ljava/io/IOException; {:try_start_384 .. :try_end_39a} :catch_34e
.catch Ljava/lang/Exception; {:try_start_384 .. :try_end_39a} :catch_544
.catchall {:try_start_384 .. :try_end_39a} :catchall_4f8
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
const/4 v4, 0x0
invoke-static {v4}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:cond_3a9
:try_start_3a9
const-string/jumbo v4, "-------Download start-------"
invoke-static {v4}, Lcom/h/r/Logger;->d(Ljava/lang/Object;)V
const-wide/16 v4, 0x0
cmp-long v4, v7, v4
if-lez v4, :cond_42f
const/4 v6, 0x1
:goto_3b6
move-object/from16 v4, p3
move/from16 v5, p1
invoke-interface/range {v4 .. v11}, Lcom/h/m/DownloadListener;->onStart(IZJLcom/h/r/Headers;J)V
new-instance v20, Ljava/io/RandomAccessFile;
const-string/jumbo v4, "rws"
move-object/from16 v0, v20
move-object/from16 v1, v30
invoke-direct {v0, v1, v4}, Ljava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
:try_end_3c9
.catch Ljava/net/MalformedURLException; {:try_start_3a9 .. :try_end_3c9} :catch_15a
.catch Ljava/net/UnknownHostException; {:try_start_3a9 .. :try_end_3c9} :catch_26d
.catch Ljava/net/SocketTimeoutException; {:try_start_3a9 .. :try_end_3c9} :catch_28e
.catch Ljava/io/IOException; {:try_start_3a9 .. :try_end_3c9} :catch_34e
.catch Ljava/lang/Exception; {:try_start_3a9 .. :try_end_3c9} :catch_544
.catchall {:try_start_3a9 .. :try_end_3c9} :catchall_4f8
:try_start_3c9
move-object/from16 v0, v20
invoke-virtual {v0, v7, v8}, Ljava/io/RandomAccessFile;->seek(J)V
const/16 v4, 0x1fa0
new-array v0, v4, [B
move-object/from16 v33, v0
const/16 v23, 0x0
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v14
const-wide/16 v12, 0x0
const-wide/16 v4, 0x0
move-wide/from16 v16, v7
move-wide v8, v14
move-wide v6, v12
:goto_3e2
move-object/from16 v0, v31
move-object/from16 v1, v33
invoke-virtual {v0, v1}, Ljava/io/InputStream;->read([B)I
move-result v12
const/4 v13, -0x1
if-eq v12, v13, :cond_403
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->isCanceled()Z
move-result v13
if-eqz v13, :cond_431
const-string/jumbo v4, "NoHttpDownloader"
const-string/jumbo v5, "Download request is canceled."
invoke-static {v4, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1}, Lcom/h/m/DownloadListener;->onCancel(I)V
:cond_403
invoke-virtual/range {p2 .. p2}, Lcom/h/m/DownloadRequest;->isCanceled()Z
move-result v4
if-nez v4, :cond_421
move-object/from16 v0, v30
move-object/from16 v1, v32
invoke-virtual {v0, v1}, Ljava/io/File;->renameTo(Ljava/io/File;)Z
const-string/jumbo v4, "-------Download finish-------"
invoke-static {v4}, Lcom/h/r/Logger;->d(Ljava/lang/Object;)V
invoke-virtual/range {v32 .. v32}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v4
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v4}, Lcom/h/m/DownloadListener;->onFinish(ILjava/lang/String;)V
:try_end_421
.catch Ljava/net/MalformedURLException; {:try_start_3c9 .. :try_end_421} :catch_4c9
.catch Ljava/net/UnknownHostException; {:try_start_3c9 .. :try_end_421} :catch_573
.catch Ljava/net/SocketTimeoutException; {:try_start_3c9 .. :try_end_421} :catch_569
.catch Ljava/io/IOException; {:try_start_3c9 .. :try_end_421} :catch_55d
.catch Ljava/lang/Exception; {:try_start_3c9 .. :try_end_421} :catch_546
.catchall {:try_start_3c9 .. :try_end_421} :catchall_537
:cond_421
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-static/range {v20 .. v20}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:cond_42f
const/4 v6, 0x0
goto :goto_3b6
:cond_431
const/4 v13, 0x0
:try_start_432
move-object/from16 v0, v20
move-object/from16 v1, v33
invoke-virtual {v0, v1, v13, v12}, Ljava/io/RandomAccessFile;->write([BII)V
int-to-long v14, v12
add-long v16, v16, v14
int-to-long v12, v12
add-long/2addr v6, v12
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v12
sub-long/2addr v12, v8
const-wide/16 v14, 0x1
invoke-static {v12, v13, v14, v15}, Ljava/lang/Math;->max(JJ)J
move-result-wide v12
const-wide/16 v14, 0x3e8
mul-long/2addr v14, v6
div-long v18, v14, v12
cmp-long v14, v4, v18
if-eqz v14, :cond_480
const-wide/16 v14, 0x12c
cmp-long v12, v12, v14
if-ltz v12, :cond_480
const/4 v12, 0x1
:goto_459
const-wide/16 v14, 0x0
cmp-long v13, v10, v14
if-eqz v13, :cond_4a8
const-wide/16 v14, 0x64
mul-long v14, v14, v16
div-long/2addr v14, v10
long-to-int v15, v14
move/from16 v0, v23
if-eq v15, v0, :cond_482
if-eqz v12, :cond_482
move-object/from16 v13, p3
move/from16 v14, p1
invoke-interface/range {v13 .. v19}, Lcom/h/m/DownloadListener;->onProgress(IIJJ)V
const-wide/16 v4, 0x0
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v6
:goto_478
move-wide v8, v6
move/from16 v23, v15
move-wide v6, v4
move-wide/from16 v4, v18
goto/16 :goto_3e2
:cond_480
const/4 v12, 0x0
goto :goto_459
:cond_482
if-eqz v12, :cond_496
move-object/from16 v21, p3
move/from16 v22, p1
move-wide/from16 v24, v16
move-wide/from16 v26, v18
invoke-interface/range {v21 .. v27}, Lcom/h/m/DownloadListener;->onProgress(IIJJ)V
const-wide/16 v4, 0x0
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v6
goto :goto_478
:cond_496
move/from16 v0, v23
if-eq v15, v0, :cond_4a3
move-object/from16 v13, p3
move/from16 v14, p1
move-wide/from16 v18, v4
invoke-interface/range {v13 .. v19}, Lcom/h/m/DownloadListener;->onProgress(IIJJ)V
:cond_4a3
move-wide/from16 v18, v4
move-wide v4, v6
move-wide v6, v8
goto :goto_478
:cond_4a8
if-eqz v12, :cond_4bd
const/4 v15, 0x0
move-object/from16 v13, p3
move/from16 v14, p1
invoke-interface/range {v13 .. v19}, Lcom/h/m/DownloadListener;->onProgress(IIJJ)V
const-wide/16 v4, 0x0
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v8
move-wide v6, v4
move-wide/from16 v4, v18
goto/16 :goto_3e2
:cond_4bd
const/4 v15, 0x0
move-object/from16 v13, p3
move/from16 v14, p1
move-wide/from16 v18, v4
invoke-interface/range {v13 .. v19}, Lcom/h/m/DownloadListener;->onProgress(IIJJ)V
:try_end_4c7
.catch Ljava/net/MalformedURLException; {:try_start_432 .. :try_end_4c7} :catch_4c9
.catch Ljava/net/UnknownHostException; {:try_start_432 .. :try_end_4c7} :catch_573
.catch Ljava/net/SocketTimeoutException; {:try_start_432 .. :try_end_4c7} :catch_569
.catch Ljava/io/IOException; {:try_start_432 .. :try_end_4c7} :catch_55d
.catch Ljava/lang/Exception; {:try_start_432 .. :try_end_4c7} :catch_546
.catchall {:try_start_432 .. :try_end_4c7} :catchall_537
goto/16 :goto_3e2
:catch_4c9
move-exception v4
move-object/from16 v5, v20
move-object/from16 v7, v28
goto/16 :goto_4b
:cond_4d0
:try_start_4d0
invoke-static {v5}, Lcom/h/q/IOUtils;->getDirSize(Ljava/lang/String;)J
move-result-wide v6
const-wide/16 v8, 0x400
cmp-long v6, v6, v8
if-gez v6, :cond_36c
new-instance v4, Lcom/h/n/StorageSpaceNotEnoughError;
new-instance v6, Ljava/lang/StringBuilder;
const-string/jumbo v7, "The folder is not enough space to save the downloaded file: "
invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
const-string/jumbo v6, "."
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5}, Lcom/h/n/StorageSpaceNotEnoughError;-><init>(Ljava/lang/String;)V
:try_end_4f6
.catchall {:try_start_4d0 .. :try_end_4f6} :catchall_4f8
goto/16 :goto_36c
:catchall_4f8
move-exception v4
:goto_4f9
const-string/jumbo v5, "----------Response End----------"
invoke-static {v5}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-static {v12}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
throw v4
:catch_506
move-exception v4
move-object/from16 v28, v7
:goto_509
:try_start_509
invoke-static {}, Lcom/h/q/NetUtils;->isNetworkAvailable()Z
move-result v5
if-nez v5, :cond_517
new-instance v4, Lcom/h/n/NetworkError;
const-string/jumbo v5, "Network is not available, please check network and permission: INTERNET, ACCESS_WIFI_STATE, ACCESS_NETWORK_STATE."
invoke-direct {v4, v5}, Lcom/h/n/NetworkError;-><init>(Ljava/lang/String;)V
:cond_517
invoke-static {v4}, Lcom/h/r/Logger;->e(Ljava/lang/Throwable;)V
move-object/from16 v0, p3
move/from16 v1, p1
invoke-interface {v0, v1, v4}, Lcom/h/m/DownloadListener;->onDownloadError(ILjava/lang/Exception;)V
:try_end_521
.catchall {:try_start_509 .. :try_end_521} :catchall_4f8
const-string/jumbo v4, "----------Response End----------"
invoke-static {v4}, Lcom/h/r/Logger;->i(Ljava/lang/Object;)V
invoke-static {v12}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
invoke-static/range {v28 .. v28}, Lcom/h/q/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto/16 :goto_6a
:catchall_52f
move-exception v4
move-object/from16 v28, v7
goto :goto_4f9
:catchall_533
move-exception v4
move-object/from16 v28, v7
goto :goto_4f9
:catchall_537
move-exception v4
move-object/from16 v12, v20
goto :goto_4f9
:catchall_53b
move-exception v4
move-object v12, v5
move-object/from16 v28, v7
goto :goto_4f9
:catch_540
move-exception v4
move-object/from16 v28, v7
goto :goto_509
:catch_544
move-exception v4
goto :goto_509
:catch_546
move-exception v4
move-object/from16 v12, v20
goto :goto_509
:catch_54a
move-exception v4
move-object/from16 v28, v7
goto/16 :goto_351
:catch_54f
move-exception v4
move-object/from16 v5, v29
move-object/from16 v28, v7
goto/16 :goto_351
:catch_556
move-exception v4
move-object/from16 v5, v29
move-object/from16 v28, v7
goto/16 :goto_351
:catch_55d
move-exception v4
move-object/from16 v5, v29
move-object/from16 v12, v20
goto/16 :goto_351
:catch_564
move-exception v4
move-object/from16 v28, v7
goto/16 :goto_1d3
:catch_569
move-exception v4
move-object/from16 v12, v20
goto/16 :goto_1d3
:catch_56e
move-exception v4
move-object/from16 v28, v7
goto/16 :goto_e0
:catch_573
move-exception v4
move-object/from16 v12, v20
goto/16 :goto_e0
:cond_578
move-object/from16 v30, v6
move-object v13, v8
move-object/from16 v28, v7
move-wide v7, v4
goto/16 :goto_11c
:cond_580
move-object/from16 v29, v5
goto/16 :goto_25
.end method