1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | import { AuthenticationProvider } from "../IAuthenticationProvider";
|
13 | import { AuthenticationHandler } from "./AuthenticationHandler";
|
14 | import { HTTPMessageHandler } from "./HTTPMessageHandler";
|
15 | import { Middleware } from "./IMiddleware";
|
16 | import { RedirectHandlerOptions } from "./options/RedirectHandlerOptions";
|
17 | import { RetryHandlerOptions } from "./options/RetryHandlerOptions";
|
18 | import { RedirectHandler } from "./RedirectHandler";
|
19 | import { RetryHandler } from "./RetryHandler";
|
20 | import { TelemetryHandler } from "./TelemetryHandler";
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | const isNodeEnvironment = (): boolean => {
|
28 | return typeof process === "object" && typeof require === "function";
|
29 | };
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 | export class MiddlewareFactory {
|
36 | |
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 | public static getDefaultMiddlewareChain(authProvider: AuthenticationProvider): Middleware[] {
|
44 | const middleware: Middleware[] = [];
|
45 | const authenticationHandler = new AuthenticationHandler(authProvider);
|
46 | const retryHandler = new RetryHandler(new RetryHandlerOptions());
|
47 | const telemetryHandler = new TelemetryHandler();
|
48 | const httpMessageHandler = new HTTPMessageHandler();
|
49 |
|
50 | middleware.push(authenticationHandler);
|
51 | middleware.push(retryHandler);
|
52 | if (isNodeEnvironment()) {
|
53 | const redirectHandler = new RedirectHandler(new RedirectHandlerOptions());
|
54 | middleware.push(redirectHandler);
|
55 | }
|
56 | middleware.push(telemetryHandler);
|
57 | middleware.push(httpMessageHandler);
|
58 |
|
59 | return middleware;
|
60 | }
|
61 | }
|