Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit 3214ea4

Browse files
committed
chore: refactor so response.url set in emitResponse
1 parent e69b39b commit 3214ea4

8 files changed

+32
-35
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ It is `true` by default which means they do not return the entity (`status=204`)
4444

4545
* `response.url` is set to `request.url` when this service itself creates the response.
4646

47+
* A few new methods (e.g., `emitResponse`) to assist in HTTP method interceptors.
48+
4749
<hr>
4850

4951
<a name="0.1.17"></a>

bundles/in-memory-web-api.umd.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -473,9 +473,9 @@ function createErrorResponse(req, status, message) {
473473
/**
474474
* Create an Observable response from response options.
475475
*/
476-
function createObservableResponse(resOptions) {
476+
function createObservableResponse(req, resOptions) {
477477
return new rxjs_Observable.Observable(function (responseObserver) {
478-
emitResponse(responseObserver, resOptions);
478+
emitResponse(responseObserver, req, resOptions);
479479
return function () { }; // unsubscribe function
480480
});
481481
}
@@ -484,7 +484,8 @@ function createObservableResponse(resOptions) {
484484
* and tell "ResponseObserver" (an `Observer<Response>`) to emit it.
485485
* The observer's observable is either completed or in error state after call.
486486
*/
487-
function emitResponse(responseObserver, resOptions) {
487+
function emitResponse(responseObserver, req, resOptions) {
488+
resOptions.url = resOptions.url || req.url; // make sure url is set
488489
resOptions = setStatusText(resOptions);
489490
var res = new _angular_http.Response(resOptions);
490491
if (isSuccess(res.status)) {
@@ -617,8 +618,7 @@ var InMemoryBackendService = (function () {
617618
catch (error) {
618619
var err = error.message || error;
619620
var options = createErrorResponse(req, STATUS.INTERNAL_SERVER_ERROR, "" + err);
620-
options.url = options.url || req.url; // make sure url is set
621-
response = this.addDelay(createObservableResponse(options));
621+
response = this.addDelay(createObservableResponse(req, options));
622622
}
623623
return {
624624
readyState: _angular_http.ReadyState.Done,
@@ -697,7 +697,7 @@ var InMemoryBackendService = (function () {
697697
else {
698698
// can't handle this request
699699
resOptions = createErrorResponse(req, STATUS.NOT_FOUND, "Collection '" + collectionName + "' not found");
700-
return this.addDelay(createObservableResponse(resOptions));
700+
return this.addDelay(createObservableResponse(req, resOptions));
701701
}
702702
};
703703
/**
@@ -764,8 +764,7 @@ var InMemoryBackendService = (function () {
764764
if (_this.inMemDbService['responseInterceptor']) {
765765
resOptions = _this.inMemDbService['responseInterceptor'](resOptions, reqInfo);
766766
}
767-
resOptions.url = resOptions.url || reqInfo.req.url; // make sure url is set
768-
emitResponse(responseObserver, resOptions);
767+
emitResponse(responseObserver, reqInfo.req, resOptions);
769768
return function () { }; // unsubscribe function
770769
});
771770
};
@@ -811,8 +810,7 @@ var InMemoryBackendService = (function () {
811810
default:
812811
resOptions = createErrorResponse(reqInfo.req, STATUS.INTERNAL_SERVER_ERROR, "Unknown command \"" + command + "\"");
813812
}
814-
resOptions.url = resOptions.url || reqInfo.req.url; // make sure url is set
815-
return createObservableResponse(resOptions);
813+
return createObservableResponse(reqInfo.req, resOptions);
816814
};
817815
InMemoryBackendService.prototype.delete = function (_a) {
818816
var id = _a.id, collection = _a.collection, collectionName = _a.collectionName, headers = _a.headers, req = _a.req;

examples/hero-data.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export class HeroDataOverrideService extends HeroDataService {
9797
`'${collectionName}' with id='${id}' not found`);
9898
}
9999

100-
emitResponse(responseObserver, resOptions);
100+
emitResponse(responseObserver, req, resOptions);
101101
return () => { }; // unsubscribe function
102102
});
103103
}

in-memory-backend.service.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ export declare function createErrorResponse(req: Request, status: number, messag
1010
/**
1111
* Create an Observable response from response options.
1212
*/
13-
export declare function createObservableResponse(resOptions: ResponseOptions): Observable<Response>;
13+
export declare function createObservableResponse(req: Request, resOptions: ResponseOptions): Observable<Response>;
1414
/**
1515
* Create a response from response options
1616
* and tell "ResponseObserver" (an `Observer<Response>`) to emit it.
1717
* The observer's observable is either completed or in error state after call.
1818
*/
19-
export declare function emitResponse(responseObserver: Observer<Response>, resOptions: ResponseOptions): void;
19+
export declare function emitResponse(responseObserver: Observer<Response>, req: Request, resOptions: ResponseOptions): void;
2020
/**
2121
* Interface for object passed to an HTTP method override method
2222
*/

in-memory-backend.service.js

Lines changed: 8 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

in-memory-backend.service.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"__symbolic":"module","version":1,"metadata":{"createErrorResponse":{"__symbolic":"function","parameters":["req","status","message"],"value":{"__symbolic":"error","message":"Expression form not supported","line":20,"character":21}},"createObservableResponse":{"__symbolic":"function","parameters":["resOptions"],"value":{"__symbolic":"error","message":"Function call not supported","line":31,"character":36}},"removeTrailingSlash":{"__symbolic":"function","parameters":["path"],"value":{"__symbolic":"error","message":"Expression form not supported","line":136,"character":22}},"InMemoryBackendConfig":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":150,"character":22,"context":{"typeName":"InMemoryBackendConfigArgs"}}]}]}},"isSuccess":{"__symbolic":"function","parameters":["status"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":">=","left":{"__symbolic":"reference","name":"status"},"right":200},"right":{"__symbolic":"binop","operator":"<","left":{"__symbolic":"reference","name":"status"},"right":300}}},"InMemoryBackendService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject"},"arguments":[{"__symbolic":"reference","name":"InMemoryBackendConfig"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional"}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector"},{"__symbolic":"reference","name":"InMemoryDbService"},{"__symbolic":"error","message":"Could not resolve type","line":264,"character":55,"context":{"typeName":"InMemoryBackendConfigArgs"}}]}],"createConnection":[{"__symbolic":"method"}],"handleRequest":[{"__symbolic":"method"}],"addDelay":[{"__symbolic":"method"}],"applyQuery":[{"__symbolic":"method"}],"clone":[{"__symbolic":"method"}],"collectionHandler":[{"__symbolic":"method"}],"commands":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"findById":[{"__symbolic":"method"}],"genId":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"getLocation":[{"__symbolic":"method"}],"indexOf":[{"__symbolic":"method"}],"parseId":[{"__symbolic":"method"}],"parseUrl":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"resetDb":[{"__symbolic":"method"}],"setPassThruBackend":[{"__symbolic":"method"}]}}}}
1+
{"__symbolic":"module","version":1,"metadata":{"createErrorResponse":{"__symbolic":"function","parameters":["req","status","message"],"value":{"__symbolic":"error","message":"Expression form not supported","line":20,"character":21}},"createObservableResponse":{"__symbolic":"function","parameters":["req","resOptions"],"value":{"__symbolic":"error","message":"Function call not supported","line":31,"character":36}},"removeTrailingSlash":{"__symbolic":"function","parameters":["path"],"value":{"__symbolic":"error","message":"Expression form not supported","line":137,"character":22}},"InMemoryBackendConfig":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":151,"character":22,"context":{"typeName":"InMemoryBackendConfigArgs"}}]}]}},"isSuccess":{"__symbolic":"function","parameters":["status"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":">=","left":{"__symbolic":"reference","name":"status"},"right":200},"right":{"__symbolic":"binop","operator":"<","left":{"__symbolic":"reference","name":"status"},"right":300}}},"InMemoryBackendService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject"},"arguments":[{"__symbolic":"reference","name":"InMemoryBackendConfig"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional"}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector"},{"__symbolic":"reference","name":"InMemoryDbService"},{"__symbolic":"error","message":"Could not resolve type","line":265,"character":55,"context":{"typeName":"InMemoryBackendConfigArgs"}}]}],"createConnection":[{"__symbolic":"method"}],"handleRequest":[{"__symbolic":"method"}],"addDelay":[{"__symbolic":"method"}],"applyQuery":[{"__symbolic":"method"}],"clone":[{"__symbolic":"method"}],"collectionHandler":[{"__symbolic":"method"}],"commands":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"findById":[{"__symbolic":"method"}],"genId":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"getLocation":[{"__symbolic":"method"}],"indexOf":[{"__symbolic":"method"}],"parseId":[{"__symbolic":"method"}],"parseUrl":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"resetDb":[{"__symbolic":"method"}],"setPassThruBackend":[{"__symbolic":"method"}]}}}}

