You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.1 KiB

import {
Either, hasOwnProperty,
http,
HTTPStatus,
Inject,
Injectable,
left, Logging,
ParameterMiddleware,
ResponseObject,
right,
} from '@extollo/lib'
import {ContactForm} from '../../../types/ContactForm.type'
/**
* ContactForm Middleware
* --------------------------------------------
* Parse the contact form data and validate it. Provide the fields as middleware.
*/
@Injectable()
export class ValidContactForm extends ParameterMiddleware<ContactForm> {
@Inject()
protected readonly logging!: Logging
async handle(): Promise<Either<ResponseObject, ContactForm>> {
const allInput = this.request.input()
if ( typeof allInput !== 'object' || allInput === null || !hasOwnProperty(allInput, 'e-mail') || allInput['e-mail'] ) {
return left(http(HTTPStatus.UNAUTHORIZED))
}
return right({
email: this.request.safe('email').present().string(),
name: this.request.safe('name').present().string(),
message: this.request.safe('message').present().string(),
})
}
}