Rename sendHeader to writeHeader; allow reasonPhrase
authorRyan Dahl <ry@tinyclouds.org>
Mon, 22 Feb 2010 00:53:20 +0000 (16:53 -0800)
committerRyan Dahl <ry@tinyclouds.org>
Mon, 22 Feb 2010 00:53:49 +0000 (16:53 -0800)
21 files changed:
benchmark/http_simple.js
benchmark/static_http_server.js
doc/api.txt
doc/index.html
lib/http.js
test/mjsunit/test-byte-length.js
test/mjsunit/test-http-1.0.js
test/mjsunit/test-http-cat.js
test/mjsunit/test-http-chunked.js
test/mjsunit/test-http-client-race.js
test/mjsunit/test-http-client-upload.js
test/mjsunit/test-http-malformed-request.js
test/mjsunit/test-http-proxy.js
test/mjsunit/test-http-server.js
test/mjsunit/test-http-tls.js
test/mjsunit/test-http-wget.js
test/mjsunit/test-http.js
test/mjsunit/test-keep-alive.js
test/mjsunit/test-multipart.js
test/mjsunit/test-remote-module-loading.js
test/mjsunit/test-sync-fileread.js

index 75295af..1d758b0 100644 (file)
@@ -47,7 +47,7 @@ http.createServer(function (req, res) {
 
   var content_length = body.length.toString();
 
-  res.sendHeader( status 
+  res.writeHeader( status 
                 , { "Content-Type": "text/plain"
                   , "Content-Length": content_length
                   }
index 3e04ae5..5bc4812 100644 (file)
@@ -16,7 +16,7 @@ for (var i = 0; i < bytes; i++) {
 }
 
 var server = http.createServer(function (req, res) {
-  res.sendHeader(200, {
+  res.writeHeader(200, {
     "Content-Type": "text/plain",
     "Content-Length": body.length
   });
index 484374c..6c5633b 100644 (file)
@@ -19,7 +19,7 @@ World":
 var sys = require("sys"), 
    http = require("http");
 http.createServer(function (request, response) {
-  response.sendHeader(200, {"Content-Type": "text/plain"});
+  response.writeHeader(200, {"Content-Type": "text/plain"});
   response.write("Hello World\n");
   response.close();
 }).listen(8000);
@@ -916,16 +916,18 @@ The +http.Connection+ object.
 This object is created internally by a HTTP server--not by the user. It is
 passed as the second parameter to the +"request"+ event.
 
-+response.sendHeader(statusCode, headers)+ ::
++response.writeHeader(statusCode[, reasonPhrase] , headers)+ ::
 
 Sends a response header to the request. The status code is a 3-digit HTTP
-status code, like +404+. The second argument, +headers+, are the response headers.
+status code, like +404+. The last argument, +headers+, are the response headers.
+Optionally one can give a human-readable +reasonPhrase+ as the second
+argument.
 +
 Example:
 +
 ----------------------------------------
 var body = "hello world";
-response.sendHeader(200, {
+response.writeHeader(200, {
   "Content-Length": body.length,
   "Content-Type": "text/plain"
 });
@@ -936,7 +938,7 @@ be called before +response.close()+ is called.
 
 +response.write(chunk, encoding="ascii")+ ::
 
-This method must be called after +sendHeader+ was
+This method must be called after +writeHeader+ was
 called. It sends a chunk of the response body. This method may
 be called multiple times to provide successive parts of the body.
 +
@@ -1260,7 +1262,7 @@ http.createServer(function (req, res) {
     fields = {},
     name, filename;
   mp.addListener("error", function (er) {
-    res.sendHeader(400, {"content-type":"text/plain"});
+    res.writeHeader(400, {"content-type":"text/plain"});
     res.write("You sent a bad message!\n"+er.message);
     res.close();
   });
@@ -1280,7 +1282,7 @@ http.createServer(function (req, res) {
   });
   mp.addListener("complete", function () {
     var response = "You posted: \n" + sys.inspect(fields);
-    res.sendHeader(200, {
+    res.writeHeader(200, {
       "content-type" : "text/plain",
       "content-length" : response.length
     });
index 518cce9..2566cd1 100644 (file)
@@ -48,7 +48,7 @@ var sys = require('sys'),
    http = require('http');
 http.createServer(function (req, res) {
   setTimeout(function () {
-    res.sendHeader(200, {'Content-Type': 'text/plain'});
+    res.writeHeader(200, {'Content-Type': 'text/plain'});
     res.write('Hello World');
     res.close();
   }, 2000);
index 52bbf35..6278b71 100644 (file)
@@ -256,12 +256,31 @@ function ServerResponse (req) {
 sys.inherits(ServerResponse, OutgoingMessage);
 exports.ServerResponse = ServerResponse;
 
-ServerResponse.prototype.sendHeader = function (statusCode, headers) {
-  var reason = STATUS_CODES[statusCode] || "unknown";
-  var status_line = "HTTP/1.1 " + statusCode.toString() + " " + reason + CRLF;
+
+ServerResponse.prototype.writeHeader = function (statusCode) {
+  var reasonPhrase, headers, headerIndex;
+
+  if (typeof arguments[1] == 'string') {
+    reasonPhrase = arguments[1];
+    headerIndex = 2;
+  } else {
+    reasonPhrase = STATUS_CODES[statusCode] || "unknown";
+    headerIndex = 1;
+  }
+
+  if (typeof arguments[headerIndex] == 'object') {
+    headers = arguments[headerIndex];
+  } else {
+    headers = {};
+  }
+
+  var status_line = "HTTP/1.1 " + statusCode.toString() + " "
+                  + reasonPhrase + CRLF;
   this.sendHeaderLines(status_line, headers);
 };
 
+// TODO eventually remove sendHeader()
+ServerResponse.prototype.sendHeader = ServerResponse.prototype.writeHeader;
 
 function ClientRequest (method, url, headers) {
   OutgoingMessage.call(this);
index 7cca37f..246a33d 100644 (file)
@@ -12,4 +12,4 @@ assert.throws(function() {
 });
 assert.throws(function() {
  process._byteLength(5);
-});
\ No newline at end of file
+});
index ba845e8..911cb1c 100644 (file)
@@ -9,7 +9,7 @@ var server_response = "";
 var client_got_eof = false;
 
 var server = http.createServer(function (req, res) {
-  res.sendHeader(200, {"Content-Type": "text/plain"});
+  res.writeHeader(200, {"Content-Type": "text/plain"});
   res.write(body);
   res.close();
 })
index eb7cd9e..bda98c1 100644 (file)
@@ -5,7 +5,7 @@ PORT = 8888;
 var body = "exports.A = function() { return 'A';}";
 var server = http.createServer(function (req, res) {
   puts("got request");
-  res.sendHeader(200, [
+  res.writeHeader(200, [
     ["Content-Length", body.length],
     ["Content-Type", "text/plain"]
   ]);
index 4a2dac3..d94b8a2 100644 (file)
@@ -5,7 +5,7 @@ var PORT = 8888;
 var UTF8_STRING = "Il était tué";
 
 var server = http.createServer(function(req, res) {
-  res.sendHeader(200, {"Content-Type": "text/plain; charset=utf8"});
+  res.writeHeader(200, {"Content-Type": "text/plain; charset=utf8"});
   res.write(UTF8_STRING, 'utf8');
   res.close();
 });
index b055331..b1f1237 100644 (file)
@@ -8,7 +8,7 @@ var body2_s = "22222";
 
 var server = http.createServer(function (req, res) {
   var body = url.parse(req.url).pathname === "/1" ? body1_s : body2_s;
-  res.sendHeader(200, { "Content-Type": "text/plain"
+  res.writeHeader(200, { "Content-Type": "text/plain"
                       , "Content-Length": body.length
                       });
   res.write(body);
index 317457c..dbe36e1 100644 (file)
@@ -18,7 +18,7 @@ var server = http.createServer(function(req, res) {
   req.addListener('end', function () {
     server_req_complete = true;
     puts("request complete from server");
-    res.sendHeader(200, {'Content-Type': 'text/plain'});
+    res.writeHeader(200, {'Content-Type': 'text/plain'});
     res.write('hello\n');
     res.close();
   });
index 123cfe7..5397e9f 100644 (file)
@@ -13,7 +13,7 @@ nrequests_expected = 1;
 var s = http.createServer(function (req, res) {
   puts("req: " + JSON.stringify(url.parse(req.url)));
 
-  res.sendHeader(200, {"Content-Type": "text/plain"});
+  res.writeHeader(200, {"Content-Type": "text/plain"});
   res.write("Hello World");
   res.close();
 
index cfc33d6..d11d2dd 100644 (file)
@@ -7,7 +7,7 @@ var BACKEND_PORT = 8870;
 
 var backend = http.createServer(function (req, res) {
   // debug("backend");
-  res.sendHeader(200, {"content-type": "text/plain"});
+  res.writeHeader(200, {"content-type": "text/plain"});
   res.write("hello world\n");
   res.close();
 });
@@ -19,7 +19,7 @@ var proxy = http.createServer(function (req, res) {
   debug("proxy req headers: " + JSON.stringify(req.headers));
   var proxy_req = proxy_client.request(url.parse(req.url).pathname);
   proxy_req.addListener('response', function(proxy_res) {
-    res.sendHeader(proxy_res.statusCode, proxy_res.headers);
+    res.writeHeader(proxy_res.statusCode, proxy_res.headers);
     proxy_res.addListener("data", function(chunk) {
       res.write(chunk);
     });
index 9caaec0..fe569ce 100644 (file)
@@ -38,7 +38,7 @@ http.createServer(function (req, res) {
   }
 
   setTimeout(function () {
-    res.sendHeader(200, {"Content-Type": "text/plain"});
+    res.writeHeader(200, {"Content-Type": "text/plain"});
     res.write(url.parse(req.url).pathname);
     res.close();
   }, 1);
index da4ae18..ffe042c 100644 (file)
@@ -52,7 +52,7 @@ var http_server=http.createServer(function (req, res) {
   }
 
   req.addListener('end', function () {
-    res.sendHeader(200, {"Content-Type": "text/plain"});
+    res.writeHeader(200, {"Content-Type": "text/plain"});
     res.write("The path was " + url.parse(req.url).pathname);
     res.close();
     responses_sent += 1;
index 947c3df..931fe44 100644 (file)
@@ -24,7 +24,7 @@ var client_got_eof = false;
 var connection_was_closed = false;
 
 var server = http.createServer(function (req, res) {
-  res.sendHeader(200, {"Content-Type": "text/plain"});
+  res.writeHeader(200, {"Content-Type": "text/plain"});
   res.write("hello ");
   res.write("world\n");
   res.close();
index a248e1a..83daac9 100644 (file)
@@ -28,7 +28,7 @@ http.createServer(function (req, res) {
   }
 
   req.addListener('end', function () {
-    res.sendHeader(200, {"Content-Type": "text/plain"});
+    res.writeHeader(200, {"Content-Type": "text/plain"});
     res.write("The path was " + url.parse(req.url).pathname);
     res.close();
     responses_sent += 1;
index af1a1c6..f4d2933 100644 (file)
@@ -6,7 +6,7 @@ PORT = 8891;
 
 body = "hello world\n";
 server = http.createServer(function (req, res) {
-  res.sendHeader(200, { 
+  res.writeHeader(200, { 
     "Content-Length": body.length, 
     "Content-Type": "text/plain", 
   });
index 2b441eb..ba10b60 100644 (file)
@@ -77,12 +77,12 @@ var server = http.createServer(function (req, res) {
     }
     mp.addListener("error", function (er) {
       sys.puts("!! error occurred");
-      res.sendHeader(400, {});
+      res.writeHeader(400, {});
       res.write("bad");
       res.close();
     });
     mp.addListener("complete", function () {
-      res.sendHeader(200, {});
+      res.writeHeader(200, {});
       res.write("ok");
       res.close();
     });
index e49eed7..9817908 100644 (file)
@@ -11,7 +11,7 @@ var server = http.createServer(function(req, res) {
              'return '+JSON.stringify(url.parse(req.url).pathname)+';'+
              '};';
 
-  res.sendHeader(200, {'Content-Type': 'text/javascript'});
+  res.writeHeader(200, {'Content-Type': 'text/javascript'});
   res.write(body);
   res.close();
 });
index bc80eec..8c337ee 100644 (file)
@@ -2,4 +2,4 @@ process.mixin(require('./common'));
 
 var fixture = path.join(__dirname, "fixtures/x.txt");
 
-assert.equal("xyz\n", fs.readFileSync(fixture));
\ No newline at end of file
+assert.equal("xyz\n", fs.readFileSync(fixture));