text: const HttpResponse = require('../helpers/http-response')
  const { MissingParamError, InvalidParamError } = require('../../utils/errors')
  
  module.exports = class LoginRouter {
    constructor ({ authUseCase, emailValidator } = {}) {
      this.authUseCase = authUseCase
      this.emailValidator = emailValidator
    }
  
    async route (httpRequest) {
      try {
        const { email, password } = httpRequest.body
        if (!email) {
          return HttpResponse.badRequest(new MissingParamError('email'))
        }
        if (!this.emailValidator.isValid(email)) {
          return HttpResponse.badRequest(new InvalidParamError('email'))
        }
        if (!password) {
          return HttpResponse.badRequest(new MissingParamError('password'))
        }
        const accessToken = await this.authUseCase.auth(email, password)
        if (!accessToken) {
          return HttpResponse.unauthorizedError()
        }
        return HttpResponse.ok({ accessToken })
      } catch (error) {
        return HttpResponse.serverError()
      }
    }
  }