pdfer-upload-imacros
Version:
Upload a pdfer document to the pdfer service using iMacros for Firefox and the PDFer web frontend
79 lines (75 loc) • 2.1 kB
JavaScript
/**
* Get a list of existing bills from the DocParse api server
*/
var rk = require('required-keys');
function getURL(data) {
var config = data.config;
var hash = data.hash;
var email = config.pdfer.email
var password = config.pdfer.password
email = encodeURIComponent(email);
password = encodeURIComponent(password);
var url = 'https://' + email + ':' + password + '@' + config.pdfer.host
+ '/api/sendBase64'
return url;
}
function parseResponse(request, cb) {
var resData;
var statusCode = request.status;
var body = request.response;
if (body === 'Unauthorized') {
iimDisplay('send failed failed, "Unauthorized"');
return cb({
message: 'error uploading file to pdfer service, missing key',
error: 'not authorized',
statusCode: statusCode,
body: body,
file: 'node_modules/pdfer-upload-imacros/index.js'
})
}
try {
resData = JSON.parse(body);
}
catch(err) {
return cb({
message: 'error uploading file to pdfer service, missing key',
error: err,
statusCode: statusCode,
body: body,
file: 'node_modules/pdfer-upload-imacros/index.js'
})
return cb(err);
}
if (statusCode !== 200) {
return cb({
message: 'error uploading file to pdfer service, missing key',
error: 'bad status code',
resData: resData,
statusCode: statusCode,
file: 'node_modules/pdfer-upload-imacros/index.js'
})
}
cb(null, resData);
}
module.exports = function(data, cb) {
var keys = ['config', 'type', 'base64']
var err = rk.truthySync(data, keys)
if (err) {
return cb({
message: 'error uploading file to pdfer service, missing key',
error: err,
file: 'node_modules/pdfer-upload-imacros/index.js'
})
}
var config = data.config
var url = getURL(data);
var type = data.type
var base64 = data.base64
var formData = new FormData();
var xhr = new XMLHttpRequest()
formData.append("base64PDF", base64);
formData.append("type", type);
xhr.open('POST', url, false)
xhr.send(formData);
parseResponse(xhr, cb);
};