Update utils.js
This commit is contained in:
parent
f52a0a498f
commit
4189f4af00
103
src/utils.js
103
src/utils.js
|
@ -3,6 +3,7 @@ const { padStart } = require('lodash')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const axios = require('axios').default
|
const axios = require('axios').default
|
||||||
const axiosCookieJarSupport = require('axios-cookiejar-support').default
|
const axiosCookieJarSupport = require('axios-cookiejar-support').default
|
||||||
|
const axiosCacheAdapter = require('axios-cache-adapter')
|
||||||
const tough = require('tough-cookie')
|
const tough = require('tough-cookie')
|
||||||
const convert = require('xml-js')
|
const convert = require('xml-js')
|
||||||
const { merge } = require('lodash')
|
const { merge } = require('lodash')
|
||||||
|
@ -39,13 +40,65 @@ utils.loadConfig = function (config) {
|
||||||
timeout: 5000,
|
timeout: 5000,
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
jar: new tough.CookieJar(),
|
jar: new tough.CookieJar(),
|
||||||
responseType: 'arraybuffer'
|
responseType: 'arraybuffer',
|
||||||
|
cache: {
|
||||||
|
readHeaders: false,
|
||||||
|
exclude: {
|
||||||
|
query: false
|
||||||
|
},
|
||||||
|
maxAge: 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return merge(defaultConfig, config)
|
return merge(defaultConfig, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
utils.createClient = function (config) {
|
||||||
|
const client = axiosCacheAdapter.setup()
|
||||||
|
client.interceptors.request.use(
|
||||||
|
function (request) {
|
||||||
|
if (config.debug) {
|
||||||
|
console.log('Request:', JSON.stringify(request, null, 2))
|
||||||
|
}
|
||||||
|
return request
|
||||||
|
},
|
||||||
|
function (error) {
|
||||||
|
return Promise.reject(error)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
client.interceptors.response.use(
|
||||||
|
function (response) {
|
||||||
|
if (config.debug) {
|
||||||
|
const data = utils.isObject(response.data)
|
||||||
|
? JSON.stringify(response.data)
|
||||||
|
: response.data.toString()
|
||||||
|
console.log(
|
||||||
|
'Response:',
|
||||||
|
JSON.stringify(
|
||||||
|
{
|
||||||
|
headers: response.headers,
|
||||||
|
data,
|
||||||
|
fromCache: response.request.fromCache === true
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
clearTimeout(timeout)
|
||||||
|
return response
|
||||||
|
},
|
||||||
|
function (error) {
|
||||||
|
clearTimeout(timeout)
|
||||||
|
return Promise.reject(error)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
utils.parseChannels = function (xml) {
|
utils.parseChannels = function (xml) {
|
||||||
const result = convert.xml2js(xml)
|
const result = convert.xml2js(xml)
|
||||||
const siteTag = result.elements.find(el => el.name === 'site') || {}
|
const siteTag = result.elements.find(el => el.name === 'site') || {}
|
||||||
|
@ -205,10 +258,6 @@ utils.buildRequest = async function (item, config) {
|
||||||
request.data = await utils.getRequestData(item, config)
|
request.data = await utils.getRequestData(item, config)
|
||||||
request.cancelToken = source.token
|
request.cancelToken = source.token
|
||||||
|
|
||||||
if (config.debug) {
|
|
||||||
console.log('Request:', JSON.stringify(request, null, 2))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.curl) {
|
if (config.curl) {
|
||||||
const curl = CurlGenerator({
|
const curl = CurlGenerator({
|
||||||
url: request.url,
|
url: request.url,
|
||||||
|
@ -222,19 +271,8 @@ utils.buildRequest = async function (item, config) {
|
||||||
return request
|
return request
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.fetchData = function (request) {
|
utils.fetchData = function (client, request) {
|
||||||
axios.interceptors.response.use(
|
return client(request)
|
||||||
function (response) {
|
|
||||||
clearTimeout(timeout)
|
|
||||||
return response
|
|
||||||
},
|
|
||||||
function (error) {
|
|
||||||
clearTimeout(timeout)
|
|
||||||
return Promise.reject(error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
return axios(request)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.getRequestHeaders = async function (item, config) {
|
utils.getRequestHeaders = async function (item, config) {
|
||||||
|
@ -277,24 +315,15 @@ utils.getUTCDate = function (d = null) {
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.parseResponse = async (item, response, config) => {
|
utils.parseResponse = async (item, response, config) => {
|
||||||
if (config.debug) {
|
const content = utils.isObject(response.data)
|
||||||
console.log(
|
? JSON.stringify(response.data)
|
||||||
'Response:',
|
: response.data.toString()
|
||||||
JSON.stringify(
|
const buffer = Buffer.from(content, 'utf8')
|
||||||
{
|
|
||||||
headers: response.headers,
|
|
||||||
data: response.data.toString()
|
|
||||||
},
|
|
||||||
null,
|
|
||||||
2
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const data = merge(item, config, {
|
const data = merge(item, config, {
|
||||||
content: response.data.toString(),
|
content,
|
||||||
buffer: response.data,
|
buffer,
|
||||||
headers: response.headers
|
headers: response.headers,
|
||||||
|
request: response.request
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!item.channel.logo && config.logo) {
|
if (!item.channel.logo && config.logo) {
|
||||||
|
@ -346,4 +375,8 @@ utils.isPromise = function (promise) {
|
||||||
return !!promise && typeof promise.then === 'function'
|
return !!promise && typeof promise.then === 'function'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
utils.isObject = function (a) {
|
||||||
|
return !!a && a.constructor === Object
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = utils
|
module.exports = utils
|
||||||
|
|
Loading…
Reference in New Issue