Skip to content

Commit

Permalink
refactor: input and security out
Browse files Browse the repository at this point in the history
  • Loading branch information
XVincentX committed Oct 29, 2019
1 parent 0843f93 commit 006a15e
Showing 1 changed file with 15 additions and 14 deletions.
29 changes: 15 additions & 14 deletions packages/core/src/factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,20 @@ export function factory<Resource, Input, Output, Config extends IPrismConfig>(
defaultConfig: Config,
components: IPrismComponents<Resource, Input, Output, Config>
): IPrism<Resource, Input, Output, Config> {
const validateInputAndSecurity = (config: Config, resource: Resource, input: Input) =>
pipe(
sequenceValidation(
config.validateRequest ? components.validateInput({ resource, element: input }) : Either.right(input),
config.checkSecurity ? validateSecurity(input, resource) : Either.right(input)
),
Either.map(() => ({ resource, inputValidations: [] })),
Either.orElse<
NonEmptyArray<IPrismDiagnostic>,
{ resource: Resource; inputValidations: IPrismDiagnostic[] },
Error
>(inputValidations => Either.right({ resource, inputValidations }))
);

return {
request: (input: Input, resources: Resource[], c?: Config) => {
// build the config for this request
Expand All @@ -27,20 +41,7 @@ export function factory<Resource, Input, Output, Config extends IPrismConfig>(
TaskEither.fromEither(
pipe(
components.route({ resources, input }),
Either.chain(resource =>
pipe(
sequenceValidation(
config.validateRequest ? components.validateInput({ resource, element: input }) : Either.right(input),
config.checkSecurity ? validateSecurity(input, resource) : Either.right(input)
),
Either.map(() => ({ resource, inputValidations: [] })),
Either.orElse<
NonEmptyArray<IPrismDiagnostic>,
{ resource: Resource; inputValidations: IPrismDiagnostic[] },
Error
>(inputValidations => Either.right({ resource, inputValidations }))
)
)
Either.chain(resource => validateInputAndSecurity(config, resource, input))
)
),
TaskEither.chain(({ resource, inputValidations }) => {
Expand Down

0 comments on commit 006a15e

Please sign in to comment.