Skip to content

Commit 24c26e0

Browse files
authored
Merge pull request #18 from contentstack/bug/formdata-request-timeout
Bug/formdata request timeout
2 parents 2feb6b5 + 10dd370 commit 24c26e0

File tree

10 files changed

+1530
-403
lines changed

10 files changed

+1530
-403
lines changed

.talismanrc

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
11
fileignoreconfig:
2-
- filename: jsdocs/stack_environment_index.js.html
3-
checksum: ef24cd9f2e12802a1abbbc440e22c486863b90823050bf0c7ed17cd95d6d0669
4-
- filename: dist/node/contentstack-management.js
5-
checksum: 8313dfeaa7e856ae355b2ef9d9beac095c8b1c7c93aafb9ab73f0d86c23e29ec
6-
- filename: dist/nativescript/contentstack-management.js
7-
checksum: bb55ba77624c3f000c56c9f9730016883be9863973e9177c4e8a3a70fa9796e1
8-
- filename: dist/react-native/contentstack-management.js
9-
checksum: 8edb4ff3adf9f4a4d21047e8aeac28231a3711fae001ef805c8fd093bd211634
10-
- filename: dist/web/contentstack-management.js
11-
checksum: a04259dd778b2f49aa5652299bdc7828e402de2167f24c33acfa8604ce662c0a
2+
- filename: package-lock.json
3+
checksum: dc2cccebfb5ca8c6330c9c5b3300633c804876a5487c41f326a2c750f500c18b

lib/core/concurrency-queue.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ 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+
}
7478
request.retryCount = request.retryCount || 0
7579
if (request.headers.authorization && request.headers.authorization !== undefined) {
7680
delete request.headers.authtoken
@@ -91,6 +95,9 @@ export function ConcurrencyQueue ({ axios, config }) {
9195
}
9296

9397
return new Promise(resolve => {
98+
request.onComplete = () => {
99+
this.running.pop({ request, resolve })
100+
}
94101
this.push({ request, resolve })
95102
})
96103
}
@@ -117,7 +124,7 @@ export function ConcurrencyQueue ({ axios, config }) {
117124

118125
// Response interceptor used for
119126
const responseHandler = (response) => {
120-
this.running.shift()
127+
response.config.onComplete()
121128
shift()
122129
return response
123130
}
@@ -210,12 +217,25 @@ export function ConcurrencyQueue ({ axios, config }) {
210217
}
211218
}
212219

220+
requestConfig.data = transformFormData(requestConfig)
213221
requestConfig.transformRequest = [function (data) {
214222
return data
215223
}]
216224
return requestConfig
217225
}
218226

227+
const transformFormData = (request) => {
228+
if (request.formdata) {
229+
const formdata = request.formdata()
230+
request.headers = {
231+
...request.headers,
232+
...formdata.getHeaders()
233+
}
234+
return formdata
235+
}
236+
return request.data
237+
}
238+
219239
// Adds interseptors in axios to queue request
220240
this.interceptors.request = axios.interceptors.request.use(requestHandler)
221241
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: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -233,28 +233,25 @@ export function AssetCollection (http, data) {
233233
return assetCollection
234234
}
235235

236-
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)
236+
export function createFormData (data) {
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: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,11 @@ export function ContentTypeCollection (http, data) {
198198
return contentTypeCollection
199199
}
200200

201-
function createFormData (data) {
202-
const formData = new FormData()
203-
const uploadStream = createReadStream(data.content_type)
204-
formData.append('content_type', uploadStream)
205-
return formData
201+
export function createFormData (data) {
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: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -155,34 +155,35 @@ export function ExtensionCollection (http, data) {
155155
return extensionCollection
156156
}
157157

158-
function createExtensionFormData (data) {
159-
const formData = new FormData()
158+
export function createExtensionFormData (data) {
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: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,11 @@ export function GlobalFieldCollection (http, data) {
148148
return globalFieldCollection
149149
}
150150

151-
function createFormData (data) {
152-
const formData = new FormData()
153-
const uploadStream = createReadStream(data.global_field)
154-
formData.append('global_field', uploadStream)
155-
return formData
151+
export function createFormData (data) {
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: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,11 @@ export function WebhookCollection (http, data) {
231231
return webhookCollection
232232
}
233233

234-
function createFormData (data) {
235-
const formData = new FormData()
236-
const uploadStream = createReadStream(data.webhook)
237-
formData.append('webhook', uploadStream)
238-
return formData
234+
export function createFormData (data) {
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)