thinkjs/lib/Lib/Core/Http.class.js
2013-10-28 10:10:58 +08:00

80 lines
2.2 KiB
JavaScript

/**
* 网络方法处理
* @type {Object}
*/
var http = require("http");
var querystring = require("querystring");
var url = require("url");
var tool = think_require("Tool");
var Http = {
init: function(){
if (C('use_php_vars')) {
global.$_GET = {};
global.$_POST = {};
global.$_REQUEST = {};
global.$_FILES = {};
global.$_COOKIE = {};
global.$_HTTP = {};
};
global.__http = {};
},
run: function(callback){
this.init();
this._request();
this._response();
var method = __http.req.method;
var methods = ["post", "put", "patch"];
if (methods.indexOf(method)> -1) {
if (C('post_data_asyn')) {
callback && callback();
this.getData();
}else{
this.getData(callback);
}
}else{
callback && callback();
}
},
getData: function(callback){
var multiparty = require("multiparty");
var form = new multiparty.Form();
form.on("file", function(name, value){
__http.req.file[name] = value;
});
form.on("field", function(name, value){
__http.req.post[name] = value;
});
form.on("close", function(){
callback && callback();
});
form.parse(__request);
},
_request: function(){
var req = {
version: __request.httpVersion,
statusCode: __request.statusCode,
status: http.STATUS_CODES[__http.statusCode] || "",
method: __request.method.toLowerCase(),
headers: __request.headers,
getHeader: function(name){
if (name == 'referer') {
name = 'referrer';
};
return this.headers[name] || "";
},
post: {},
file: {}
};
//cookie
req.cookie = tool.parseCookie(__request.headers.cookie || "");
var urlInfo = url.parse(__request.url, true);
extend(req, urlInfo);
__http.req = req;
},
_response: function(){
__http.res = {};
}
};
module.exports = Http;