Skip to content

Commit 3b95f44

Browse files
authored
Merge pull request #259 from microsoftgraph/removeSetMiddleware
Removing the set and get middleware chain method
2 parents f37b583 + aa17391 commit 3b95f44

File tree

11 files changed

+10
-181
lines changed

11 files changed

+10
-181
lines changed

docs/ChaosHandlerSamples.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44

55
> Uses [Custom Middleware Chain](https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/CustomMiddlewareChain.md), it's not included in default middleware chain
66
7-
### Modes in Testing Handler
7+
### Modes in Chaos Handler
88

99
- Manual mode - Setting the Response code manually. - Global/Client Level - Provide a map declared manually containing response code for the requests. - Request Level - Providing response code per request. This would be overriding the Global level response code (if any).
1010
- Random mode - We get a random Response code from a set of response code defined for each method.
1111

12+
**A request Passes through to the Graph, if there is no entry for the request**
13+
14+
**Note - Always add ChaosHandler before HttpMessageHandler in the midllewareChain**
15+
1216
### Samples
1317

1418
```js
@@ -25,16 +29,12 @@ const client = MicrosoftGraph.Client.init({
2529
},
2630
});
2731

28-
// Declaring the Map, containing response codes for the urls
29-
const manualMap = new Map([["/me/messages/.*", new Map([["GET", 429], ["PATCH", 429]])], ["/me", new Map([["POST", 502]])]]);
32+
/*
33+
Create a custom MiddlewareChain passing information in this way
3034
31-
// Declaring the chaosHandler and passing the map (if using map, we have to put default strategy as MANUAL)
35+
const manualMap = new Map([["/me/messages/.*", new Map([["GET", 429], ["PATCH", 429]])], ["/me", new Map([["POST", 502]])]]);
3236
const chaosHandler = new MicrosoftGraph.ChaosHandler(new MicrosoftGraph.ChaosHandlerOptions(MicrosoftGraph.ChaosStrategy.MANUAL), manualMap);
33-
34-
// Modifying the default middleware chain to add chaos handler, just before httpMessageHandler, otherwise there can be a problem
35-
let arr = client.getMiddlewareChain();
36-
arr.splice(arr.length - 1, 0, chaosHandler);
37-
client.setMiddlewareChain(arr);
37+
*/
3838

3939
// This request would use the Map (Manual mode)
4040
const mail = {

docs/CustomMiddlewareChain.md

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -143,41 +143,5 @@ export class MyLoggingHandler implements Middleware {
143143
}
144144
}
145145
```
146-
Refer [MiddlewareOptions](../src/middleware/options/IMiddlewareOptions.ts) interface to know its structure.
147-
148-
### Modifying the Current Middleware Chain
149146

150-
```js
151-
// initialising client
152-
const client = MicrosoftGraph.Client.init({
153-
defaultVersion: "v1.0",
154-
debugLogging: true,
155-
authProvider: (done) => {
156-
done(null, secrets.accessToken);
157-
},
158-
});
159-
160-
// getting the current middleware chain (in this case, it's the default one)
161-
let arr = client.getMiddlewareChain();
162-
163-
// Initialising the Middleware chain that we created
164-
const dummyRandomHandler = new dummyRandomHandler();
165-
166-
// adding the dummy handler in the array of middlewares at 3rd position
167-
arr.splice(2, 0, dummyRandomHandler);
168-
169-
// setting the new middleware chain
170-
client.setMiddlewareChain(arr);
171-
172-
// calling the api
173-
client
174-
.api("/me")
175-
.select("displayName")
176-
.get()
177-
.then((res) => {
178-
console.log(res);
179-
})
180-
.catch((err) => {
181-
console.log(err);
182-
});
183-
```
147+
Refer [MiddlewareOptions](../src/middleware/options/IMiddlewareOptions.ts) interface to know its structure.

spec/core/HTTPClient.ts

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,9 @@
77

88
import { assert } from "chai";
99

10-
import { Client } from "../../src/Client";
1110
import { HTTPClient } from "../../src/HTTPClient";
1211
import { Context } from "../../src/IContext";
1312
import { FetchOptions } from "../../src/IFetchOptions";
14-
import { RedirectHandlerOptions } from "../../src/middleware/options/RedirectHandlerOptions";
15-
import { RedirectHandler } from "../../src/middleware/RedirectHandler";
16-
import { TelemetryHandler } from "../../src/middleware/TelemetryHandler";
1713
import { DummyHTTPMessageHandler } from "../DummyHTTPMessageHandler";
1814

