NetMirror.apk
Download file
package com.facebook.react.modules.blob;
import M2.C;
import M2.E;
import M2.x;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
import android.webkit.MimeTypeMap;
import b3.l;
import com.facebook.fbreact.specs.NativeBlobModuleSpec;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.network.NetworkingModule;
import com.facebook.react.modules.websocket.WebSocketModule;
import e1.C0527d;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import v1.InterfaceC0756a;
/* JADX INFO: loaded from: classes.dex */
@InterfaceC0756a(name = NativeBlobModuleSpec.NAME)
public class BlobModule extends NativeBlobModuleSpec {
private final Map<String, byte[]> mBlobs;
private final NetworkingModule.d mNetworkingRequestBodyHandler;
private final NetworkingModule.e mNetworkingResponseHandler;
private final NetworkingModule.f mNetworkingUriHandler;
private final WebSocketModule.b mWebSocketContentHandler;
class a implements WebSocketModule.b {
a() {
}
@Override // com.facebook.react.modules.websocket.WebSocketModule.b
public void a(l lVar, WritableMap writableMap) {
byte[] bArrY = lVar.y();
WritableMap writableMapCreateMap = Arguments.createMap();
writableMapCreateMap.putString("blobId", BlobModule.this.store(bArrY));
writableMapCreateMap.putInt("offset", 0);
writableMapCreateMap.putInt("size", bArrY.length);
writableMap.putMap("data", writableMapCreateMap);
writableMap.putString("type", "blob");
}
@Override // com.facebook.react.modules.websocket.WebSocketModule.b
public void b(String str, WritableMap writableMap) {
writableMap.putString("data", str);
}
}
class b implements NetworkingModule.f {
b() {
}
@Override // com.facebook.react.modules.network.NetworkingModule.f
public WritableMap a(Uri uri) throws IOException {
byte[] bytesFromUri = BlobModule.this.getBytesFromUri(uri);
WritableMap writableMapCreateMap = Arguments.createMap();
writableMapCreateMap.putString("blobId", BlobModule.this.store(bytesFromUri));
writableMapCreateMap.putInt("offset", 0);
writableMapCreateMap.putInt("size", bytesFromUri.length);
writableMapCreateMap.putString("type", BlobModule.this.getMimeTypeFromUri(uri));
writableMapCreateMap.putString("name", BlobModule.this.getNameFromUri(uri));
writableMapCreateMap.putDouble("lastModified", BlobModule.this.getLastModifiedFromUri(uri));
return writableMapCreateMap;
}
@Override // com.facebook.react.modules.network.NetworkingModule.f
public boolean b(Uri uri, String str) {
String scheme = uri.getScheme();
return ("http".equals(scheme) || "https".equals(scheme) || !"blob".equals(str)) ? false : true;
}
}
class c implements NetworkingModule.d {
c() {
}
@Override // com.facebook.react.modules.network.NetworkingModule.d
public boolean a(ReadableMap readableMap) {
return readableMap.hasKey("blob");
}
@Override // com.facebook.react.modules.network.NetworkingModule.d
public C b(ReadableMap readableMap, String str) {
if (readableMap.hasKey("type") && !readableMap.getString("type").isEmpty()) {
str = readableMap.getString("type");
}
if (str == null) {
str = "application/octet-stream";
}
ReadableMap map = readableMap.getMap("blob");
return C.e(x.f(str), BlobModule.this.resolve(map.getString("blobId"), map.getInt("offset"), map.getInt("size")));
}
}
class d implements NetworkingModule.e {
d() {
}
@Override // com.facebook.react.modules.network.NetworkingModule.e
public WritableMap a(E e4) throws IOException {
byte[] bArrI = e4.i();
WritableMap writableMapCreateMap = Arguments.createMap();
writableMapCreateMap.putString("blobId", BlobModule.this.store(bArrI));
writableMapCreateMap.putInt("offset", 0);
writableMapCreateMap.putInt("size", bArrI.length);
return writableMapCreateMap;
}
@Override // com.facebook.react.modules.network.NetworkingModule.e
public boolean b(String str) {
return "blob".equals(str);
}
}
public BlobModule(ReactApplicationContext reactApplicationContext) {
super(reactApplicationContext);
this.mBlobs = new HashMap();
this.mWebSocketContentHandler = new a();
this.mNetworkingUriHandler = new b();
this.mNetworkingRequestBodyHandler = new c();
this.mNetworkingResponseHandler = new d();
}
/* JADX INFO: Access modifiers changed from: private */
public byte[] getBytesFromUri(Uri uri) throws IOException {
InputStream inputStreamOpenInputStream = getReactApplicationContext().getContentResolver().openInputStream(uri);
if (inputStreamOpenInputStream == null) {
throw new FileNotFoundException("File not found for " + uri);
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] bArr = new byte[1024];
while (true) {
int i3 = inputStreamOpenInputStream.read(bArr);
if (i3 == -1) {
return byteArrayOutputStream.toByteArray();
}
byteArrayOutputStream.write(bArr, 0, i3);
}
}
/* JADX INFO: Access modifiers changed from: private */
public long getLastModifiedFromUri(Uri uri) {
if ("file".equals(uri.getScheme())) {
return new File(uri.toString()).lastModified();
}
return 0L;
}
/* JADX INFO: Access modifiers changed from: private */
public String getMimeTypeFromUri(Uri uri) {
String fileExtensionFromUrl;
String type = getReactApplicationContext().getContentResolver().getType(uri);
if (type == null && (fileExtensionFromUrl = MimeTypeMap.getFileExtensionFromUrl(uri.getPath())) != null) {
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtensionFromUrl);
}
return type == null ? "" : type;
}
/* JADX INFO: Access modifiers changed from: private */
public String getNameFromUri(Uri uri) {
if ("file".equals(uri.getScheme())) {
return uri.getLastPathSegment();
}
Cursor cursorQuery = getReactApplicationContext().getContentResolver().query(uri, new String[]{"_display_name"}, null, null, null);
if (cursorQuery != null) {
try {
if (cursorQuery.moveToFirst()) {
return cursorQuery.getString(0);
}
} finally {
cursorQuery.close();
}
}
return uri.getLastPathSegment();
}
private WebSocketModule getWebSocketModule(String str) {
ReactApplicationContext reactApplicationContextIfActiveOrWarn = getReactApplicationContextIfActiveOrWarn();
if (reactApplicationContextIfActiveOrWarn != null) {
return (WebSocketModule) reactApplicationContextIfActiveOrWarn.getNativeModule(WebSocketModule.class);
}
return null;
}
@Override // com.facebook.fbreact.specs.NativeBlobModuleSpec
public void addNetworkingHandler() {
ReactApplicationContext reactApplicationContextIfActiveOrWarn = getReactApplicationContextIfActiveOrWarn();
if (reactApplicationContextIfActiveOrWarn != null) {
NetworkingModule networkingModule = (NetworkingModule) reactApplicationContextIfActiveOrWarn.getNativeModule(NetworkingModule.class);
networkingModule.addUriHandler(this.mNetworkingUriHandler);
networkingModule.addRequestBodyHandler(this.mNetworkingRequestBodyHandler);
networkingModule.addResponseHandler(this.mNetworkingResponseHandler);
}
}
@Override // com.facebook.fbreact.specs.NativeBlobModuleSpec
public void addWebSocketHandler(double d4) {
int i3 = (int) d4;
WebSocketModule webSocketModule = getWebSocketModule("addWebSocketHandler");
if (webSocketModule != null) {
webSocketModule.setContentHandler(i3, this.mWebSocketContentHandler);
}
}
@Override // com.facebook.fbreact.specs.NativeBlobModuleSpec
public void createFromParts(ReadableArray readableArray, String str) {
ArrayList arrayList = new ArrayList(readableArray.size());
int length = 0;
for (int i3 = 0; i3 < readableArray.size(); i3++) {
ReadableMap map = readableArray.getMap(i3);
String string = map.getString("type");
string.hashCode();
if (string.equals("string")) {
byte[] bytes = map.getString("data").getBytes(Charset.forName("UTF-8"));
length += bytes.length;
arrayList.add(i3, bytes);
} else {
if (!string.equals("blob")) {
throw new IllegalArgumentException("Invalid type for blob: " + map.getString("type"));
}
ReadableMap map2 = map.getMap("data");
length += map2.getInt("size");
arrayList.add(i3, resolve(map2));
}
}
ByteBuffer byteBufferAllocate = ByteBuffer.allocate(length);
Iterator it = arrayList.iterator();
while (it.hasNext()) {
byteBufferAllocate.put((byte[]) it.next());
}
store(byteBufferAllocate.array(), str);
}
public long getLengthOfBlob(String str) {
long length;
synchronized (this.mBlobs) {
try {
length = this.mBlobs.get(str) != null ? r4.length : 0L;
} catch (Throwable th) {
throw th;
}
}
return length;
}
@Override // com.facebook.fbreact.specs.NativeBlobModuleSpec
public Map<String, Object> getTypedExportedConstants() {
Resources resources = getReactApplicationContext().getResources();
int identifier = resources.getIdentifier("blob_provider_authority", "string", getReactApplicationContext().getPackageName());
return identifier == 0 ? C0527d.c() : C0527d.e("BLOB_URI_SCHEME", "content", "BLOB_URI_HOST", resources.getString(identifier));
}
@Override // com.facebook.react.bridge.BaseJavaModule, com.facebook.react.bridge.NativeModule, com.facebook.react.turbomodule.core.interfaces.TurboModule
public void initialize() {
BlobCollector.b(getReactApplicationContext(), this);
}
@Override // com.facebook.fbreact.specs.NativeBlobModuleSpec
public void release(String str) {
remove(str);
}
public void remove(String str) {
synchronized (this.mBlobs) {
this.mBlobs.remove(str);
}
}
@Override // com.facebook.fbreact.specs.NativeBlobModuleSpec
public void removeWebSocketHandler(double d4) {
int i3 = (int) d4;
WebSocketModule webSocketModule = getWebSocketModule("removeWebSocketHandler");
if (webSocketModule != null) {
webSocketModule.setContentHandler(i3, null);
}
}
public byte[] resolve(Uri uri) {
String lastPathSegment = uri.getLastPathSegment();
String queryParameter = uri.getQueryParameter("offset");
int i3 = queryParameter != null ? Integer.parseInt(queryParameter, 10) : 0;
String queryParameter2 = uri.getQueryParameter("size");
return resolve(lastPathSegment, i3, queryParameter2 != null ? Integer.parseInt(queryParameter2, 10) : -1);
}
@Override // com.facebook.fbreact.specs.NativeBlobModuleSpec
public void sendOverSocket(ReadableMap readableMap, double d4) {
int i3 = (int) d4;
WebSocketModule webSocketModule = getWebSocketModule("sendOverSocket");
if (webSocketModule != null) {
byte[] bArrResolve = resolve(readableMap.getString("blobId"), readableMap.getInt("offset"), readableMap.getInt("size"));
if (bArrResolve != null) {
webSocketModule.sendBinary(l.o(bArrResolve), i3);
} else {
webSocketModule.sendBinary((l) null, i3);
}
}
}
public String store(byte[] bArr) {
String string = UUID.randomUUID().toString();
store(bArr, string);
return string;
}
public void store(byte[] bArr, String str) {
synchronized (this.mBlobs) {
this.mBlobs.put(str, bArr);
}
}
public byte[] resolve(String str, int i3, int i4) {
synchronized (this.mBlobs) {
try {
byte[] bArrCopyOfRange = this.mBlobs.get(str);
if (bArrCopyOfRange == null) {
return null;
}
if (i4 == -1) {
i4 = bArrCopyOfRange.length - i3;
}
if (i3 > 0 || i4 != bArrCopyOfRange.length) {
bArrCopyOfRange = Arrays.copyOfRange(bArrCopyOfRange, i3, i4 + i3);
}
return bArrCopyOfRange;
} catch (Throwable th) {
throw th;
}
}
}
public byte[] resolve(ReadableMap readableMap) {
return resolve(readableMap.getString("blobId"), readableMap.getInt("offset"), readableMap.getInt("size"));
}
}
⚠️ This content was hidden by an advertisement filtering extension in your browser. Please disable it and reload the page to access the decompiled content.
We only display one small text ad to keep this service free. Here's what it looks like:
Read the Docs for Business: You write the docs. We do the rest.
Try it today!Ad by EthicalAds
Download file