Skip to content

Commit 2f9a787

Browse files
committed
Removed request info service into plugin
1 parent c7d7675 commit 2f9a787

File tree

11 files changed

+57
-55
lines changed

11 files changed

+57
-55
lines changed

packages/browser/src/BrowserExceptionlessClient.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import {
55

66
import { BrowserGlobalHandlerPlugin } from "./plugins/BrowserGlobalHandlerPlugin.js";
77
import { BrowserLifeCyclePlugin } from "./plugins/BrowserLifeCyclePlugin.js";
8-
import { BrowserWrapFunctions } from "./plugins/BrowserWrapFunctions.js";
98
import { BrowserModuleInfoPlugin } from "./plugins/BrowserModuleInfoPlugin.js";
9+
import { BrowserRequestInfoPlugin } from "./plugins/BrowserRequestInfoPlugin.js";
10+
import { BrowserWrapFunctions } from "./plugins/BrowserWrapFunctions.js";
1011
import { BrowserErrorParser } from "./services/BrowserErrorParser.js";
11-
import { BrowserRequestInfoCollector } from "./services/BrowserRequestInfoCollector.js";
1212
import { BrowserLocalStorage } from "./storage/BrowserLocalStorage.js";
1313
import { BrowserFetchSubmissionClient } from "./submission/BrowserFetchSubmissionClient.js";
1414

@@ -18,13 +18,13 @@ export class BrowserExceptionlessClient extends ExceptionlessClient {
1818
if (configurationOrApiKey) {
1919
config.services.storage = new BrowserLocalStorage();
2020
config.services.errorParser = new BrowserErrorParser();
21-
config.services.requestInfoCollector = new BrowserRequestInfoCollector();
2221
config.services.submissionClient = new BrowserFetchSubmissionClient(config);
2322

2423
config.addPlugin(new BrowserGlobalHandlerPlugin());
2524
config.addPlugin(new BrowserLifeCyclePlugin());
26-
config.addPlugin(new BrowserWrapFunctions());
2725
config.addPlugin(new BrowserModuleInfoPlugin());
26+
config.addPlugin(new BrowserRequestInfoPlugin());
27+
config.addPlugin(new BrowserWrapFunctions());
2828
}
2929

3030
await super.startup(configurationOrApiKey);

packages/browser/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
export { BrowserGlobalHandlerPlugin } from "./plugins/BrowserGlobalHandlerPlugin.js";
22
export { BrowserLifeCyclePlugin } from "./plugins/BrowserLifeCyclePlugin.js";
3-
export { BrowserWrapFunctions } from "./plugins/BrowserWrapFunctions.js";
43
export { BrowserModuleInfoPlugin } from "./plugins/BrowserModuleInfoPlugin.js";
4+
export { BrowserRequestInfoPlugin } from "./plugins/BrowserRequestInfoPlugin.js";
5+
export { BrowserWrapFunctions } from "./plugins/BrowserWrapFunctions.js";
56
export { BrowserErrorParser } from "./services/BrowserErrorParser.js";
6-
export { BrowserRequestInfoCollector } from "./services/BrowserRequestInfoCollector.js";
77
export { BrowserLocalStorage } from "./storage/BrowserLocalStorage.js";
88
export { BrowserFetchSubmissionClient } from "./submission/BrowserFetchSubmissionClient.js";
99
export { BrowserExceptionlessClient } from "./BrowserExceptionlessClient.js";

packages/browser/src/services/BrowserRequestInfoCollector.ts renamed to packages/browser/src/plugins/BrowserRequestInfoPlugin.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,34 @@
11
import {
22
EventPluginContext,
33
getCookies,
4-
IRequestInfoCollector,
4+
IEventPlugin,
5+
isMatch,
6+
KnownEventDataKeys,
57
parseQueryString,
68
RequestInfo,
79
} from "@exceptionless/core";
810

9-
export class BrowserRequestInfoCollector implements IRequestInfoCollector {
10-
public getRequestInfo(context: EventPluginContext): RequestInfo {
11+
export class BrowserRequestInfoPlugin implements IEventPlugin {
12+
public priority: number = 70;
13+
public name: string = "BrowserRequestInfoPlugin";
14+
15+
public run(context: EventPluginContext): Promise<void> {
16+
if (!context.event.data[KnownEventDataKeys.RequestInfo]) {
17+
const requestInfo: RequestInfo = this.getRequestInfo(context);
18+
if (requestInfo) {
19+
if (isMatch(requestInfo.user_agent, context.client.config.userAgentBotPatterns)) {
20+
context.log.info("Cancelling event as the request user agent matches a known bot pattern");
21+
context.cancelled = true;
22+
} else {
23+
context.event.data[KnownEventDataKeys.RequestInfo] = requestInfo;
24+
}
25+
}
26+
}
27+
28+
return Promise.resolve();
29+
}
30+
31+
private getRequestInfo(context: EventPluginContext): RequestInfo {
1132
if (!document || !navigator || !location) {
1233
return null;
1334
}

packages/core/src/configuration/Configuration.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { DefaultEventQueue } from "../queue/DefaultEventQueue.js";
1212
import { IEventQueue } from "../queue/IEventQueue.js";
1313
import { IEnvironmentInfoCollector } from "../services/IEnvironmentInfoCollector.js";
1414
import { IErrorParser } from "../services/IErrorParser.js";
15-
import { IRequestInfoCollector } from "../services/IRequestInfoCollector.js";
1615
import { ISubmissionClient } from "../submission/ISubmissionClient.js";
1716
import { guid } from "../Utils.js";
1817
import { KnownEventDataKeys } from "../models/Event.js";
@@ -63,7 +62,6 @@ export class Configuration {
6362
errorParser?: IErrorParser,
6463
lastReferenceIdManager: ILastReferenceIdManager,
6564
log: ILog,
66-
requestInfoCollector?: IRequestInfoCollector,
6765
submissionClient?: ISubmissionClient,
6866
storage: IStorage,
6967
queue: IEventQueue

packages/core/src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ export { ErrorPlugin } from "./plugins/default/ErrorPlugin.js";
3232
export { EventExclusionPlugin } from "./plugins/default/EventExclusionPlugin.js";
3333
export { HeartbeatPlugin } from "./plugins/default/HeartbeatPlugin.js";
3434
export { ReferenceIdPlugin } from "./plugins/default/ReferenceIdPlugin.js";
35-
export { RequestInfoPlugin } from "./plugins/default/RequestInfoPlugin.js";
3635
export { SubmissionMethodPlugin } from "./plugins/default/SubmissionMethodPlugin.js";
3736
export { ContextData } from "./plugins/ContextData.js";
3837
export { PluginContext } from "./plugins/PluginContext.js";
@@ -45,7 +44,6 @@ export type { IEventQueue } from "./queue/IEventQueue.js";
4544

4645
export type { IEnvironmentInfoCollector } from "./services/IEnvironmentInfoCollector.js";
4746
export type { IErrorParser } from "./services/IErrorParser.js";
48-
export type { IRequestInfoCollector } from "./services/IRequestInfoCollector.js";
4947

5048
export { InMemoryStorage } from "./storage/InMemoryStorage.js";
5149
export type { IStorage } from "./storage/IStorage.js";

packages/core/src/plugins/EventPluginManager.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { DuplicateCheckerPlugin } from "./default/DuplicateCheckerPlugin.js";
44
import { EnvironmentInfoPlugin } from "./default/EnvironmentInfoPlugin.js";
55
import { ErrorPlugin } from "./default/ErrorPlugin.js";
66
import { EventExclusionPlugin } from "./default/EventExclusionPlugin.js";
7-
import { RequestInfoPlugin } from "./default/RequestInfoPlugin.js";
87
import { SubmissionMethodPlugin } from "./default/SubmissionMethodPlugin.js";
98
import { EventPluginContext } from "./EventPluginContext.js";
109
import { PluginContext } from "./PluginContext.js";
@@ -62,7 +61,6 @@ export class EventPluginManager {
6261
config.addPlugin(new ErrorPlugin());
6362
config.addPlugin(new DuplicateCheckerPlugin());
6463
config.addPlugin(new EventExclusionPlugin());
65-
config.addPlugin(new RequestInfoPlugin());
6664
config.addPlugin(new EnvironmentInfoPlugin());
6765
config.addPlugin(new SubmissionMethodPlugin());
6866
}

packages/core/src/plugins/default/RequestInfoPlugin.ts

Lines changed: 0 additions & 28 deletions
This file was deleted.

packages/core/src/services/IRequestInfoCollector.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

packages/node/src/NodeExceptionlessClient.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import {
55

66
import { NodeGlobalHandlerPlugin } from "./plugins/NodeGlobalHandlerPlugin.js";
77
import { NodeLifeCyclePlugin } from "./plugins/NodeLifeCyclePlugin.js";
8+
import { NodeRequestInfoPlugin } from "./plugins/NodeRequestInfoPlugin.js";
89
import { NodeWrapFunctions } from "./plugins/NodeWrapFunctions.js";
910
import { NodeEnvironmentInfoCollector } from "./services/NodeEnvironmentInfoCollector.js";
1011
import { NodeErrorParser } from "./services/NodeErrorParser.js";
11-
import { NodeRequestInfoCollector } from "./services/NodeRequestInfoCollector.js";
1212
import { NodeFileStorage } from "./storage/NodeFileStorage.js";
1313
import { NodeFetchSubmissionClient } from "./submission/NodeFetchSubmissionClient.js";
1414

@@ -20,11 +20,11 @@ export class NodeExceptionlessClient extends ExceptionlessClient {
2020
config.services.storage = new NodeFileStorage();
2121
config.services.environmentInfoCollector = new NodeEnvironmentInfoCollector();
2222
config.services.errorParser = new NodeErrorParser();
23-
config.services.requestInfoCollector = new NodeRequestInfoCollector();
2423
config.services.submissionClient = new NodeFetchSubmissionClient(config);
2524

2625
config.addPlugin(new NodeGlobalHandlerPlugin());
2726
config.addPlugin(new NodeLifeCyclePlugin());
27+
config.addPlugin(new NodeRequestInfoPlugin());
2828
config.addPlugin(new NodeWrapFunctions());
2929
}
3030

packages/node/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
export { NodeGlobalHandlerPlugin } from "./plugins/NodeGlobalHandlerPlugin.js";
22
export { NodeLifeCyclePlugin } from "./plugins/NodeLifeCyclePlugin.js";
3+
export { NodeRequestInfoPlugin } from "./plugins/NodeRequestInfoPlugin.js";
34
export { NodeWrapFunctions } from "./plugins/NodeWrapFunctions.js";
45
export { NodeEnvironmentInfoCollector } from "./services/NodeEnvironmentInfoCollector.js";
56
export { NodeErrorParser } from "./services/NodeErrorParser.js";
6-
export { NodeRequestInfoCollector } from "./services/NodeRequestInfoCollector.js";
77
export { NodeFileStorage } from "./storage/NodeFileStorage.js";
88
export { NodeFetchSubmissionClient } from "./submission/NodeFetchSubmissionClient.js";
99
export { NodeExceptionlessClient } from "./NodeExceptionlessClient.js";

packages/node/src/services/NodeRequestInfoCollector.ts renamed to packages/node/src/plugins/NodeRequestInfoPlugin.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,34 @@
11
import {
22
EventPluginContext,
33
getCookies,
4-
IRequestInfoCollector,
4+
IEventPlugin,
5+
isMatch,
6+
KnownEventDataKeys,
57
RequestInfo,
68
stringify,
79
} from "@exceptionless/core";
810

9-
export class NodeRequestInfoCollector implements IRequestInfoCollector {
10-
public getRequestInfo(context: EventPluginContext): RequestInfo {
11+
export class NodeRequestInfoPlugin implements IEventPlugin {
12+
public priority: number = 70;
13+
public name: string = "NodeRequestInfoPlugin";
14+
15+
public run(context: EventPluginContext): Promise<void> {
16+
if (!context.event.data[KnownEventDataKeys.RequestInfo]) {
17+
const requestInfo: RequestInfo = this.getRequestInfo(context);
18+
if (requestInfo) {
19+
if (isMatch(requestInfo.user_agent, context.client.config.userAgentBotPatterns)) {
20+
context.log.info("Cancelling event as the request user agent matches a known bot pattern");
21+
context.cancelled = true;
22+
} else {
23+
context.event.data[KnownEventDataKeys.RequestInfo] = requestInfo;
24+
}
25+
}
26+
}
27+
28+
return Promise.resolve();
29+
}
30+
31+
private getRequestInfo(context: EventPluginContext): RequestInfo {
1132
// TODO: Move this into a known keys.
1233
const REQUEST_KEY: string = "@request"; // optimization for minifier.
1334
if (!context.contextData[REQUEST_KEY]) {

0 commit comments

Comments
 (0)