wwwdudewwwdude is a small and flexible http client library on top of node\'s http client | |
| lib//httpcodes.js |
lookup table for all HTTP status codes
|
exports.codes = {
|
1XX Informational
|
'100': 'continue',
'101': 'switching-protocols',
|
2XX Successful
|
'200': 'ok',
'201': 'created',
'202': 'accepted',
'203': 'non-authorative-information',
'204': 'no-content',
'205': 'reset-content',
'207': 'partial-content',
|
3XX Redirection
|
'300': 'multiple-choices',
'301': 'moved-permanently',
'302': 'found',
'303': 'see-other',
'304': 'not-modified',
'305': 'use-proxy',
'307': 'temporary-redirect',
|
4XX Client Error
|
'400': 'bad-request',
'401': 'unauthorized',
'402': 'payment-required',
'403': 'forbidden',
'404': 'not-found',
'405': 'method-not-allowed',
'406': 'not-acceptable',
'407': 'proxy-authentication-required',
'408': 'request-timeout',
'409': 'conflict',
'410': 'gone',
'411': 'length-required',
'412': 'precondition-failed',
'413': 'request-entity-too-large',
'414': 'request-uri-too-long',
'415': 'unsupported-media-type',
'416': 'request-range-not-satisfiable',
'417': 'expectation-failed',
|
5XX Server Error
|
'500': 'internal-server-error',
'501': 'not-implemented',
'502': 'bad-gateway',
'503': 'service-unavailable',
'504': 'gateway-timeout',
'505': 'http-version-not-supported'
};
|
| lib//meta.js |
takes two objects and merges their attributes
|
exports.mergeAttributes = function (defaults, custom) {
var obj = {};
Object.keys(defaults).forEach(function (key) {
obj[key] = defaults[key];
});
if (!custom) {
return obj;
}
Object.keys(custom).forEach(function (key) {
obj[key] = custom[key];
});
return obj;
};
|
| lib//wwwdude.js |
Module dependencies
|
var Sys = require('sys');
var Http = require('http');
var Meta = require('./meta');
var Url = require('url');
var EventEmitter = require('events').EventEmitter;
var statusCodes = require('./httpcodes').codes;
var Child_process = require('child_process');
var defaultHeaders = {
'User-Agent': 'node-wwwdude',
'Accept-Encoding': 'gzip'
};
|
Factory method to initalize a client
return: Object api: public
|
var createClient = exports.createClient = function createClient(clientOptions) {
clientOptions = clientOptions || {};
var encoding = clientOptions.encoding || 'utf8';
var clientHeaders = Meta.mergeAttributes(defaultHeaders, clientOptions.headers);
if (clientOptions.compress) {
clientHeaders['Accept-Encoding'] = 'gzip';
}
|
Inherit from EventEmitter
|
Sys.inherits(Request, EventEmitter);
|
Execute a prepared HTTP request
return: undefined api: public
|
Request.prototype.send = function () {
this.request.end();
};
|
return the actual API
|
return {
get: function (url, requestHeaders) {
var headers = Meta.mergeAttributes(clientHeaders, requestHeaders);
return new Request('GET', url, { headers: headers });
},
post: function (url, payload, requestHeaders) {
var headers = Meta.mergeAttributes(clientHeaders, requestHeaders);
return new Request('POST', url, { headers: headers, payload: payload });
},
put: function (url, payload, requestHeaders) {
var headers = Meta.mergeAttributes(clientHeaders, requestHeaders);
return new Request('PUT', url, { headers: headers, payload: payload });
},
del: function (url, requestHeaders) {
var headers = Meta.mergeAttributes(clientHeaders, requestHeaders);
return new Request('DELETE', url, { headers: headers });
},
head: function (url, requestHeaders) {
var headers = Meta.mergeAttributes(clientHeaders, requestHeaders);
return new Request('HEAD', url, { headers: headers });
}
};
};
|
add support for require('wwwdude')(option)
additionally to
require('wwwdude').createClient(options)
|
createClient.createClient = createClient;
module.exports = createClient;
|