maskit/h2cli

View on GitHub
lib/cmd/get.js

Summary

Maintainability
D
2 days
Test Coverage
module.exports = {
    'exec': function (args, callback) {
        if (!args[1]) {
            console.log('usage: get URL');
            console.log('');
            console.log('You can specify authority by using format below.');
            console.log('get //<authority>/path/to/resource');
            if (callback) {
                callback();
            }
            return;
        }
        var response = {
            header: null,
            body: null
        };
        var callbacks = {
            'header': function (headers) {
                response.header = headers;
            },
            'data': function (data) {
                if (response.body) {
                    response.body += data;
                } else {
                    response.body = data;
                }
            },
            'close': function () {
                console.log('Response');
                if (response.header !== null) {
                    console.log(' Header');
                    response.header.forEach(function (h) {
                        console.log('  ' + h[0] + ': ' + h[1]);
                    });
                    console.log(' Body');
                    if (response.body !== null) {
                        console.log('  ' + response.body.toString());
                    }
                } else {
                    console.log(' Couldn\'t get a response.');
                }
                if (callback) {
                    callback();
                }
            },
            'error': function () {
                if (callback) {
                    callback();
                }
            }
        };
        var self = this;
        var parsedUrl = require('url').parse(args[1], true, true);
        var request = function () {
            if (parsedUrl.host) {
                self.client.request(parsedUrl.host, parsedUrl.path, 'GET', callbacks);
            } else {
                self.client.request(parsedUrl.path, 'GET', callbacks);
            }
        };
        if (!this.client.connection) {
            var secure = parsedUrl.protocol === 'https:';
            var port = parsedUrl.port ? parsedUrl.port : (secure ? 443 : 80);
            this.client.connect(parsedUrl.hostname, port, {
                secure: secure,
                useNpn: true
            }, function (stream, error) {
                if (!error) {
                    request();
                }
            });
        } else {
            request();
        }
    },
    'arguments': {
        '<url>': {}
    },
    'help': {
        'summary': 'Send a HEAD request',
        'description': ''
    }
};