| 
				
			 | 
			
			
				@@ -19,6 +19,8 @@ import com.loopj.android.http.Base64; 
			 | 
		
	
		
			
			| 
				19
			 | 
			
				19
			 | 
			
			
				 import com.loopj.android.http.MySSLSocketFactory; 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				20
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				21
			 | 
			
				21
			 | 
			
			
				 import java.io.File; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				22
			 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				23
			 | 
			
			
				+import java.io.InputStream; 
			 | 
		
	
		
			
			| 
				22
			 | 
			
				24
			 | 
			
			
				 import java.security.KeyStore; 
			 | 
		
	
		
			
			| 
				23
			 | 
			
				25
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				24
			 | 
			
				26
			 | 
			
			
				 import cz.msebera.android.httpclient.HttpEntity; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -111,6 +113,8 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable { 
			 | 
		
	
		
			
			| 
				111
			 | 
			
				113
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				112
			 | 
			
				114
			 | 
			
			
				             req = new AsyncHttpClient(); 
			 | 
		
	
		
			
			| 
				113
			 | 
			
				115
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				+            req.setLoggingEnabled(false); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				114
			 | 
			
				118
			 | 
			
			
				             // use trusty SSL socket 
			 | 
		
	
		
			
			| 
				115
			 | 
			
				119
			 | 
			
			
				             if(this.options.trusty) { 
			 | 
		
	
		
			
			| 
				116
			 | 
			
				120
			 | 
			
			
				                 KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -196,16 +200,34 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable { 
			 | 
		
	
		
			
			| 
				196
			 | 
			
				200
			 | 
			
			
				                 String data = map.getString("data"); 
			 | 
		
	
		
			
			| 
				197
			 | 
			
				201
			 | 
			
			
				                 // file field 
			 | 
		
	
		
			
			| 
				198
			 | 
			
				202
			 | 
			
			
				                 if(map.hasKey("filename")) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				203
			 | 
			
			
				+                    String mime = map.hasKey("type") ? map.getString("type") : ContentType.APPLICATION_OCTET_STREAM.getMimeType(); 
			 | 
		
	
		
			
			| 
				199
			 | 
			
				204
			 | 
			
			
				                     String filename = map.getString("filename"); 
			 | 
		
	
		
			
			| 
				200
			 | 
			
				205
			 | 
			
			
				                     // upload from storage 
			 | 
		
	
		
			
			| 
				201
			 | 
			
				206
			 | 
			
			
				                     if(data.startsWith(filePathPrefix)) { 
			 | 
		
	
		
			
			| 
				202
			 | 
			
				207
			 | 
			
			
				                         String orgPath = data.substring(filePathPrefix.length()); 
			 | 
		
	
		
			
			| 
				203
			 | 
			
				
			 | 
			
			
				-                        File file = new File(RNFetchBlobFS.normalizePath(orgPath)); 
			 | 
		
	
		
			
			| 
				204
			 | 
			
				
			 | 
			
			
				-                        form.addBinaryBody(name, file, ContentType.APPLICATION_OCTET_STREAM, filename); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				208
			 | 
			
			
				+                        orgPath = RNFetchBlobFS.normalizePath(orgPath); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				209
			 | 
			
			
				+                        // path starts with content:// 
			 | 
		
	
		
			
			| 
				
			 | 
			
				210
			 | 
			
			
				+                        if(RNFetchBlobFS.isAsset(orgPath)) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				211
			 | 
			
			
				+                            try { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				212
			 | 
			
			
				+                                String assetName = orgPath.replace(RNFetchBlobFS.assetPrefix, ""); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				213
			 | 
			
			
				+                                InputStream in = RNFetchBlob.RCTContext.getAssets().open(assetName); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				214
			 | 
			
			
				+                                long length = RNFetchBlob.RCTContext.getAssets().openFd(assetName).getLength(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				215
			 | 
			
			
				+                                byte [] bytes = new byte[(int) length]; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				216
			 | 
			
			
				+                                in.read(bytes, 0, (int) length); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				217
			 | 
			
			
				+                                in.close(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				218
			 | 
			
			
				+                                form.addBinaryBody(name, bytes, ContentType.create(mime), filename); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				219
			 | 
			
			
				+                            } catch (IOException e) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				220
			 | 
			
			
				+//                                e.printStackTrace(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				221
			 | 
			
			
				+                            } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				222
			 | 
			
			
				+                        } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				223
			 | 
			
			
				+                        else { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				224
			 | 
			
			
				+                            File file = new File(RNFetchBlobFS.normalizePath(orgPath)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				225
			 | 
			
			
				+                            form.addBinaryBody(name, file, ContentType.create(mime), filename); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				226
			 | 
			
			
				+                        } 
			 | 
		
	
		
			
			| 
				205
			 | 
			
				227
			 | 
			
			
				                     } 
			 | 
		
	
		
			
			| 
				206
			 | 
			
				228
			 | 
			
			
				                     // base64 embedded file content 
			 | 
		
	
		
			
			| 
				207
			 | 
			
				229
			 | 
			
			
				                     else { 
			 | 
		
	
		
			
			| 
				208
			 | 
			
				
			 | 
			
			
				-                        form.addBinaryBody(name, Base64.decode(data, 0), ContentType.APPLICATION_OCTET_STREAM, filename); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				230
			 | 
			
			
				+                        form.addBinaryBody(name, Base64.decode(data, 0), ContentType.create(mime), filename); 
			 | 
		
	
		
			
			| 
				209
			 | 
			
				231
			 | 
			
			
				                     } 
			 | 
		
	
		
			
			| 
				210
			 | 
			
				232
			 | 
			
			
				                 } 
			 | 
		
	
		
			
			| 
				211
			 | 
			
				233
			 | 
			
			
				                 // data field 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -228,8 +250,25 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable { 
			 | 
		
	
		
			
			| 
				228
			 | 
			
				250
			 | 
			
			
				             byte [] blob; 
			 | 
		
	
		
			
			| 
				229
			 | 
			
				251
			 | 
			
			
				             // upload from storage 
			 | 
		
	
		
			
			| 
				230
			 | 
			
				252
			 | 
			
			
				             if(body.startsWith(filePathPrefix)) { 
			 | 
		
	
		
			
			| 
				231
			 | 
			
				
			 | 
			
			
				-                String filePath = body.substring(filePathPrefix.length()); 
			 | 
		
	
		
			
			| 
				232
			 | 
			
				
			 | 
			
			
				-                entity = new FileEntity(new File(RNFetchBlobFS.normalizePath(filePath))); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				253
			 | 
			
			
				+                String orgPath = body.substring(filePathPrefix.length()); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				254
			 | 
			
			
				+                orgPath = RNFetchBlobFS.normalizePath(orgPath); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				255
			 | 
			
			
				+                // handle 
			 | 
		
	
		
			
			| 
				
			 | 
			
				256
			 | 
			
			
				+                if(RNFetchBlobFS.isAsset(orgPath)) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				257
			 | 
			
			
				+                    try { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				258
			 | 
			
			
				+                        String assetName = orgPath.replace(RNFetchBlobFS.assetPrefix, ""); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				259
			 | 
			
			
				+                        InputStream in = RNFetchBlob.RCTContext.getAssets().open(assetName); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				260
			 | 
			
			
				+                        long length = 0; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				261
			 | 
			
			
				+                        length = RNFetchBlob.RCTContext.getAssets().openFd(assetName).getLength(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				262
			 | 
			
			
				+                        byte [] bytes = new byte[(int) length]; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				263
			 | 
			
			
				+                        in.read(bytes, 0, (int) length); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				264
			 | 
			
			
				+                        in.close(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				265
			 | 
			
			
				+                        entity = new ByteArrayEntity(bytes); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				266
			 | 
			
			
				+                    } catch (IOException e) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				267
			 | 
			
			
				+//                        e.printStackTrace(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				268
			 | 
			
			
				+                    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				269
			 | 
			
			
				+                } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				270
			 | 
			
			
				+                else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				271
			 | 
			
			
				+                    entity = new FileEntity(new File(RNFetchBlobFS.normalizePath(orgPath))); 
			 | 
		
	
		
			
			| 
				233
			 | 
			
				272
			 | 
			
			
				             } 
			 | 
		
	
		
			
			| 
				234
			 | 
			
				273
			 | 
			
			
				             else { 
			 | 
		
	
		
			
			| 
				235
			 | 
			
				274
			 | 
			
			
				                 blob = Base64.decode(body, 0); 
			 |