This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.7 KiB
75 lines
1.7 KiB
|
|
/** |
|
* request.js |
|
* |
|
* Request class contains server only options |
|
*/ |
|
|
|
var parse_url = require('url').parse; |
|
var Headers = require('./headers'); |
|
var Body = require('./body'); |
|
|
|
module.exports = Request; |
|
|
|
/** |
|
* Request class |
|
* |
|
* @param Mixed input Url or Request instance |
|
* @param Object init Custom options |
|
* @return Void |
|
*/ |
|
function Request(input, init) { |
|
var url, url_parsed; |
|
|
|
// normalize input |
|
if (!(input instanceof Request)) { |
|
url = input; |
|
url_parsed = parse_url(url); |
|
input = {}; |
|
} else { |
|
url = input.url; |
|
url_parsed = parse_url(url); |
|
} |
|
|
|
// normalize init |
|
init = init || {}; |
|
|
|
// fetch spec options |
|
this.method = init.method || input.method || 'GET'; |
|
this.redirect = init.redirect || input.redirect || 'follow'; |
|
this.headers = new Headers(init.headers || input.headers || {}); |
|
this.url = url; |
|
|
|
// server only options |
|
this.follow = init.follow !== undefined ? |
|
init.follow : input.follow !== undefined ? |
|
input.follow : 20; |
|
this.compress = init.compress !== undefined ? |
|
init.compress : input.compress !== undefined ? |
|
input.compress : true; |
|
this.counter = init.counter || input.counter || 0; |
|
this.agent = init.agent || input.agent; |
|
|
|
Body.call(this, init.body || this._clone(input), { |
|
timeout: init.timeout || input.timeout || 0, |
|
size: init.size || input.size || 0 |
|
}); |
|
|
|
// server request options |
|
this.protocol = url_parsed.protocol; |
|
this.hostname = url_parsed.hostname; |
|
this.port = url_parsed.port; |
|
this.path = url_parsed.path; |
|
this.auth = url_parsed.auth; |
|
} |
|
|
|
Request.prototype = Object.create(Body.prototype); |
|
|
|
/** |
|
* Clone this request |
|
* |
|
* @return Request |
|
*/ |
|
Request.prototype.clone = function() { |
|
return new Request(this); |
|
};
|
|
|