recurl
Version:
post a file to a revisit service from the command line
70 lines (57 loc) • 1.6 kB
JavaScript
var concat = require('concat-stream')
var mmm = require('mmmagic')
var toBuffer = require('data-uri-to-buffer')
var request = require('request')
function recurl(serviceUrl) {
var isRequest = !!serviceUrl
return concat(function (file) {
var magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE) // wtf?
magic.detect(file, function (err, type) {
if (err) {
console.error(err)
process.exit(1)
}
var json = '{"meta":{},"content":{"data":"' +'data:' + type + ';base64,'
json += file.toString('base64')
json += '"}}'
if (isRequest) {
request.post({
url: serviceUrl,
json: true,
headers: {'content-type':'application/json'},
body: json
}, function (e, res) {
if (e) {
console.error(e)
process.exit(1)
}
}).pipe(process.stdout)
}
if (!isRequest) {
process.stdout.write(json)
}
})
})
}
function uncurl() {
return concat(function (req) {
var json = JSON.parse(req)
process.stdout.write(toBuffer(json.content.data))
})
}
var argv = process.argv
if (contains(argv, '-n') ||
contains(argv, '--no') ||
contains(argv, '--no-u')) {
process.stdin.pipe(uncurl())
} else if (contains(argv,'-s') ||
contains(argv,'--service')){
// super janky for now cause recurl isnt a transform stream like it should be
process.stdin.pipe(recurl(argv[argv.length-1]))
} else {
process.stdin.pipe(recurl())
}
function contains(arr, x) {
return arr.indexOf(x) !== -1
}