lx-music-desktop/src/main/events/request.js
2019-09-22 10:08:37 +08:00

46 lines
1.0 KiB
JavaScript

const request = require('request')
const { mainOn } = require('../../common/icp')
const tasks = []
mainOn('request', (event, options) => {
// console.log(args)
if (!options) return
let index = fetchData(options, (err, resp) => {
tasks[index] = null
if (err) {
console.log(err)
event.sender.send('response', err.message, null)
return
}
event.sender.send('response', null, resp.body)
})
event.returnValue = index
})
mainOn('cancelRequest', (event, index) => {
if (index == null) return
let r = tasks[index]
if (r == null) return
r.abort()
tasks[index] = null
})
const fetchData = (options, callback) => pushTask(tasks, request(options.url, {
method: options.method,
headers: options.headers,
Origin: options.origin,
}, (err, resp) => {
if (err) return callback(err, null)
callback(null, resp)
}))
const pushTask = (tasks, newTask) => {
for (const [index, task] of tasks.entries()) {
if (task == null) {
return tasks[index].push(newTask)
}
}
}