UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge

127 lines (113 loc) 3.21 kB
import * as Router from '../..'; import { Http2ServerRequest, Http2ServerResponse } from 'http2'; import { IncomingMessage, ServerResponse } from 'http'; let http1Req!: IncomingMessage; let http1Res!: ServerResponse; let http2Req!: Http2ServerRequest; let http2Res!: Http2ServerResponse; // ==== HTTP1 ==== const http1Router = Router({ defaultRoute(req, res) { const request: IncomingMessage = req; const response: ServerResponse = res; response.end(request.url); }, onBadUrl(path, req, res) { const request: IncomingMessage = req; const response: ServerResponse = res; response.end(request.url + path); } }); http1Router.on('GET', '/test', (req, res) => res.end(req.url)); http1Router.on('GET', '/test', { version: '2.0.0' }, (req, res) => res.end(req.url) ); http1Router.on('GET', '/test', (req, res) => res.end(req.url), { foo: 'bar' }); http1Router.on( ['POST', 'PUT'], '/test', { version: '1.0.0' }, (req, res) => res.end(req.url), { foo: 'bar' } ); http1Router.delete( '/item/:id', (req, res, params, store) => { const id: string | undefined = params.id; res.end(` url: ${req.url || '-'}, id: ${id || '-'}, foo: ${store.foo} `); }, { foo: 'bar' } ); (function http1RouterFind() { const result = http1Router.find('GET', '/test', '1.0.0'); if (!result) { return; } const { handler, params, store } = result; handler(http1Req, http1Res, params, store); })(); http1Router.lookup(http1Req, http1Res); http1Router.lookup(http1Req, http1Res, {foo: 'bar'}); http1Router.off('GET', '/path'); http1Router.off(['GET', 'CHECKOUT'], '/path'); http1Router.prettyPrint(); http1Router.reset(); // ==== HTTP2 ==== const http2Router = Router<Router.HTTPVersion.V2>({ allowUnsafeRegex: true, caseSensitive: false, ignoreTrailingSlash: true, maxParamLength: 200, defaultRoute(req, res) { const request: Http2ServerRequest = req; const response: Http2ServerResponse = res; response.end(request.url); }, onBadUrl(path, req, res) { const request: Http2ServerRequest = req; const response: Http2ServerResponse = res; response.end(request.url + path); } }); http2Router.on('GET', '/test', (req, res) => res.end(req.url)); http2Router.on('GET', '/test', { version: '2.0.0' }, (req, res) => res.end(req.url) ); http2Router.on('GET', '/test', (req, res) => res.end(req.url), { foo: 'bar' }); http2Router.on( ['POST', 'PUT'], '/test', { version: '1.0.0' }, (req, res) => res.end(req.url), { foo: 'bar' } ); http2Router.delete( '/item/:id', (req, res, params, store) => { const id: string | undefined = params.id; res.end(` url: ${req.url || '-'}, id: ${id || '-'}, foo: ${store.foo} `); }, { foo: 'bar' } ); (function http2RouterFind() { const result = http2Router.find('GET', '/test', '1.0.0'); if (!result) { return; } const { handler, params, store } = result; handler(http2Req, http2Res, params, store); })(); http2Router.lookup(http2Req, http2Res); http2Router.lookup(http2Req, http2Res, {foo: 'bar'}); http2Router.off('GET', '/path'); http2Router.off(['GET', 'CHECKOUT'], '/path'); http2Router.prettyPrint(); http2Router.reset();