Initial commit
This commit is contained in:
169
sources/com/liulishuo/filedownloader/download/ConnectTask.java
Normal file
169
sources/com/liulishuo/filedownloader/download/ConnectTask.java
Normal file
@@ -0,0 +1,169 @@
|
||||
package com.liulishuo.filedownloader.download;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import com.liulishuo.filedownloader.connection.FileDownloadConnection;
|
||||
import com.liulishuo.filedownloader.connection.RedirectHandler;
|
||||
import com.liulishuo.filedownloader.download.ConnectionProfile;
|
||||
import com.liulishuo.filedownloader.model.FileDownloadHeader;
|
||||
import com.liulishuo.filedownloader.util.FileDownloadLog;
|
||||
import com.liulishuo.filedownloader.util.FileDownloadUtils;
|
||||
import java.io.IOException;
|
||||
import java.net.ProtocolException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class ConnectTask {
|
||||
final int a;
|
||||
final String b;
|
||||
final FileDownloadHeader c;
|
||||
private ConnectionProfile d;
|
||||
private String e;
|
||||
private Map<String, List<String>> f;
|
||||
private List<String> g;
|
||||
|
||||
static class Builder {
|
||||
private Integer a;
|
||||
private String b;
|
||||
private String c;
|
||||
private FileDownloadHeader d;
|
||||
private ConnectionProfile e;
|
||||
|
||||
Builder() {
|
||||
}
|
||||
|
||||
public Builder a(int i) {
|
||||
this.a = Integer.valueOf(i);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder b(String str) {
|
||||
this.b = str;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder a(String str) {
|
||||
this.c = str;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder a(FileDownloadHeader fileDownloadHeader) {
|
||||
this.d = fileDownloadHeader;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder a(ConnectionProfile connectionProfile) {
|
||||
this.e = connectionProfile;
|
||||
return this;
|
||||
}
|
||||
|
||||
ConnectTask a() {
|
||||
ConnectionProfile connectionProfile;
|
||||
Integer num = this.a;
|
||||
if (num != null && (connectionProfile = this.e) != null && this.b != null) {
|
||||
return new ConnectTask(connectionProfile, num.intValue(), this.b, this.c, this.d);
|
||||
}
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
}
|
||||
|
||||
private void b(FileDownloadConnection fileDownloadConnection) {
|
||||
HashMap<String, List<String>> headers;
|
||||
FileDownloadHeader fileDownloadHeader = this.c;
|
||||
if (fileDownloadHeader == null || (headers = fileDownloadHeader.getHeaders()) == null) {
|
||||
return;
|
||||
}
|
||||
if (FileDownloadLog.a) {
|
||||
FileDownloadLog.d(this, "%d add outside header: %s", Integer.valueOf(this.a), headers);
|
||||
}
|
||||
for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
List<String> value = entry.getValue();
|
||||
if (value != null) {
|
||||
Iterator<String> it = value.iterator();
|
||||
while (it.hasNext()) {
|
||||
fileDownloadConnection.a(key, it.next());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void c(FileDownloadConnection fileDownloadConnection) {
|
||||
FileDownloadHeader fileDownloadHeader = this.c;
|
||||
if (fileDownloadHeader == null || fileDownloadHeader.getHeaders().get("User-Agent") == null) {
|
||||
fileDownloadConnection.a("User-Agent", FileDownloadUtils.a());
|
||||
}
|
||||
}
|
||||
|
||||
void a(long j) {
|
||||
ConnectionProfile connectionProfile = this.d;
|
||||
long j2 = connectionProfile.b;
|
||||
if (j == j2) {
|
||||
FileDownloadLog.e(this, "no data download, no need to update", new Object[0]);
|
||||
return;
|
||||
}
|
||||
this.d = ConnectionProfile.ConnectionProfileBuild.a(connectionProfile.a, j, connectionProfile.c, connectionProfile.d - (j - j2));
|
||||
if (FileDownloadLog.a) {
|
||||
FileDownloadLog.c(this, "after update profile:%s", this.d);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, List<String>> d() {
|
||||
return this.f;
|
||||
}
|
||||
|
||||
boolean e() {
|
||||
return this.d.b > 0;
|
||||
}
|
||||
|
||||
private ConnectTask(ConnectionProfile connectionProfile, int i, String str, String str2, FileDownloadHeader fileDownloadHeader) {
|
||||
this.a = i;
|
||||
this.b = str;
|
||||
this.e = str2;
|
||||
this.c = fileDownloadHeader;
|
||||
this.d = connectionProfile;
|
||||
}
|
||||
|
||||
public ConnectionProfile c() {
|
||||
return this.d;
|
||||
}
|
||||
|
||||
FileDownloadConnection a() throws IOException, IllegalAccessException {
|
||||
FileDownloadConnection a = CustomComponentHolder.i().a(this.b);
|
||||
b(a);
|
||||
a(a);
|
||||
c(a);
|
||||
this.f = a.e();
|
||||
if (FileDownloadLog.a) {
|
||||
FileDownloadLog.a(this, "<---- %s request header %s", Integer.valueOf(this.a), this.f);
|
||||
}
|
||||
a.execute();
|
||||
this.g = new ArrayList();
|
||||
FileDownloadConnection a2 = RedirectHandler.a(this.f, a, this.g);
|
||||
if (FileDownloadLog.a) {
|
||||
FileDownloadLog.a(this, "----> %s response header %s", Integer.valueOf(this.a), a2.b());
|
||||
}
|
||||
return a2;
|
||||
}
|
||||
|
||||
String b() {
|
||||
List<String> list = this.g;
|
||||
if (list == null || list.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
return this.g.get(r0.size() - 1);
|
||||
}
|
||||
|
||||
private void a(FileDownloadConnection fileDownloadConnection) throws ProtocolException {
|
||||
if (fileDownloadConnection.a(this.e, this.d.a)) {
|
||||
return;
|
||||
}
|
||||
if (!TextUtils.isEmpty(this.e)) {
|
||||
fileDownloadConnection.a("If-Match", this.e);
|
||||
}
|
||||
this.d.a(fileDownloadConnection);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user