1 | var fetchWithNetworkError = require('@uppy/utils/lib/fetchWithNetworkError');
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | module.exports = function () {
|
8 | function Client(opts) {
|
9 | if (opts === void 0) {
|
10 | opts = {};
|
11 | }
|
12 |
|
13 | this.opts = opts;
|
14 | this._reportError = this._reportError.bind(this);
|
15 | this._headers = {
|
16 | 'Transloadit-Client': this.opts.client
|
17 | };
|
18 | }
|
19 | |
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 | var _proto = Client.prototype;
|
27 |
|
28 | _proto.createAssembly = function createAssembly(_ref) {
|
29 | var _this = this;
|
30 |
|
31 | var templateId = _ref.templateId,
|
32 | params = _ref.params,
|
33 | fields = _ref.fields,
|
34 | signature = _ref.signature,
|
35 | expectedFiles = _ref.expectedFiles;
|
36 | var data = new FormData();
|
37 | data.append('params', typeof params === 'string' ? params : JSON.stringify(params));
|
38 |
|
39 | if (signature) {
|
40 | data.append('signature', signature);
|
41 | }
|
42 |
|
43 | Object.keys(fields).forEach(function (key) {
|
44 | data.append(key, fields[key]);
|
45 | });
|
46 | data.append('num_expected_upload_files', expectedFiles);
|
47 | var url = this.opts.service + "/assemblies";
|
48 | return fetchWithNetworkError(url, {
|
49 | method: 'post',
|
50 | headers: this._headers,
|
51 | body: data
|
52 | }).then(function (response) {
|
53 | return response.json();
|
54 | }).then(function (assembly) {
|
55 | if (assembly.error) {
|
56 | var error = new Error(assembly.error);
|
57 | error.details = assembly.message;
|
58 | error.assembly = assembly;
|
59 |
|
60 | if (assembly.assembly_id) {
|
61 | error.details += ' ' + ("Assembly ID: " + assembly.assembly_id);
|
62 | }
|
63 |
|
64 | throw error;
|
65 | }
|
66 |
|
67 | return assembly;
|
68 | }).catch(function (err) {
|
69 | return _this._reportError(err, {
|
70 | url: url,
|
71 | type: 'API_ERROR'
|
72 | });
|
73 | });
|
74 | }
|
75 | |
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 | ;
|
82 |
|
83 | _proto.reserveFile = function reserveFile(assembly, file) {
|
84 | var _this2 = this;
|
85 |
|
86 | var size = encodeURIComponent(file.size);
|
87 | var url = assembly.assembly_ssl_url + "/reserve_file?size=" + size;
|
88 | return fetchWithNetworkError(url, {
|
89 | method: 'post',
|
90 | headers: this._headers
|
91 | }).then(function (response) {
|
92 | return response.json();
|
93 | }).catch(function (err) {
|
94 | return _this2._reportError(err, {
|
95 | assembly: assembly,
|
96 | file: file,
|
97 | url: url,
|
98 | type: 'API_ERROR'
|
99 | });
|
100 | });
|
101 | }
|
102 | |
103 |
|
104 |
|
105 |
|
106 |
|
107 |
|
108 | ;
|
109 |
|
110 | _proto.addFile = function addFile(assembly, file) {
|
111 | var _this3 = this;
|
112 |
|
113 | if (!file.uploadURL) {
|
114 | return Promise.reject(new Error('File does not have an `uploadURL`.'));
|
115 | }
|
116 |
|
117 | var size = encodeURIComponent(file.size);
|
118 | var uploadUrl = encodeURIComponent(file.uploadURL);
|
119 | var filename = encodeURIComponent(file.name);
|
120 | var fieldname = 'file';
|
121 | var qs = "size=" + size + "&filename=" + filename + "&fieldname=" + fieldname + "&s3Url=" + uploadUrl;
|
122 | var url = assembly.assembly_ssl_url + "/add_file?" + qs;
|
123 | return fetchWithNetworkError(url, {
|
124 | method: 'post',
|
125 | headers: this._headers
|
126 | }).then(function (response) {
|
127 | return response.json();
|
128 | }).catch(function (err) {
|
129 | return _this3._reportError(err, {
|
130 | assembly: assembly,
|
131 | file: file,
|
132 | url: url,
|
133 | type: 'API_ERROR'
|
134 | });
|
135 | });
|
136 | }
|
137 | |
138 |
|
139 |
|
140 |
|
141 |
|
142 | ;
|
143 |
|
144 | _proto.cancelAssembly = function cancelAssembly(assembly) {
|
145 | var _this4 = this;
|
146 |
|
147 | var url = assembly.assembly_ssl_url;
|
148 | return fetchWithNetworkError(url, {
|
149 | method: 'delete',
|
150 | headers: this._headers
|
151 | }).then(function (response) {
|
152 | return response.json();
|
153 | }).catch(function (err) {
|
154 | return _this4._reportError(err, {
|
155 | url: url,
|
156 | type: 'API_ERROR'
|
157 | });
|
158 | });
|
159 | }
|
160 | |
161 |
|
162 |
|
163 |
|
164 |
|
165 | ;
|
166 |
|
167 | _proto.getAssemblyStatus = function getAssemblyStatus(url) {
|
168 | var _this5 = this;
|
169 |
|
170 | return fetchWithNetworkError(url, {
|
171 | headers: this._headers
|
172 | }).then(function (response) {
|
173 | return response.json();
|
174 | }).catch(function (err) {
|
175 | return _this5._reportError(err, {
|
176 | url: url,
|
177 | type: 'STATUS_ERROR'
|
178 | });
|
179 | });
|
180 | };
|
181 |
|
182 | _proto.submitError = function submitError(err, _ref2) {
|
183 | var endpoint = _ref2.endpoint,
|
184 | instance = _ref2.instance,
|
185 | assembly = _ref2.assembly;
|
186 | var message = err.details ? err.message + " (" + err.details + ")" : err.message;
|
187 | return fetchWithNetworkError('https://status.transloadit.com/client_error', {
|
188 | method: 'post',
|
189 | body: JSON.stringify({
|
190 | endpoint: endpoint,
|
191 | instance: instance,
|
192 | assembly_id: assembly,
|
193 | agent: typeof navigator !== 'undefined' ? navigator.userAgent : '',
|
194 | client: this.opts.client,
|
195 | error: message
|
196 | })
|
197 | }).then(function (response) {
|
198 | return response.json();
|
199 | });
|
200 | };
|
201 |
|
202 | _proto._reportError = function _reportError(err, params) {
|
203 | if (this.opts.errorReporting === false) {
|
204 | throw err;
|
205 | }
|
206 |
|
207 | var opts = {
|
208 | type: params.type
|
209 | };
|
210 |
|
211 | if (params.assembly) {
|
212 | opts.assembly = params.assembly.assembly_id;
|
213 | opts.instance = params.assembly.instance;
|
214 | }
|
215 |
|
216 | if (params.url) {
|
217 | opts.endpoint = params.url;
|
218 | }
|
219 |
|
220 | this.submitError(err, opts).catch(function (_) {
|
221 | });
|
222 | throw err;
|
223 | };
|
224 |
|
225 | return Client;
|
226 | }(); |
\ | No newline at end of file |