Skip to content

Commit 1e4610a

Browse files
authored
Merge pull request joltup#129 from site-mate/fix/DPM-1021-missing-base64-dependency
added missing base64 dependency
2 parents 2053273 + b5badc4 commit 1e4610a

File tree

1 file changed

+176
-176
lines changed

1 file changed

+176
-176
lines changed
+176-176
Original file line numberDiff line numberDiff line change
@@ -1,177 +1,177 @@
1-
import {ReactNativeBlobUtilResponseInfo, ReactNativeBlobUtilStream} from "../types";
2-
import fs from "../fs";
3-
import Blob from "../polyfill/Blob";
4-
import ReactNativeBlobUtilSession from "./ReactNativeBlobUtilSession";
5-
import URIUtil from "../utils/uri";
6-
7-
/**
8-
* ReactNativeBlobUtil response object class.
9-
*/
10-
export class FetchBlobResponse {
11-
12-
taskId: string;
13-
path: () => string | null;
14-
type: 'base64' | 'path' | 'utf8';
15-
data: any;
16-
blob: (contentType: string, sliceSize: number) => Promise<Blob>;
17-
text: () => string | Promise<any>;
18-
json: () => any;
19-
base64: () => any;
20-
flush: () => void;
21-
respInfo: ReactNativeBlobUtilResponseInfo;
22-
session: (name: string) => ReactNativeBlobUtilSession | null;
23-
readFile: (encode: 'base64' | 'utf8' | 'ascii') => ?Promise<any>;
24-
readStream: (
25-
encode: 'utf8' | 'ascii' | 'base64',
26-
) => ReactNativeBlobUtilStream | null;
27-
28-
constructor(taskId: string, info: ReactNativeBlobUtilResponseInfo, data: any) {
29-
this.data = data;
30-
this.taskId = taskId;
31-
this.type = info.rnfbEncode;
32-
this.respInfo = info;
33-
34-
this.info = (): ReactNativeBlobUtilResponseInfo => {
35-
return this.respInfo;
36-
};
37-
38-
this.array = (): Promise<Array> => {
39-
let cType = info.headers['Content-Type'] || info.headers['content-type'];
40-
return new Promise((resolve, reject) => {
41-
switch (this.type) {
42-
case 'base64':
43-
// TODO : base64 to array buffer
44-
break;
45-
case 'path':
46-
fs.readFile(this.data, 'ascii').then(resolve);
47-
break;
48-
default:
49-
// TODO : text to array buffer
50-
break;
51-
}
52-
});
53-
};
54-
55-
/**
56-
* Convert result to javascript ReactNativeBlobUtil object.
57-
* @return {Promise<Blob>} Return a promise resolves Blob object.
58-
*/
59-
this.blob = (): Promise<Blob> => {
60-
let cType = info.headers['Content-Type'] || info.headers['content-type'];
61-
return new Promise((resolve, reject) => {
62-
switch (this.type) {
63-
case 'base64':
64-
Blob.build(this.data, {type: cType + ';BASE64'}).then(resolve);
65-
break;
66-
case 'path':
67-
Blob.build(URIUtil.wrap(this.data), {type: cType}).then(resolve);
68-
break;
69-
default:
70-
Blob.build(this.data, {type: 'text/plain'}).then(resolve);
71-
break;
72-
}
73-
});
74-
};
75-
/**
76-
* Convert result to text.
77-
* @return {string} Decoded base64 string.
78-
*/
79-
this.text = (): string | Promise<any> => {
80-
switch (this.type) {
81-
case 'base64':
82-
return base64.decode(this.data);
83-
case 'path':
84-
return fs.readFile(this.data, 'base64').then((b64) => Promise.resolve(base64.decode(b64)));
85-
default:
86-
return this.data;
87-
}
88-
};
89-
/**
90-
* Convert result to JSON object.
91-
* @return {object} Parsed javascript object.
92-
*/
93-
this.json = (): any => {
94-
switch (this.type) {
95-
case 'base64':
96-
return JSON.parse(base64.decode(this.data));
97-
case 'path':
98-
return fs.readFile(this.data, 'utf8')
99-
.then((text) => Promise.resolve(JSON.parse(text)));
100-
default:
101-
return JSON.parse(this.data);
102-
}
103-
};
104-
/**
105-
* Return BASE64 string directly.
106-
* @return {string} BASE64 string of response body.
107-
*/
108-
this.base64 = (): string | Promise<any> => {
109-
switch (this.type) {
110-
case 'base64':
111-
return this.data;
112-
case 'path':
113-
return fs.readFile(this.data, 'base64');
114-
default:
115-
return base64.encode(this.data);
116-
}
117-
};
118-
/**
119-
* Remove cahced file
120-
* @return {Promise}
121-
*/
122-
this.flush = () => {
123-
let path = this.path();
124-
if (!path || this.type !== 'path')
125-
return;
126-
return fs.unlink(path);
127-
};
128-
/**
129-
* get path of response temp file
130-
* @return {string} File path of temp file.
131-
*/
132-
this.path = () => {
133-
if (this.type === 'path')
134-
return this.data;
135-
return null;
136-
};
137-
138-
this.session = (name: string): ReactNativeBlobUtilSession | null => {
139-
if (this.type === 'path')
140-
return fs.session(name).add(this.data);
141-
else {
142-
console.warn('only file paths can be add into session.');
143-
return null;
144-
}
145-
};
146-
/**
147-
* Start read stream from cached file
148-
* @param {String} encoding Encode type, should be one of `base64`, `ascii`, `utf8`.
149-
* @return {void}
150-
*/
151-
this.readStream = (encoding: 'base64' | 'utf8' | 'ascii'): ReactNativeBlobUtilStream | null => {
152-
if (this.type === 'path') {
153-
return fs.readStream(this.data, encoding);
154-
}
155-
else {
156-
console.warn('ReactNativeBlobUtil', 'this response data does not contains any available stream');
157-
return null;
158-
}
159-
};
160-
/**
161-
* Read file content with given encoding, if the response does not contains
162-
* a file path, show warning message
163-
* @param {String} encoding Encode type, should be one of `base64`, `ascrii`, `utf8`.
164-
* @return {String}
165-
*/
166-
this.readFile = (encoding: 'base64' | 'utf8' | 'ascii') => {
167-
if (this.type === 'path') {
168-
return fs.readFile(this.data, encoding);
169-
}
170-
else {
171-
console.warn('ReactNativeBlobUtil', 'this response does not contains a readable file');
172-
return null;
173-
}
174-
};
175-
}
176-
1+
import {ReactNativeBlobUtilResponseInfo, ReactNativeBlobUtilStream} from "../types";
2+
import fs from "../fs";
3+
import Blob from "../polyfill/Blob";
4+
import ReactNativeBlobUtilSession from "./ReactNativeBlobUtilSession";
5+
import URIUtil from "../utils/uri";
6+
import base64 from "base-64";
7+
/**
8+
* ReactNativeBlobUtil response object class.
9+
*/
10+
export class FetchBlobResponse {
11+
12+
taskId: string;
13+
path: () => string | null;
14+
type: 'base64' | 'path' | 'utf8';
15+
data: any;
16+
blob: (contentType: string, sliceSize: number) => Promise<Blob>;
17+
text: () => string | Promise<any>;
18+
json: () => any;
19+
base64: () => any;
20+
flush: () => void;
21+
respInfo: ReactNativeBlobUtilResponseInfo;
22+
session: (name: string) => ReactNativeBlobUtilSession | null;
23+
readFile: (encode: 'base64' | 'utf8' | 'ascii') => ?Promise<any>;
24+
readStream: (
25+
encode: 'utf8' | 'ascii' | 'base64',
26+
) => ReactNativeBlobUtilStream | null;
27+
28+
constructor(taskId: string, info: ReactNativeBlobUtilResponseInfo, data: any) {
29+
this.data = data;
30+
this.taskId = taskId;
31+
this.type = info.rnfbEncode;
32+
this.respInfo = info;
33+
34+
this.info = (): ReactNativeBlobUtilResponseInfo => {
35+
return this.respInfo;
36+
};
37+
38+
this.array = (): Promise<Array> => {
39+
let cType = info.headers['Content-Type'] || info.headers['content-type'];
40+
return new Promise((resolve, reject) => {
41+
switch (this.type) {
42+
case 'base64':
43+
// TODO : base64 to array buffer
44+
break;
45+
case 'path':
46+
fs.readFile(this.data, 'ascii').then(resolve);
47+
break;
48+
default:
49+
// TODO : text to array buffer
50+
break;
51+
}
52+
});
53+
};
54+
55+
/**
56+
* Convert result to javascript ReactNativeBlobUtil object.
57+
* @return {Promise<Blob>} Return a promise resolves Blob object.
58+
*/
59+
this.blob = (): Promise<Blob> => {
60+
let cType = info.headers['Content-Type'] || info.headers['content-type'];
61+
return new Promise((resolve, reject) => {
62+
switch (this.type) {
63+
case 'base64':
64+
Blob.build(this.data, {type: cType + ';BASE64'}).then(resolve);
65+
break;
66+
case 'path':
67+
Blob.build(URIUtil.wrap(this.data), {type: cType}).then(resolve);
68+
break;
69+
default:
70+
Blob.build(this.data, {type: 'text/plain'}).then(resolve);
71+
break;
72+
}
73+
});
74+
};
75+
/**
76+
* Convert result to text.
77+
* @return {string} Decoded base64 string.
78+
*/
79+
this.text = (): string | Promise<any> => {
80+
switch (this.type) {
81+
case 'base64':
82+
return base64.decode(this.data);
83+
case 'path':
84+
return fs.readFile(this.data, 'base64').then((b64) => Promise.resolve(base64.decode(b64)));
85+
default:
86+
return this.data;
87+
}
88+
};
89+
/**
90+
* Convert result to JSON object.
91+
* @return {object} Parsed javascript object.
92+
*/
93+
this.json = (): any => {
94+
switch (this.type) {
95+
case 'base64':
96+
return JSON.parse(base64.decode(this.data));
97+
case 'path':
98+
return fs.readFile(this.data, 'utf8')
99+
.then((text) => Promise.resolve(JSON.parse(text)));
100+
default:
101+
return JSON.parse(this.data);
102+
}
103+
};
104+
/**
105+
* Return BASE64 string directly.
106+
* @return {string} BASE64 string of response body.
107+
*/
108+
this.base64 = (): string | Promise<any> => {
109+
switch (this.type) {
110+
case 'base64':
111+
return this.data;
112+
case 'path':
113+
return fs.readFile(this.data, 'base64');
114+
default:
115+
return base64.encode(this.data);
116+
}
117+
};
118+
/**
119+
* Remove cahced file
120+
* @return {Promise}
121+
*/
122+
this.flush = () => {
123+
let path = this.path();
124+
if (!path || this.type !== 'path')
125+
return;
126+
return fs.unlink(path);
127+
};
128+
/**
129+
* get path of response temp file
130+
* @return {string} File path of temp file.
131+
*/
132+
this.path = () => {
133+
if (this.type === 'path')
134+
return this.data;
135+
return null;
136+
};
137+
138+
this.session = (name: string): ReactNativeBlobUtilSession | null => {
139+
if (this.type === 'path')
140+
return fs.session(name).add(this.data);
141+
else {
142+
console.warn('only file paths can be add into session.');
143+
return null;
144+
}
145+
};
146+
/**
147+
* Start read stream from cached file
148+
* @param {String} encoding Encode type, should be one of `base64`, `ascii`, `utf8`.
149+
* @return {void}
150+
*/
151+
this.readStream = (encoding: 'base64' | 'utf8' | 'ascii'): ReactNativeBlobUtilStream | null => {
152+
if (this.type === 'path') {
153+
return fs.readStream(this.data, encoding);
154+
}
155+
else {
156+
console.warn('ReactNativeBlobUtil', 'this response data does not contains any available stream');
157+
return null;
158+
}
159+
};
160+
/**
161+
* Read file content with given encoding, if the response does not contains
162+
* a file path, show warning message
163+
* @param {String} encoding Encode type, should be one of `base64`, `ascrii`, `utf8`.
164+
* @return {String}
165+
*/
166+
this.readFile = (encoding: 'base64' | 'utf8' | 'ascii') => {
167+
if (this.type === 'path') {
168+
return fs.readFile(this.data, encoding);
169+
}
170+
else {
171+
console.warn('ReactNativeBlobUtil', 'this response does not contains a readable file');
172+
return null;
173+
}
174+
};
175+
}
176+
177177
}

0 commit comments

Comments
 (0)