Support mapbox content type (#1500)
This commit is contained in:
committed by
GitHub
parent
728868f3ea
commit
b0a7a21f72
@ -237,6 +237,7 @@ class Transport {
|
||||
|
||||
const contentEncoding = (result.headers['content-encoding'] || '').toLowerCase()
|
||||
const isCompressed = contentEncoding.indexOf('gzip') > -1 || contentEncoding.indexOf('deflate') > -1
|
||||
const isVectorTile = (result.headers['content-type'] || '').indexOf('application/vnd.mapbox-vector-tile') > -1
|
||||
|
||||
/* istanbul ignore else */
|
||||
if (result.headers['content-length'] !== undefined) {
|
||||
@ -255,8 +256,9 @@ class Transport {
|
||||
}
|
||||
// if the response is compressed, we must handle it
|
||||
// as buffer for allowing decompression later
|
||||
let payload = isCompressed ? [] : ''
|
||||
const onData = isCompressed
|
||||
// while if it's a vector tile, we should return it as buffer
|
||||
let payload = isCompressed || isVectorTile ? [] : ''
|
||||
const onData = isCompressed || isVectorTile
|
||||
? chunk => { payload.push(chunk) }
|
||||
: chunk => { payload += chunk }
|
||||
const onEnd = err => {
|
||||
@ -272,7 +274,7 @@ class Transport {
|
||||
if (isCompressed) {
|
||||
unzip(Buffer.concat(payload), onBody)
|
||||
} else {
|
||||
onBody(null, payload)
|
||||
onBody(null, isVectorTile ? Buffer.concat(payload) : payload)
|
||||
}
|
||||
}
|
||||
|
||||
@ -281,7 +283,7 @@ class Transport {
|
||||
onEnd(new Error('Response aborted while reading the body'))
|
||||
}
|
||||
|
||||
if (!isCompressed) {
|
||||
if (!isCompressed && !isVectorTile) {
|
||||
response.setEncoding('utf8')
|
||||
}
|
||||
|
||||
@ -297,7 +299,9 @@ class Transport {
|
||||
this.emit('response', err, result)
|
||||
return callback(err, result)
|
||||
}
|
||||
if (Buffer.isBuffer(payload)) {
|
||||
|
||||
const isVectorTile = (result.headers['content-type'] || '').indexOf('application/vnd.mapbox-vector-tile') > -1
|
||||
if (Buffer.isBuffer(payload) && !isVectorTile) {
|
||||
payload = payload.toString()
|
||||
}
|
||||
const isHead = params.method === 'HEAD'
|
||||
|
||||
Reference in New Issue
Block a user