what-the-bank/sources/retrofit2/RequestBuilder.java

258 lines
10 KiB
Java

package retrofit2;
import com.airbnb.deeplinkdispatch.UrlTreeKt;
import com.google.common.net.HttpHeaders;
import com.google.common.primitives.UnsignedBytes;
import java.io.IOException;
import java.util.regex.Pattern;
import o.C15111ghZ;
import o.InterfaceC15148gic;
import o.gdP;
import okhttp3.FormBody;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.Request;
import okhttp3.RequestBody;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes.dex */
public final class RequestBuilder {
private static final String PATH_SEGMENT_ALWAYS_ENCODE_SET = " \"<>^`{}|\\?#";
private final HttpUrl baseUrl;
private RequestBody body;
private MediaType contentType;
private FormBody.Builder formBuilder;
private final boolean hasBody;
private final Headers.Builder headersBuilder;
private final String method;
private MultipartBody.Builder multipartBuilder;
private String relativeUrl;
private final Request.Builder requestBuilder = new Request.Builder();
private HttpUrl.Builder urlBuilder;
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
private static final Pattern PATH_TRAVERSAL = Pattern.compile("(.*/)?(\\.|%2e|%2E){1,2}(/.*)?");
/* JADX INFO: Access modifiers changed from: package-private */
public RequestBuilder(String str, HttpUrl httpUrl, String str2, Headers headers, MediaType mediaType, boolean z, boolean z2, boolean z3) {
this.method = str;
this.baseUrl = httpUrl;
this.relativeUrl = str2;
this.contentType = mediaType;
this.hasBody = z;
if (headers != null) {
this.headersBuilder = headers.newBuilder();
} else {
this.headersBuilder = new Headers.Builder();
}
if (z2) {
this.formBuilder = new FormBody.Builder();
} else if (z3) {
MultipartBody.Builder builder = new MultipartBody.Builder();
this.multipartBuilder = builder;
builder.setType(MultipartBody.FORM);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void setRelativeUrl(Object obj) {
this.relativeUrl = obj.toString();
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void addHeader(String str, String str2) {
if (HttpHeaders.CONTENT_TYPE.equalsIgnoreCase(str)) {
try {
this.contentType = MediaType.get(str2);
return;
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Malformed content type: ".concat(String.valueOf(str2)), e);
}
}
this.headersBuilder.add(str, str2);
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void addHeaders(Headers headers) {
this.headersBuilder.addAll(headers);
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void addPathParam(String str, String str2, boolean z) {
if (this.relativeUrl == null) {
throw new AssertionError();
}
String canonicalizeForPath = canonicalizeForPath(str2, z);
String str3 = this.relativeUrl;
StringBuilder sb = new StringBuilder(UrlTreeKt.componentParamPrefix);
sb.append(str);
sb.append(UrlTreeKt.componentParamSuffix);
String replace = str3.replace(sb.toString(), canonicalizeForPath);
if (PATH_TRAVERSAL.matcher(replace).matches()) {
throw new IllegalArgumentException("@Path parameters shouldn't perform path traversal ('.' or '..'): ".concat(String.valueOf(str2)));
}
this.relativeUrl = replace;
}
private static String canonicalizeForPath(String str, boolean z) {
int length = str.length();
int i = 0;
while (i < length) {
int codePointAt = str.codePointAt(i);
if (codePointAt >= 32 && codePointAt < 127 && PATH_SEGMENT_ALWAYS_ENCODE_SET.indexOf(codePointAt) == -1 && (z || (codePointAt != 47 && codePointAt != 37))) {
i += Character.charCount(codePointAt);
} else {
C15111ghZ c15111ghZ = new C15111ghZ();
c15111ghZ.c(str, 0, i);
canonicalizeForPath(c15111ghZ, str, i, length, z);
return c15111ghZ.b(c15111ghZ.c, gdP.a);
}
}
return str;
}
private static void canonicalizeForPath(C15111ghZ c15111ghZ, String str, int i, int i2, boolean z) {
C15111ghZ c15111ghZ2 = null;
while (i < i2) {
int codePointAt = str.codePointAt(i);
if (!z || (codePointAt != 9 && codePointAt != 10 && codePointAt != 12 && codePointAt != 13)) {
if (codePointAt < 32 || codePointAt >= 127 || PATH_SEGMENT_ALWAYS_ENCODE_SET.indexOf(codePointAt) != -1 || (!z && (codePointAt == 47 || codePointAt == 37))) {
if (c15111ghZ2 == null) {
c15111ghZ2 = new C15111ghZ();
}
c15111ghZ2.i(codePointAt);
while (c15111ghZ2.c != 0) {
byte f = c15111ghZ2.f();
c15111ghZ.b(37);
char[] cArr = HEX_DIGITS;
c15111ghZ.b((int) cArr[((f & UnsignedBytes.MAX_VALUE) >> 4) & 15]);
c15111ghZ.b((int) cArr[f & 15]);
}
} else {
c15111ghZ.i(codePointAt);
}
}
i += Character.charCount(codePointAt);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void addQueryParam(String str, String str2, boolean z) {
String str3 = this.relativeUrl;
if (str3 != null) {
HttpUrl.Builder newBuilder = this.baseUrl.newBuilder(str3);
this.urlBuilder = newBuilder;
if (newBuilder == null) {
StringBuilder sb = new StringBuilder("Malformed URL. Base: ");
sb.append(this.baseUrl);
sb.append(", Relative: ");
sb.append(this.relativeUrl);
throw new IllegalArgumentException(sb.toString());
}
this.relativeUrl = null;
}
if (z) {
this.urlBuilder.addEncodedQueryParameter(str, str2);
} else {
this.urlBuilder.addQueryParameter(str, str2);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void addFormField(String str, String str2, boolean z) {
if (z) {
this.formBuilder.addEncoded(str, str2);
} else {
this.formBuilder.add(str, str2);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void addPart(Headers headers, RequestBody requestBody) {
this.multipartBuilder.addPart(headers, requestBody);
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void addPart(MultipartBody.Part part) {
this.multipartBuilder.addPart(part);
}
/* JADX INFO: Access modifiers changed from: package-private */
public final <T> void addTag(Class<T> cls, T t) {
this.requestBuilder.tag(cls, t);
}
/* JADX INFO: Access modifiers changed from: package-private */
public final Request.Builder get() {
HttpUrl resolve;
HttpUrl.Builder builder = this.urlBuilder;
if (builder != null) {
resolve = builder.build();
} else {
resolve = this.baseUrl.resolve(this.relativeUrl);
if (resolve == null) {
StringBuilder sb = new StringBuilder("Malformed URL. Base: ");
sb.append(this.baseUrl);
sb.append(", Relative: ");
sb.append(this.relativeUrl);
throw new IllegalArgumentException(sb.toString());
}
}
RequestBody requestBody = this.body;
if (requestBody == null) {
FormBody.Builder builder2 = this.formBuilder;
if (builder2 != null) {
requestBody = builder2.build();
} else {
MultipartBody.Builder builder3 = this.multipartBuilder;
if (builder3 != null) {
requestBody = builder3.build();
} else if (this.hasBody) {
requestBody = RequestBody.create((MediaType) null, new byte[0]);
}
}
}
MediaType mediaType = this.contentType;
if (mediaType != null) {
if (requestBody != null) {
requestBody = new ContentTypeOverridingRequestBody(requestBody, mediaType);
} else {
this.headersBuilder.add(HttpHeaders.CONTENT_TYPE, mediaType.toString());
}
}
return this.requestBuilder.url(resolve).headers(this.headersBuilder.build()).method(this.method, requestBody);
}
/* loaded from: classes.dex */
static class ContentTypeOverridingRequestBody extends RequestBody {
private final MediaType contentType;
private final RequestBody delegate;
ContentTypeOverridingRequestBody(RequestBody requestBody, MediaType mediaType) {
this.delegate = requestBody;
this.contentType = mediaType;
}
@Override // okhttp3.RequestBody
public long contentLength() throws IOException {
return this.delegate.contentLength();
}
@Override // okhttp3.RequestBody
public void writeTo(InterfaceC15148gic interfaceC15148gic) throws IOException {
this.delegate.writeTo(interfaceC15148gic);
}
@Override // okhttp3.RequestBody
public MediaType contentType() {
return this.contentType;
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public final void setBody(RequestBody requestBody) {
this.body = requestBody;
}
}