New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

http-stack

Package Overview
Dependencies
Maintainers
0
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

http-stack

A `StreamStack` implementation of the HTTP protocol.

latest
npmnpm
Version
0.1.3
Version published
Weekly downloads
22
-46.34%
Maintainers
0
Weekly downloads
 
Created
Source

node-http-stack

A StreamStack implementation of the HTTP protocol for Node.

This module exposes two concrete StreamStack implementations: HttpRequestStack and HttpResponseStack. Together they can be used to write and/or respond to HTTP requests.

This is an alternative to the built-in core http module. It is designed to be more lenient, as well as being written with the StreamStack ideology.

HTTP Request

In this typical example, we'll establish a net.Stream connection to www.google.com on port 80 and send an HTTP request for /:

var conn = require('net').createConnection(80, 'www.google.com');
conn.on("connect", function() {

  var req = new HttpRequestStack(conn);
  
  // 'response' gets emitted when the HTTP headers have been recieved
  req.on("response", function(res) {
    console.error(res.headers);
  });
  
  // The body of the response will be piped to 'stdout'
  req.pipe(process.stdout);

  // Initiate a GET request for '/' with no request body
  req.get("/", [
    "Host: www.google.com"
  ]);
  req.end();
  
});

Instead, in this example, we'll write() a request to stdout. Don't expect there to be any response, but it's useful to see what's being written:

var request = new HttpRequestStack(process.stdout);

// Write an HTTP post request to stdout
var body = "hello!\n";
request.post("/", [
  "Content-Length: " + body.length,
  "Content-Type: text/plain",
  "Host: example.com"
]);
request.end(body);

--> POST / HTTP/1.1
--> Content-Length: 7
--> Content-Type: text/plain
--> Host: example.com
-->
--> hello!

HTTP Response

You can use HttpResponseStacks to respond to HTTP requests from a net.Server:

require('net').createServer(function(stream) {

  var res = new HttpResponseStack(stream);

  // 'request' is emitted when HTTP headers from a request have been parsed
  res.on("request", function(request) {
    res.writeHead(200, [
      'Content-Type: text/plain'
    ]);
    res.end('Hello World\n');        
  });
  
}).listen(8124, 'localhost');

TODO

  • Chunked encoding/decoding
  • Keep-Alive (needs chunked encoding)
  • Testing...

Keywords

stream

FAQs

Package last updated on 15 Apr 2011

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts