Comparing version 1.0.8 to 1.0.9
@@ -16,6 +16,3 @@ import { Body } from "./Body"; | ||
export declare type HttpHandler = (Request) => Response; | ||
export interface Http4jsRequest extends HttpMessage { | ||
method: string; | ||
} | ||
export interface Response extends HttpMessage { | ||
} |
@@ -1,5 +0,4 @@ | ||
import { Http4jsRequest } from "./HttpMessage"; | ||
import { Body } from "./Body"; | ||
import { Uri } from "./Uri"; | ||
export declare class Request implements Http4jsRequest { | ||
export declare class Request { | ||
uri: Uri; | ||
@@ -10,2 +9,3 @@ method: string; | ||
queries: {}; | ||
pathParams: object; | ||
constructor(method: string, uri: Uri | string, body?: Body, headers?: any); | ||
@@ -12,0 +12,0 @@ private getQueryParams(); |
@@ -11,3 +11,2 @@ import { HttpMessage } from "./HttpMessage"; | ||
status: number; | ||
pathParams: object; | ||
constructor(status?: number, body?: Body); | ||
@@ -14,0 +13,0 @@ getHeader(name: string): string; |
import { Response } from "./Response"; | ||
import { Http4jsRequest, HttpHandler } from "./HttpMessage"; | ||
import { HttpHandler } from "./HttpMessage"; | ||
import { Request } from "./Request"; | ||
import { Http4jsServer } from "./Server"; | ||
@@ -7,3 +8,3 @@ export interface RoutingHttpHandler { | ||
asServer(port: number): Http4jsServer; | ||
match(request: Http4jsRequest): Response; | ||
match(request: Request): Response; | ||
} | ||
@@ -23,5 +24,5 @@ export declare function routes(path: string, method: string, handler: HttpHandler): ResourceRoutingHttpHandler; | ||
asServer(port: number): Http4jsServer; | ||
match(request: Http4jsRequest): Response; | ||
match(request: Request): Response; | ||
private defaultNotFoundHandler; | ||
private createInMemResponse(chunks, method, url, headers); | ||
} |
@@ -84,6 +84,5 @@ "use strict"; | ||
var filtered = this.filters.reduce(function (acc, next) { return next(acc); }, handler); | ||
var response = filtered(request); | ||
if (match.includes("{")) | ||
response.pathParams = Uri_1.Uri.of(match).extract(request.uri.path).matches; | ||
return response; | ||
request.pathParams = Uri_1.Uri.of(match).extract(request.uri.path).matches; | ||
return filtered(request); | ||
} | ||
@@ -90,0 +89,0 @@ else { |
@@ -11,3 +11,5 @@ "use strict"; | ||
var requestBody = "Got it."; | ||
var handler = function (req) { return new Response_1.Response(200, req.body); }; | ||
var handler = function (req) { | ||
return new Response_1.Response(200, req.body); | ||
}; | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", handler); | ||
@@ -18,4 +20,8 @@ var response = resourceRoutingHttpHandler.match(new Request_1.Request("GET", "/test", new Body_1.Body(requestBody))); | ||
it("nests handlers", function () { | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { return new Response_1.Response(200); }) | ||
.withHandler("/nest", "GET", function () { return new Response_1.Response(200, new Body_1.Body("nested")); }); | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { | ||
return new Response_1.Response(200); | ||
}) | ||
.withHandler("/nest", "GET", function () { | ||
return new Response_1.Response(200, new Body_1.Body("nested")); | ||
}); | ||
var response = resourceRoutingHttpHandler.match(new Request_1.Request("GET", "/test/nest")); | ||
@@ -25,5 +31,9 @@ assert_1.equal(response.body.bodyString(), "nested"); | ||
it("add a filter", function () { | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { return new Response_1.Response(200); }) | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { | ||
return new Response_1.Response(200); | ||
}) | ||
.withFilter(function () { | ||
return function () { return new Response_1.Response(200, new Body_1.Body("filtered")); }; | ||
return function () { | ||
return new Response_1.Response(200, new Body_1.Body("filtered")); | ||
}; | ||
}); | ||
@@ -34,3 +44,5 @@ var response = resourceRoutingHttpHandler.match(new Request_1.Request("GET", "/test")); | ||
it("chains filters", function () { | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { return new Response_1.Response(200); }) | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { | ||
return new Response_1.Response(200); | ||
}) | ||
.withFilter(function () { | ||
@@ -51,4 +63,8 @@ return function () { | ||
it("chains filters and handlers", function () { | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { return new Response_1.Response(200); }) | ||
.withHandler("/nest", "GET", function () { return new Response_1.Response(200, new Body_1.Body("nested")); }) | ||
var resourceRoutingHttpHandler = RoutingHttpHandler_1.getTo("/test", function () { | ||
return new Response_1.Response(200); | ||
}) | ||
.withHandler("/nest", "GET", function () { | ||
return new Response_1.Response(200, new Body_1.Body("nested")); | ||
}) | ||
.withFilter(function (handler) { | ||
@@ -70,4 +86,8 @@ return function (req) { | ||
it("recursively defining routes", function () { | ||
var nested = RoutingHttpHandler_1.getTo("/nested", function () { return new Response_1.Response(200).setBodystring("hi there deeply."); }); | ||
var response = RoutingHttpHandler_1.getTo("/", function () { return new Response_1.Response(200); }) | ||
var nested = RoutingHttpHandler_1.getTo("/nested", function () { | ||
return new Response_1.Response(200).setBodystring("hi there deeply."); | ||
}); | ||
var response = RoutingHttpHandler_1.getTo("/", function () { | ||
return new Response_1.Response(200); | ||
}) | ||
.withRoutes(nested) | ||
@@ -78,12 +98,17 @@ .match(new Request_1.Request("GET", "/nested")); | ||
it("extracts path param", function () { | ||
var response = RoutingHttpHandler_1.getTo("/{name}/test", function () { return new Response_1.Response(200); }) | ||
var response = RoutingHttpHandler_1.getTo("/{name}/test", function (req) { | ||
return new Response_1.Response(200, new Body_1.Body(req.pathParams["name"])); | ||
}) | ||
.match(new Request_1.Request("GET", "/tom/test")); | ||
assert_1.equal(response.pathParams["name"], "tom"); | ||
assert_1.equal(response.bodyString(), "tom"); | ||
}); | ||
it("extracts multiple path params", function () { | ||
var response = RoutingHttpHandler_1.getTo("/{name}/test/{age}/bob/{personality}/fred", function () { return new Response_1.Response(200); }) | ||
var response = RoutingHttpHandler_1.getTo("/{name}/test/{age}/bob/{personality}/fred", function (req) { | ||
return new Response_1.Response(200, new Body_1.Body(req.pathParams["name"] + ", " + req.pathParams["age"] + ", " + req.pathParams["personality"])); | ||
}) | ||
.match(new Request_1.Request("GET", "/tom/test/26/bob/odd/fred")); | ||
assert_1.equal(response.pathParams["name"], "tom"); | ||
assert_1.equal(response.pathParams["age"], "26"); | ||
assert_1.equal(response.pathParams["personality"], "odd"); | ||
var pathParams = response.bodyString().split(", "); | ||
assert_1.equal(pathParams[0], "tom"); | ||
assert_1.equal(pathParams[1], "26"); | ||
assert_1.equal(pathParams[2], "odd"); | ||
}); | ||
@@ -90,0 +115,0 @@ it("extracts query params", function () { |
{ | ||
"name": "http4js", | ||
"version": "1.0.8", | ||
"version": "1.0.9", | ||
"description": "A lightweight HTTP toolkit", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
153128
1010