e217551a82
OkHttp gives us more fine grained control over the HTTP library and frees us from any platform bugs
42 lines
1.1 KiB
Java
42 lines
1.1 KiB
Java
package eu.siacs.conversations.http;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
import okhttp3.HttpUrl;
|
|
|
|
public final class AesGcmURL {
|
|
|
|
/**
|
|
* This matches a 48 or 44 byte IV + KEY hex combo, like used in http/aesgcm upload anchors
|
|
*/
|
|
public static final Pattern IV_KEY = Pattern.compile("([A-Fa-f0-9]{2}){48}|([A-Fa-f0-9]{2}){44}");
|
|
|
|
public static final String PROTOCOL_NAME = "aesgcm";
|
|
|
|
private AesGcmURL() {
|
|
|
|
}
|
|
|
|
public static String toAesGcmUrl(HttpUrl url) {
|
|
if (url.isHttps()) {
|
|
return PROTOCOL_NAME + url.toString().substring(5);
|
|
} else {
|
|
return url.toString();
|
|
}
|
|
}
|
|
|
|
public static HttpUrl of(final String url) {
|
|
final int end = url.indexOf("://");
|
|
if (end < 0) {
|
|
throw new IllegalArgumentException("Scheme not found");
|
|
}
|
|
final String protocol = url.substring(0, end);
|
|
if (PROTOCOL_NAME.equals(protocol)) {
|
|
return HttpUrl.get("https" + url.substring(PROTOCOL_NAME.length()));
|
|
} else {
|
|
return HttpUrl.get(url);
|
|
}
|
|
}
|
|
|
|
}
|