1915
describe("HTTPClient.ts", () => {
@@ -72,39 +68,4 @@ describe("HTTPClient.ts", () => {
7268
}
7369
});
7470
});
75-
76-
describe("getMiddlewareArray", () => {
77-
it("Should work fine for a single middleware in the chain, which does have a getNext method", () => {
78-
const telemetryHandler = new TelemetryHandler();
79-
const tempHttpClient: HTTPClient = new HTTPClient(telemetryHandler);
80-
assert.equal(tempHttpClient.getMiddlewareArray().length, 1);
81-
});
82-
83-
it("Should work fine for a single middleware in the chain, which doesn't have a getNext method", () => {
84-
const tempHttpClient: HTTPClient = new HTTPClient(httpMessageHandler);
85-
assert.equal(tempHttpClient.getMiddlewareArray().length, 1);
86-
});
87-
88-
it("Should work fine for a chain containing many middlewares", () => {
89-
const telemetryHandler = new TelemetryHandler();
90-
const redirectHandler = new RedirectHandler(new RedirectHandlerOptions());
91-
redirectHandler.setNext(telemetryHandler);
92-
telemetryHandler.setNext(httpMessageHandler);
93-
const tempHttpClient: HTTPClient = new HTTPClient(redirectHandler);
94-
assert.equal(tempHttpClient.getMiddlewareArray().length, 3);
95-
});
96-
});
97-
98-
describe("setMiddlewareArray", () => {
99-
it("Should make a chain out of the provided array of middlewares", () => {
100-
const telemetryHandler = new TelemetryHandler();
101-
const redirectHandler = new RedirectHandler(new RedirectHandlerOptions());
102-
redirectHandler.setNext(httpMessageHandler);
103-
const tempHttpClient: HTTPClient = new HTTPClient(redirectHandler);
104-
const middlewareArray = tempHttpClient.getMiddlewareArray();
105-
middlewareArray.splice(1, 0, telemetryHandler);
106-
tempHttpClient.setMiddlewareArray(middlewareArray);
107-
assert.equal(tempHttpClient.getMiddlewareArray().length, 3);
108-
});
109-
});
11071
});

src/Client.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { HTTPClient } from "./HTTPClient";
1616
import { HTTPClientFactory } from "./HTTPClientFactory";
1717
import { ClientOptions } from "./IClientOptions";
1818
import { Options } from "./IOptions";
19-
import { Middleware } from "./middleware/IMiddleware";
2019
import { validatePolyFilling } from "./ValidatePolyFilling";
2120

2221
export class Client {
@@ -104,24 +103,6 @@ export class Client {
104103
this.httpClient = httpClient;
105104
}
106105

107-
/**
108-
* @public
109-
* function to get the array of middlewares in use right now
110-
* @returns An array of middlewares
111-
*/
112-
public getMiddlewareChain() {
113-
return this.httpClient.getMiddlewareArray();
114-
}
115-
116-
/**
117-
* @public
118-
* function to set the middleware chain
119-
* @param {Middleware[]} middlewareArray - An array of middlewares
120-
*/
121-
public setMiddlewareChain(middlewareArray: Middleware[]) {
122-
return this.httpClient.setMiddlewareArray(middlewareArray);
123-
}
124-
125106
/**
126107
* @public
127108
* Entry point to make requests

src/HTTPClient.ts

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -33,37 +33,6 @@ export class HTTPClient {
3333
this.middleware = middleware;
3434
}
3535

36-
/**
37-
* @public
38-
* To get an array of Middleware, used in middleware chain
39-
* @returns An array of middlewares
40-
*/
41-
public getMiddlewareArray(): Middleware[] {
42-
const middlewareArray: Middleware[] = [];
43-
let currentMiddleware = this.middleware;
44-
while (currentMiddleware) {
45-
middlewareArray.push(currentMiddleware);
46-
if (typeof currentMiddleware.getNext !== "undefined") {
47-
currentMiddleware = currentMiddleware.getNext();
48-
} else {
49-
break;
50-
}
51-
}
52-
return middlewareArray;
53-
}
54-
55-
/**
56-
* @public
57-
* To set the middleware chain
58-
* @param {Middleware[]} middlewareArray - The array containing the middlewares
59-
*/
60-
public setMiddlewareArray(middlewareArray: Middleware[]) {
61-
for (let num = 0; num < middlewareArray.length - 1; num += 1) {
62-
middlewareArray[num].setNext(middlewareArray[num + 1]);
63-
}
64-
this.middleware = middlewareArray[0];
65-
}
66-
6736
/**
6837
* @public
6938
* @async

src/middleware/AuthenticationHandler.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,4 @@ export class AuthenticationHandler implements Middleware {
9494
public setNext(next: Middleware): void {
9595
this.nextMiddleware = next;
9696
}
97-
98-
/**
99-
* @public
100-
* To get the next middleware in the chain
101-
* @returns next Middleware instance
102-
*/
103-
public getNext(): Middleware {
104-
return this.nextMiddleware;
105-
}
10697
}

src/middleware/ChaosHandler.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -279,13 +279,4 @@ export class ChaosHandler implements Middleware {
279279
public setNext(next: Middleware): void {
280280
this.nextMiddleware = next;
281281
}
282-
283-
/**
284-
* @public
285-
* To get the next middleware in the chain
286-
* @returns next Middleware instance
287-
*/
288-
public getNext(): Middleware {
289-
return this.nextMiddleware;
290-
}
291282
}

src/middleware/IMiddleware.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,4 @@ import { Context } from "../IContext";
1515
export interface Middleware {
1616
execute: (context: Context) => Promise<void>;
1717
setNext?: (middleware: Middleware) => void;
18-
getNext?: () => Middleware;
1918
}

src/middleware/RedirectHandler.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,4 @@ export class RedirectHandler implements Middleware {
243243
public setNext(next: Middleware): void {
244244
this.nextMiddleware = next;
245245
}
246-
247-
/**
248-
* @public
249-
* To get the next middleware in the chain
250-
* @returns next Middleware instance
251-
*/
252-
public getNext(): Middleware {
253-
return this.nextMiddleware;
254-
}
255246
}

src/middleware/RetryHandler.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,4 @@ export class RetryHandler implements Middleware {
216216
public setNext(next: Middleware): void {
217217
this.nextMiddleware = next;
218218
}
219-
220-
/**
221-
* @public
222-
* To get the next middleware in the chain
223-
* @returns next Middleware instance
224-
*/
225-
public getNext(): Middleware {
226-
return this.nextMiddleware;
227-
}
228219
}

0 commit comments

Comments
 (0)