Skip to content

Commit

Permalink
Access session in request/response interceptors
Browse files Browse the repository at this point in the history
  • Loading branch information
haroldiedema committed Feb 22, 2021
1 parent 253ca13 commit 6abda7f
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 8 deletions.
4 changes: 3 additions & 1 deletion dist/Event/RequestEvent.d.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { Session } from '../Session/Session';
import { ResponseAwareEvent } from './ResponseAwareEvent';
import { Request } from '../Request/Request';
import { IRoute } from '../Router/Router';
export declare class RequestEvent extends ResponseAwareEvent {
readonly request: Request;
readonly route: IRoute;
constructor(request: Request, route: IRoute);
readonly session?: Session;
constructor(request: Request, route: IRoute, session?: Session);
}
4 changes: 3 additions & 1 deletion dist/Event/ResponseEvent.d.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { Request } from '../Request/Request';
import { Response } from '../Response/Response';
import { IRoute } from '../Router/Router';
import { Session } from '../Session/Session';
export declare class ResponseEvent {
readonly request: Request;
readonly route: IRoute;
readonly response: Response;
constructor(request: Request, route: IRoute, response: Response);
readonly session?: Session;
constructor(request: Request, route: IRoute, response: Response, session?: Session);
}
2 changes: 1 addition & 1 deletion dist/index.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@byteshift/harmony",
"version": "1.0.0",
"version": "1.0.1",
"description": "A component based HTTP server micro-framework",
"author": "Harold Iedema <[email protected]>",
"devDependencies": {
Expand Down
3 changes: 2 additions & 1 deletion src/Event/RequestEvent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
*/
'use strict';

import {Session} from '../Session/Session';
import {ResponseAwareEvent} from './ResponseAwareEvent';
import {Request} from '../Request/Request';
import {IRoute} from '../Router/Router';

export class RequestEvent extends ResponseAwareEvent
{
public constructor(public readonly request: Request, public readonly route: IRoute)
public constructor(public readonly request: Request, public readonly route: IRoute, public readonly session?: Session)
{
super();
}
Expand Down
3 changes: 2 additions & 1 deletion src/Event/ResponseEvent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@
import {Request} from '../Request/Request';
import {Response} from '../Response/Response';
import {IRoute} from '../Router/Router';
import {Session} from '../Session/Session';

export class ResponseEvent
{
public constructor(public readonly request: Request, public readonly route: IRoute, public readonly response: Response)
public constructor(public readonly request: Request, public readonly route: IRoute, public readonly response: Response, public readonly session?: Session)
{
}
}
4 changes: 2 additions & 2 deletions src/Harmony.ts
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ export class Harmony
// for incoming requests before the controller method is fired.
// This would allow firewall type of functionality to exist, or
// generic services that serve static content.
const requestEvent = new RequestEvent(request, route);
const requestEvent = new RequestEvent(request, route, this.sessionManager.getSessionByRequest(request));

let stopPropagation = false,
response;
Expand Down Expand Up @@ -327,7 +327,7 @@ export class Harmony
// Fire the 'response' event to allow external services to modify
// the returned response. For example, setting specific cookies or
// other headers.
const responseEvent = new ResponseEvent(request, route, response);
const responseEvent = new ResponseEvent(request, route, response, this.sessionManager.getSessionByRequest(request));
for (let listener of this.responseEventListeners) {
if (false === listener.callback(responseEvent)) {
break;
Expand Down

0 comments on commit 6abda7f

Please sign in to comment.