Skip to content

Commit f80af3d

Browse files
committed
fix: 🐛 Formdata retry
1 parent 2feb6b5 commit f80af3d

File tree

8 files changed

+92
-68
lines changed

8 files changed

+92
-68
lines changed

.talismanrc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
fileignoreconfig:
22
- filename: jsdocs/stack_environment_index.js.html
3-
checksum: ef24cd9f2e12802a1abbbc440e22c486863b90823050bf0c7ed17cd95d6d0669
3+
checksum: 1093109567f5d30a23900af471422ccbad4c24aac2415d5bdd4f4f1eb95b27b3
44
- filename: dist/node/contentstack-management.js
5-
checksum: 8313dfeaa7e856ae355b2ef9d9beac095c8b1c7c93aafb9ab73f0d86c23e29ec
5+
checksum: 04714b8c8d21f1aec36faed12738dd8d5c16bca6197b57309f87208a15be1c37
66
- filename: dist/nativescript/contentstack-management.js
7-
checksum: bb55ba77624c3f000c56c9f9730016883be9863973e9177c4e8a3a70fa9796e1
7+
checksum: dd7ca11b797a1e00d863a2474433b37c5517d7fe69977dd506680432e7f8c19c
88
- filename: dist/react-native/contentstack-management.js
9-
checksum: 8edb4ff3adf9f4a4d21047e8aeac28231a3711fae001ef805c8fd093bd211634
9+
checksum: 9fdd9277c186a8b670813528c89f8a21484122ca2aca6d4f7b3d501153ed936d
1010
- filename: dist/web/contentstack-management.js
11-
checksum: a04259dd778b2f49aa5652299bdc7828e402de2167f24c33acfa8604ce662c0a
11+
checksum: 16fce6e8acfa61a77bb2e900347c17b6bc6f465aeefeac99fb22ec221dffff10

