Skip to content

Commit

Permalink
refactor(rest): create providers for send and parse-params
Browse files Browse the repository at this point in the history
  • Loading branch information
Kevin Delisle committed Sep 26, 2017
1 parent 636fd0b commit 11d6dc8
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 2 deletions.
2 changes: 2 additions & 0 deletions packages/rest/src/providers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ export * from './get-from-context';
export * from './invoke-method';
export * from './log-error-provider';
export * from './reject';
export * from './parse-params';
export * from './send';
20 changes: 20 additions & 0 deletions packages/rest/src/providers/parse-params.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright IBM Corp. 2017. All Rights Reserved.
// Node module: @loopback/rest
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT

import {Provider, BoundValue} from '@loopback/context';
import {parseOperationArgs} from '../parser';
/**
* Provides the function for parsing args in requests at runtime.
*
* @export
* @class ParseParamsProvider
* @implements {Provider<BoundValue>}
* @returns {BoundValue} The handler function that will parse request args.
*/
export class ParseParamsProvider implements Provider<BoundValue> {
value() {
return parseOperationArgs;
}
}
22 changes: 22 additions & 0 deletions packages/rest/src/providers/send.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Copyright IBM Corp. 2017. All Rights Reserved.
// Node module: @loopback/rest
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT

import {Provider, BoundValue} from '@loopback/context';
import {writeResultToResponse} from '../writer';
/**
* Provides the function that populates the response object with
* the results of the operation.
*
* @export
* @class SendProvider
* @implements {Provider<BoundValue>}
* @returns {BoundValue} The handler function that will populate the
* response with operation results.
*/
export class SendProvider implements Provider<BoundValue> {
value() {
return writeResultToResponse;
}
}
4 changes: 4 additions & 0 deletions packages/rest/src/rest-component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import {
GetFromContextProvider,
InvokeMethodProvider,
RejectProvider,
ParseParamsProvider,
SendProvider,
} from './providers';
import {RestServer, RestServerConfig} from './rest-server';

Expand All @@ -38,6 +40,8 @@ export class RestComponent implements Component {
[RestBindings.SequenceActions.REJECT]: RejectProvider,
[RestBindings.BIND_ELEMENT]: BindElementProvider,
[RestBindings.GET_FROM_CONTEXT]: GetFromContextProvider,
[RestBindings.SequenceActions.PARSE_PARAMS]: ParseParamsProvider,
[RestBindings.SequenceActions.SEND]: SendProvider,
};
servers: Constructor<Server>[] = [];
constructor(
Expand Down
2 changes: 0 additions & 2 deletions packages/rest/src/rest-server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,6 @@ export class RestServer extends Context implements Server {
};

this.bind(RestBindings.HANDLER).toDynamicValue(() => this.httpHandler);
this.bind(SequenceActions.PARSE_PARAMS).to(parseOperationArgs);
this.bind(SequenceActions.SEND).to(writeResultToResponse);
}

protected _handleHttpRequest(
Expand Down

0 comments on commit 11d6dc8

Please sign in to comment.