fimfic2epub/src/fetch.js

48 lines
946 B
JavaScript
Raw Normal View History

2016-06-24 01:26:01 +12:00
2016-06-28 19:39:31 +12:00
import isNode from 'detect-node'
function fetchNode (url, cb, responseType) {
2016-08-15 08:42:57 +12:00
const request = require('request')
request({
2016-06-28 19:39:31 +12:00
url: url,
encoding: responseType ? null : 'utf8',
headers: {
2016-06-29 06:26:04 +12:00
referer: 'http://www.fimfiction.net/',
cookie: 'view_mature=true'
2016-06-28 19:39:31 +12:00
}
}, (error, response, body) => {
if (error) {
console.error(error)
cb()
return
}
let type = response.headers['content-type']
cb(body, type)
})
}
export default function fetch (url, cb, responseType) {
2016-06-24 01:26:01 +12:00
if (url.indexOf('//') === 0) {
url = 'http:' + url
}
2016-06-28 19:39:31 +12:00
if (isNode) {
fetchNode(url, cb, responseType)
return
}
2016-06-24 01:26:01 +12:00
let x = new XMLHttpRequest()
x.open('get', url, true)
2016-06-28 19:39:31 +12:00
if (responseType) {
x.responseType = responseType
2016-06-24 01:26:01 +12:00
}
x.onload = function () {
cb(x.response, x.getResponseHeader('content-type'))
}
x.onerror = function () {
console.error('error')
cb(null)
}
x.send()
}