lib/core/concurrency-queue.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ export function ConcurrencyQueue ({ axios, config }) {
7171

7272
// Request interceptor to queue the request
7373
const requestHandler = request => {
74+
if (typeof request.data === 'function') {
75+
request.formdata = request.data
76+
request.data = transformFormData(request)
77+
}
78+
console.log(request.data)
7479
request.retryCount = request.retryCount || 0
7580
if (request.headers.authorization && request.headers.authorization !== undefined) {
7681
delete request.headers.authtoken
@@ -91,6 +96,9 @@ export function ConcurrencyQueue ({ axios, config }) {
9196
}
9297

9398
return new Promise(resolve => {
99+
request.onComplete = () => {
100+
this.running.pop({ request, resolve })
101+
}
94102
this.push({ request, resolve })
95103
})
96104
}
@@ -117,7 +125,7 @@ export function ConcurrencyQueue ({ axios, config }) {
117125

118126
// Response interceptor used for
119127
const responseHandler = (response) => {
120-
this.running.shift()
128+
response.config.onComplete()
121129
shift()
122130
return response
123131
}
@@ -210,12 +218,25 @@ export function ConcurrencyQueue ({ axios, config }) {
210218
}
211219
}
212220

221+
requestConfig.data = transformFormData(requestConfig)
213222
requestConfig.transformRequest = [function (data) {
214223
return data
215224
}]
216225
return requestConfig
217226
}
218227

228+
const transformFormData = (request) => {
229+
if (request.formdata) {
230+
const formdata = request.formdata()
231+
request.headers = {
232+
...request.headers,
233+
...formdata.getHeaders()
234+
}
235+
return formdata
236+
}
237+
return request.data
238+
}
239+
219240
// Adds interseptors in axios to queue request
220241
this.interceptors.request = axios.interceptors.request.use(requestHandler)
221242
this.interceptors.response = axios.interceptors.response.use(responseHandler, responseErrorHandler)

lib/entity.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ export const upload = async ({ http, urlPath, stackHeaders, formData, params, me
5757
const headers = {
5858
headers: {
5959
...params,
60-
...formData.getHeaders(),
6160
...cloneDeep(stackHeaders)
6261
}
6362
} || {}

lib/stack/asset/index.js

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -234,27 +234,24 @@ export function AssetCollection (http, data) {
234234
}
235235

236236
function createFormData (data) {
237-
const formData = new FormData()
238-
if (typeof data['parent_uid'] === 'string') {
239-
formData.append('asset[parent_uid]', data['parent_uid'])
240-
}
241-
242-
if (typeof data.description === 'string') {
243-
formData.append('asset[description]', data.description)
244-
}
245-
246-
if (data.tags instanceof Array) {
247-
formData.append('asset[tags]', data.tags.join(','))
248-
} else if (typeof data.tags === 'string') {
249-
formData.append('asset[tags]', data.tags)
250-
}
251-
252-
if (typeof data.title === 'string') {
253-
formData.append('asset[title]', data.title)
237+
return () => {
238+
const formData = new FormData()
239+
if (typeof data['parent_uid'] === 'string') {
240+
formData.append('asset[parent_uid]', data['parent_uid'])
241+
}
242+
if (typeof data.description === 'string') {
243+
formData.append('asset[description]', data.description)
244+
}
245+
if (data.tags instanceof Array) {
246+
formData.append('asset[tags]', data.tags.join(','))
247+
} else if (typeof data.tags === 'string') {
248+
formData.append('asset[tags]', data.tags)
249+
}
250+
if (typeof data.title === 'string') {
251+
formData.append('asset[title]', data.title)
252+
}
253+
const uploadStream = createReadStream(data.upload)
254+
formData.append('asset[upload]', uploadStream)
255+
return formData
254256
}
255-
256-
const uploadStream = createReadStream(data.upload)
257-
formData.append('asset[upload]', uploadStream)
258-
259-
return formData
260257
}

lib/stack/contentType/index.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,10 @@ export function ContentTypeCollection (http, data) {
199199
}
200200

201201
function createFormData (data) {
202-
const formData = new FormData()
203-
const uploadStream = createReadStream(data.content_type)
204-
formData.append('content_type', uploadStream)
205-
return formData
202+
return () => {
203+
const formData = new FormData()
204+
const uploadStream = createReadStream(data.content_type)
205+
formData.append('content_type', uploadStream)
206+
return formData
207+
}
206208
}

lib/stack/extension/index.js

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -156,33 +156,34 @@ export function ExtensionCollection (http, data) {
156156
}
157157

158158
function createExtensionFormData (data) {
159-
const formData = new FormData()
159+
return () => {
160+
const formData = new FormData()
160161

161-
if (typeof data.title === 'string') {
162-
formData.append('extension[title]', data.title)
163-
}
164-
if (typeof data.scope === 'object') {
165-
formData.append('extension[scope]', `${data.scope}`)
166-
}
167-
if (typeof data['data_type'] === 'string') {
168-
formData.append('extension[data_type]', data['data_type'])
169-
}
170-
if (typeof data.type === 'string') {
171-
formData.append('extension[type]', data.type)
172-
}
173-
if (data.tags instanceof Array) {
174-
formData.append('extension[tags]', data.tags.join(','))
175-
} else if (typeof data.tags === 'string') {
176-
formData.append('extension[tags]', data.tags)
177-
}
178-
if (typeof data.multiple === 'boolean') {
179-
formData.append('extension[multiple]', `${data.multiple}`)
180-
}
181-
if (typeof data.enable === 'boolean') {
182-
formData.append('extension[enable]', `${data.enable}`)
162+
if (typeof data.title === 'string') {
163+
formData.append('extension[title]', data.title)
164+
}
165+
if (typeof data.scope === 'object') {
166+
formData.append('extension[scope]', `${data.scope}`)
167+
}
168+
if (typeof data['data_type'] === 'string') {
169+
formData.append('extension[data_type]', data['data_type'])
170+
}
171+
if (typeof data.type === 'string') {
172+
formData.append('extension[type]', data.type)
173+
}
174+
if (data.tags instanceof Array) {
175+
formData.append('extension[tags]', data.tags.join(','))
176+
} else if (typeof data.tags === 'string') {
177+
formData.append('extension[tags]', data.tags)
178+
}
179+
if (typeof data.multiple === 'boolean') {
180+
formData.append('extension[multiple]', `${data.multiple}`)
181+
}
182+
if (typeof data.enable === 'boolean') {
183+
formData.append('extension[enable]', `${data.enable}`)
184+
}
185+
const uploadStream = createReadStream(data.upload)
186+
formData.append('extension[upload]', uploadStream)
187+
return formData
183188
}
184-
185-
const uploadStream = createReadStream(data.upload)
186-
formData.append('extension[upload]', uploadStream)
187-
return formData
188189
}

lib/stack/globalField/index.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,10 @@ export function GlobalFieldCollection (http, data) {
149149
}
150150

151151
function createFormData (data) {
152-
const formData = new FormData()
153-
const uploadStream = createReadStream(data.global_field)
154-
formData.append('global_field', uploadStream)
155-
return formData
152+
return () => {
153+
const formData = new FormData()
154+
const uploadStream = createReadStream(data.global_field)
155+
formData.append('global_field', uploadStream)
156+
return formData
157+
}
156158
}

lib/stack/webhook/index.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,10 @@ export function WebhookCollection (http, data) {
232232
}
233233

234234
function createFormData (data) {
235-
const formData = new FormData()
236-
const uploadStream = createReadStream(data.webhook)
237-
formData.append('webhook', uploadStream)
238-
return formData
235+
return () => {
236+
const formData = new FormData()
237+
const uploadStream = createReadStream(data.webhook)
238+
formData.append('webhook', uploadStream)
239+
return formData
240+
}
239241
}

0 commit comments

Comments
 (0)