Skip to content

Commit 1f3689b

Browse files
author
hirsch88
committed
add event listener to the ioc
1 parent 05e94fe commit 1f3689b

File tree

15 files changed

+116
-270
lines changed

15 files changed

+116
-270
lines changed

src/api/controllers/UserController.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { injectable, inject, named } from 'inversify';
1+
import { inject, named } from 'inversify';
22
import { Controller, Get, Post, Put, Delete, RequestParam, RequestBody, Response, Request } from 'inversify-express-utils';
33
import { my } from 'my-express';
44
import { UserService } from '../services/UserService';
@@ -17,7 +17,6 @@ const populateUser = ioc.Container.getNamed<PopulateUserMiddleware>(Types.Middle
1717
* UserController is in charge of the user resource and should
1818
* provide all crud actions.
1919
*/
20-
@injectable()
2120
@Controller('/user', authenticate.use)
2221
export class UserController {
2322

src/api/controllers/auth/AuthController.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import { injectable } from 'inversify';
21

32

43
export namespace auth {
54

6-
@injectable()
75
export class AuthController {
86

97
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { inject, named } from 'inversify';
2+
import { Types } from '../../constants/Types';
3+
import { Core } from '../../constants/Targets';
4+
import { events } from '../../core/api/events';
5+
import { Log } from '../../core/log/';
6+
7+
8+
export class UserAuthenticatedListener {
9+
10+
static Event = Symbol('UserAuthenticatedListener');
11+
12+
public log: Log;
13+
14+
constructor(
15+
@inject(Types.Core) @named(Core.Log) Logger: typeof Log
16+
) {
17+
this.log = new Logger('api:listeners:UserAuthenticatedListener');
18+
}
19+
20+
public async run(user: any): Promise<void> {
21+
this.log.info('Receive event UserAuthenticatedListener', user);
22+
}
23+
24+
}

src/api/listeners/UserCreatedListener.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { inject, named } from 'inversify';
2+
import { Types } from '../../constants/Types';
3+
import { Core } from '../../constants/Targets';
14
import { events } from '../../core/api/events';
25
import { Log } from '../../core/log/';
36

@@ -8,8 +11,17 @@ export class UserCreatedListener {
811

912
static Event = Symbol('UserCreated');
1013

14+
public log: Log;
15+
16+
constructor(
17+
@inject(Types.Core) @named(Core.Log) Logger: typeof Log
18+
) {
19+
this.log = new Logger('api:listeners:UserCreatedListener');
20+
}
21+
1122
public async run(user: any): Promise<void> {
1223
log.info('Receive event UserCreated', user);
1324
}
1425

1526
}
27+

src/api/middlewares/AuthenticateMiddleware.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import { injectable, inject, named } from 'inversify';
1+
import { inject, named } from 'inversify';
22
import * as Request from 'request';
33
import { my } from 'my-express';
44
import { Log } from '../../core/log';
55
import { Types } from '../../constants/Types';
66
import { Lib, Core } from '../../constants/Targets';
7+
import { events } from '../../core/api/events';
8+
import { UserAuthenticatedListener } from '../listeners/UserAuthenticatedListener';
79

810

9-
@injectable()
1011
export class AuthenticateMiddleware {
1112

1213
public log: Log;
@@ -20,8 +21,6 @@ export class AuthenticateMiddleware {
2021

2122

2223
public use = (req: my.Request, res: my.Response, next: my.NextFunction): void => {
23-
// console.log(this.request());
24-
// return next();
2524
const token = this.getToken(req);
2625

2726
if (token === null) {
@@ -43,6 +42,7 @@ export class AuthenticateMiddleware {
4342
if (!error && response.statusCode === 200) {
4443
req.tokeninfo = JSON.parse(body);
4544
this.log.info(`Retrieved user ${req.tokeninfo.email}`);
45+
events.emit(UserAuthenticatedListener.Event, req.tokeninfo);
4646
return next();
4747
}
4848

src/api/middlewares/PopulateUserMiddleware.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { injectable, inject, named } from 'inversify';
1+
import { inject, named } from 'inversify';
22
import * as Request from 'request';
33
import { my } from 'my-express';
44
import { Log } from '../../core/log';
@@ -7,7 +7,6 @@ import { Types } from '../../constants/Types';
77
import { Service, Core } from '../../constants/Targets';
88

99

10-
@injectable()
1110
export class PopulateUserMiddleware {
1211

1312
public log: Log;

src/api/models/User.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { injectable } from 'inversify';
21
import { Bookshelf } from '../../config/Database';
32
import { Tables } from '../../constants/Tables';
43

@@ -9,7 +8,6 @@ import { Tables } from '../../constants/Tables';
98
* @class User
109
* @extends {Bookshelf.Model<User>}
1110
*/
12-
@injectable()
1311
export class User extends Bookshelf.Model<User> {
1412

1513
public static async fetchById(id: number): Promise<User> {

src/api/repositories/UserRepository.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as Bookshelf from 'bookshelf';
2-
import { injectable, inject, named } from 'inversify';
2+
import { inject, named } from 'inversify';
33
import { Types } from '../../constants/Types';
44
import { Model } from '../../constants/Targets';
55
import { User } from '../models/User';
@@ -12,7 +12,6 @@ import { NotFoundException } from '../exceptions/NotFoundException';
1212
* @export
1313
* @class UserRepository
1414
*/
15-
@injectable()
1615
export class UserRepository {
1716

1817
constructor(

src/api/services/UserService.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as Bookshelf from 'bookshelf';
2-
import { injectable, inject, named } from 'inversify';
2+
import { inject, named } from 'inversify';
33
import { Core, Repository } from '../../constants/Targets';
44
import { Types } from '../../constants/Types';
55
import { Log } from '../../core/log';
@@ -23,7 +23,6 @@ import { UserCreatedListener } from '../listeners/UserCreatedListener';
2323
* @export
2424
* @class UserService
2525
*/
26-
@injectable()
2726
export class UserService {
2827

2928
public log: Log;

src/constants/Targets.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,6 @@ export const Core = {
1515
Log: 'Log'
1616
};
1717

18-
export const Controller = {
19-
UserController: 'UserController',
20-
auth: {
21-
AuthController: 'auth.AuthController'
22-
}
23-
};
24-
25-
export const Service = {
26-
UserService: 'UserService'
27-
};
28-
2918
export const Model = {
3019
User: 'User'
3120
};
@@ -34,7 +23,23 @@ export const Repository = {
3423
UserRepository: 'UserRepository'
3524
};
3625

26+
export const Service = {
27+
UserService: 'UserService'
28+
};
29+
3730
export const Middleware = {
3831
AuthenticateMiddleware: 'AuthenticateMiddleware',
3932
PopulateUserMiddleware: 'PopulateUserMiddleware'
4033
};
34+
35+
export const Listener = {
36+
UserAuthenticatedListener: 'UserAuthenticatedListener',
37+
UserCreatedListener: 'UserCreatedListener'
38+
};
39+
40+
export const Controller = {
41+
UserController: 'UserController',
42+
auth: {
43+
AuthController: 'auth.AuthController'
44+
}
45+
};

0 commit comments

Comments
 (0)