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
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(),
|
|
})
|
|
}
|
|
}
|