Bladeren bron

wip commit

Ben Hsieh 8 jaren geleden
bovenliggende
commit
f612f35fe9

+ 1
- 7
src/index.js Bestand weergeven

18
   RNFetchBlobStream
18
   RNFetchBlobStream
19
 } from './types'
19
 } from './types'
20
 import fs from './fs'
20
 import fs from './fs'
21
+import getUUID from './utils/uuid'
21
 import base64 from 'base-64'
22
 import base64 from 'base-64'
22
 const {
23
 const {
23
   RNFetchBlobSession,
24
   RNFetchBlobSession,
286
 
287
 
287
 }
288
 }
288
 
289
 
289
-function getUUID() {
290
-  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
291
-    let r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
292
-    return v.toString(16);
293
-  });
294
-}
295
-
296
 export default {
290
 export default {
297
   fetch,
291
   fetch,
298
   base64,
292
   base64,

+ 2
- 2
src/ios/RNFetchBlob.xcodeproj/project.pbxproj Bestand weergeven

190
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
190
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
191
 				GCC_WARN_UNUSED_FUNCTION = YES;
191
 				GCC_WARN_UNUSED_FUNCTION = YES;
192
 				GCC_WARN_UNUSED_VARIABLE = YES;
192
 				GCC_WARN_UNUSED_VARIABLE = YES;
193
-				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
193
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
194
 				MTL_ENABLE_DEBUG_INFO = YES;
194
 				MTL_ENABLE_DEBUG_INFO = YES;
195
 				ONLY_ACTIVE_ARCH = YES;
195
 				ONLY_ACTIVE_ARCH = YES;
196
 				SDKROOT = iphoneos;
196
 				SDKROOT = iphoneos;
228
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
228
 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
229
 				GCC_WARN_UNUSED_FUNCTION = YES;
229
 				GCC_WARN_UNUSED_FUNCTION = YES;
230
 				GCC_WARN_UNUSED_VARIABLE = YES;
230
 				GCC_WARN_UNUSED_VARIABLE = YES;
231
-				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
231
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
232
 				MTL_ENABLE_DEBUG_INFO = NO;
232
 				MTL_ENABLE_DEBUG_INFO = NO;
233
 				SDKROOT = iphoneos;
233
 				SDKROOT = iphoneos;
234
 				VALIDATE_PRODUCT = YES;
234
 				VALIDATE_PRODUCT = YES;

+ 6
- 3
src/polyfill/Blob.js Bestand weergeven

5
  * Web API Blob object polyfill.
5
  * Web API Blob object polyfill.
6
  */
6
  */
7
 import fs from '../fs.js'
7
 import fs from '../fs.js'
8
+import getUUID from '../utils/uuid'
8
 
9
 
9
 export default class Blob {
10
 export default class Blob {
10
 
11
 
24
     }
25
     }
25
     else if(typeof data === 'string') {
26
     else if(typeof data === 'string') {
26
       // content from file
27
       // content from file
27
-      if(data.startsWith('RNFetchBlob-file://') {
28
-        enode = 'uri'
28
+      if(data.startsWith('RNFetchBlob-file://')) {
29
+        encode = 'uri'
29
       }
30
       }
30
       // BASE64 encoded
31
       // BASE64 encoded
31
       else {
32
       else {
54
    * @return {Blob}
55
    * @return {Blob}
55
    */
56
    */
56
   slice(start:?number, end:?number, encoding:?string):Blob {
57
   slice(start:?number, end:?number, encoding:?string):Blob {
58
+    console.log('slice called')
57
     return fs.slice(this.cacheName, getBlobName(), contentType, start, end)
59
     return fs.slice(this.cacheName, getBlobName(), contentType, start, end)
58
   }
60
   }
59
 
61
 
60
   /**
62
   /**
61
    * Release the resource of the Blob object.
63
    * Release the resource of the Blob object.
64
+   * @nonstandard
62
    * @return {Promise}
65
    * @return {Promise}
63
    */
66
    */
64
   close() {
67
   close() {
73
  * @return {string} Temporary filename
76
  * @return {string} Temporary filename
74
  */
77
  */
75
 function getBlobName() {
78
 function getBlobName() {
76
-
79
+  return 'blob-' + getUUID()
77
 }
80
 }

+ 1
- 1
src/polyfill/File.js Bestand weergeven

10
 export default class File extends Blob {
10
 export default class File extends Blob {
11
 
11
 
12
   constructor() {
12
   constructor() {
13
-    
13
+    super()
14
   }
14
   }
15
 
15
 
16
 }
16
 }

+ 15
- 0
src/polyfill/XMLHttpRequest.js Bestand weergeven

1
+export default class XMLHttpRequest {
2
+
3
+  constructor(...args) {
4
+    console.log('XMLHttpRequest constructor called', args)
5
+  }
6
+
7
+  send(...data) {
8
+    console.log('XMLHttpRequest send called', data)
9
+  }
10
+
11
+  abort(...args) {
12
+    console.log('XMLHttpRequest abort called', data)
13
+  }
14
+
15
+}

+ 2
- 1
src/polyfill/index.js Bestand weergeven

1
 import Blob from './Blob.js'
1
 import Blob from './Blob.js'
2
 import File from './File.js'
2
 import File from './File.js'
3
+import XMLHttpRequest from './XMLHttpRequest.js'
3
 
4
 
4
 export default {
5
 export default {
5
-  Blob, File
6
+  Blob, File, XMLHttpRequest
6
 }
7
 }

+ 6
- 0
src/utils/uuid.js Bestand weergeven

1
+export default function getUUID() {
2
+  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
3
+    let r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
4
+    return v.toString(16);
5
+  });
6
+}

+ 4
- 3
test.sh Bestand weergeven

37
 
37
 
38
 # install module
38
 # install module
39
 cd "${TEST_APP_PATH}"
39
 cd "${TEST_APP_PATH}"
40
-npm install --save "${CWD}/src"
41
-npm install --save firebase
40
+# npm install --save "${CWD}/src"
41
+npm install --save react-native-fetch-blob@0.7.0-dev.1
42
 rnpm link
42
 rnpm link
43
 
43
 
44
 # copy android assets
44
 # copy android assets
45
-cp ./test/assets/ ./RNFetchBlobTest/android/app/src/main/
45
+cd ${CWD}
46
+cp -R ./test/assets/ ./RNFetchBlobTest/android/app/src/main/assets/
46
 
47
 
47
 # start RN
48
 # start RN
48
 cd "${TEST_APP_PATH}"
49
 cd "${TEST_APP_PATH}"

+ 8
- 4
test/test-firebase.js Bestand weergeven

16
 } from 'react-native';
16
 } from 'react-native';
17
 
17
 
18
 const fs = RNFetchBlob.fs
18
 const fs = RNFetchBlob.fs
19
+const Blob = RNFetchBlob.polyfill.Blob
20
+window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest
21
+window.Blob = Blob
22
+
19
 const { Assert, Comparer, Info, prop } = RNTest
23
 const { Assert, Comparer, Info, prop } = RNTest
20
 const describe = RNTest.config({
24
 const describe = RNTest.config({
21
   group : 'firebase',
25
   group : 'firebase',
45
       console.log('firebase sigin failed', err)
49
       console.log('firebase sigin failed', err)
46
     })
50
     })
47
   firebase.auth().onAuthStateChanged((user) => {
51
   firebase.auth().onAuthStateChanged((user) => {
48
-    report(<Assert key="login success"
52
+    report(<Assert key="login status" uid="100"
49
       expect={user !== undefined}
53
       expect={user !== undefined}
50
       actual={user}/>,
54
       actual={user}/>,
51
-    <Info key="user content">
55
+    <Info key="user content" uid="user data">
52
       <Text>{JSON.stringify(user)}</Text>
56
       <Text>{JSON.stringify(user)}</Text>
53
     </Info>)
57
     </Info>)
54
     done()
58
     done()
59
 describe('upload file to firebase', (report, done) => {
63
 describe('upload file to firebase', (report, done) => {
60
 
64
 
61
   try {
65
   try {
62
-    
66
+
63
     let storage = firebase.storage().ref()
67
     let storage = firebase.storage().ref()
64
-    let task = storage.file(`testdata/firebase-test-${Platform.OS}.png`).put(webFile, metadata)
68
+    let task = storage.child(`testdata/firebase-test-${Platform.OS}.png`).put(new Blob('hello !'), { contentType : 'text/plain' })
65
 
69
 
66
     task.on('state_change', null, (err) => {
70
     task.on('state_change', null, (err) => {
67
 
71
 

+ 2
- 2
test/test-init.js Bestand weergeven

18
 // test environment variables
18
 // test environment variables
19
 
19
 
20
 prop('FILENAME', `${Platform.OS}-0.7.0-${Date.now()}.png`)
20
 prop('FILENAME', `${Platform.OS}-0.7.0-${Date.now()}.png`)
21
-prop('TEST_SERVER_URL', 'http://192.168.16.70:8123')
22
-prop('TEST_SERVER_URL_SSL', 'https://192.168.16.70:8124')
21
+prop('TEST_SERVER_URL', 'http://192.168.0.11:8123')
22
+prop('TEST_SERVER_URL_SSL', 'https://192.168.0.11:8124')
23
 prop('DROPBOX_TOKEN', 'fsXcpmKPrHgAAAAAAAAAoXZhcXYWdgLpQMan6Tb_bzJ237DXhgQSev12hA-gUXt4')
23
 prop('DROPBOX_TOKEN', 'fsXcpmKPrHgAAAAAAAAAoXZhcXYWdgLpQMan6Tb_bzJ237DXhgQSev12hA-gUXt4')
24
 prop('styles', {
24
 prop('styles', {
25
   image : {
25
   image : {