src/in-memory-backend.service.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ export function createErrorResponse(req: Request, status: number, message: strin
2828
/**
2929
* Create an Observable response from response options.
3030
*/
31-
export function createObservableResponse(resOptions: ResponseOptions): Observable<Response> {
31+
export function createObservableResponse(req: Request, resOptions: ResponseOptions): Observable<Response> {
3232
return new Observable<Response>((responseObserver: Observer<Response>) => {
33-
emitResponse(responseObserver, resOptions);
33+
emitResponse(responseObserver, req, resOptions);
3434
return () => { }; // unsubscribe function
3535
});
3636
}
@@ -40,7 +40,8 @@ export function createObservableResponse(resOptions: ResponseOptions): Observabl
4040
* and tell "ResponseObserver" (an `Observer<Response>`) to emit it.
4141
* The observer's observable is either completed or in error state after call.
4242
*/
43-
export function emitResponse(responseObserver: Observer<Response>, resOptions: ResponseOptions) {
43+
export function emitResponse(responseObserver: Observer<Response>, req: Request, resOptions: ResponseOptions) {
44+
resOptions.url = resOptions.url || req.url; // make sure url is set
4445
resOptions = setStatusText(resOptions);
4546

4647
const res = new Response(resOptions);
@@ -280,8 +281,7 @@ export class InMemoryBackendService {
280281
} catch (error) {
281282
const err = error.message || error;
282283
const options = createErrorResponse(req, STATUS.INTERNAL_SERVER_ERROR, `${err}`);
283-
options.url = options.url || req.url; // make sure url is set
284-
response = this.addDelay(createObservableResponse(options));
284+
response = this.addDelay(createObservableResponse(req, options));
285285
}
286286
return {
287287
readyState: ReadyState.Done,
@@ -366,7 +366,7 @@ export class InMemoryBackendService {
366366
} else {
367367
// can't handle this request
368368
resOptions = createErrorResponse(req, STATUS.NOT_FOUND, `Collection '${collectionName}' not found`);
369-
return this.addDelay(createObservableResponse(resOptions));
369+
return this.addDelay(createObservableResponse(req, resOptions));
370370
}
371371
}
372372

@@ -438,8 +438,7 @@ export class InMemoryBackendService {
438438
resOptions = (this.inMemDbService['responseInterceptor'] as ResponseInterceptor)(resOptions, reqInfo);
439439
}
440440

441-
resOptions.url = resOptions.url || reqInfo.req.url; // make sure url is set
442-
emitResponse(responseObserver, resOptions);
441+
emitResponse(responseObserver, reqInfo.req, resOptions);
443442
return () => { }; // unsubscribe function
444443
});
445444
}
@@ -486,8 +485,8 @@ export class InMemoryBackendService {
486485
default:
487486
resOptions = createErrorResponse(reqInfo.req, STATUS.INTERNAL_SERVER_ERROR, `Unknown command "${command}"`);
488487
}
489-
resOptions.url = resOptions.url || reqInfo.req.url; // make sure url is set
490-
return createObservableResponse(resOptions);
488+
489+
return createObservableResponse(reqInfo.req, resOptions);
491490
}
492491

493492
protected delete({id, collection, collectionName, headers, req}: RequestInfo) {

0 commit comments

Comments
 (0)