1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- var spawn = require('child_process').spawn;
- var command;
- switch(process.platform) {
- case 'darwin':
- command = 'open';
- break;
- case 'win32':
- command = 'explorer.exe';
- break;
- case 'linux':
- command = 'xdg-open';
- break;
- default:
- throw new Error('Unsupported platform: ' + process.platform);
- }
- /**
- * Error handling is deliberately minimal, as this function is to be easy to use for shell scripting
- *
- * @param url The URL to open
- * @param callback A function with a single error argument. Optional.
- */
- function open(url, callback) {
- var child = spawn(command, [url]);
- var errorText = "";
- child.stderr.setEncoding('utf8');
- child.stderr.on('data', function (data) {
- errorText += data;
- });
- child.stderr.on('end', function () {
- if (errorText.length > 0) {
- var error = new Error(errorText);
- if (callback) {
- callback(error);
- } else {
- throw error;
- }
- } else if (callback) {
- callback(error);
- }
- });
- }
- /**
- * @param fields Common fields are: "subject", "body".
- * Some email apps let you specify arbitrary headers here.
- * @param recipientsSeparator Default is ",". Use ";" for Outlook.
- */
- function mailto(recipients, fields, recipientsSeparator, callback) {
- recipientsSeparator = recipientsSeparator || ",";
- var url = "mailto:"+recipients.join(recipientsSeparator);
- Object.keys(fields).forEach(function (key, index) {
- if (index === 0) {
- url += "?";
- } else {
- url += "&";
- }
- url += key + "=" + encodeURIComponent(fields[key]);
- });
- open(url, callback);
- }
- exports.open = open;
- exports.mailto = mailto;
|