| // Copyright 2019 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import 'dart:io'; | |
| /// An exception that may be thrown by a [RequestHandler] to trigger an error | |
| /// HTTP response. | |
| class HttpStatusException implements Exception { | |
| /// Creates a new [HttpStatusException]. | |
| const HttpStatusException(this.statusCode, this.message); | |
| /// The HTTP status code to return to the issuer. | |
| final int statusCode; | |
| /// The message to show to the issuer to explain the error. | |
| final String message; | |
| @override | |
| String toString() => 'HTTP $statusCode: $message'; | |
| } | |
| /// Exception that will trigger an HTTP 400 bad request. | |
| class BadRequestException extends HttpStatusException { | |
| const BadRequestException([String message = 'Bad request']) | |
| : super(HttpStatus.badRequest, message); | |
| } | |
| /// Exception that will trigger an HTTP 404 not found | |
| class NotFoundException extends HttpStatusException { | |
| const NotFoundException(String missing) | |
| : super(HttpStatus.notFound, 'Not found: $missing'); | |
| } | |
| /// Exception that will trigger an HTTP 405 method not allowed. | |
| class MethodNotAllowed extends HttpStatusException { | |
| const MethodNotAllowed(String method) | |
| : super(HttpStatus.methodNotAllowed, 'Unsupported method: $method'); | |
| } | |
| /// Exception that will trigger an HTTP 409 conflict. | |
| class ConflictException extends HttpStatusException { | |
| const ConflictException([ | |
| String message = 'Request conflict with server state', | |
| ]) : super(HttpStatus.conflict, message); | |
| } | |
| /// Exception that will trigger an HTTP 500 internal server error. | |
| class InternalServerError extends HttpStatusException { | |
| const InternalServerError([String message = 'Internal server error']) | |
| : super(HttpStatus.internalServerError, message); | |
| } | |
| /// Exception that will trigger an HTTP 401 not authorized. | |
| class Unauthorized extends HttpStatusException { | |
| const Unauthorized([String message = 'Unauthorized']) | |
| : super(HttpStatus.unauthorized, message); | |
| } | |
| /// Exception that will trigger an HTTP 403 forbidden. | |
| class Forbidden extends HttpStatusException { | |
| const Forbidden([String message = 'Forbidden']) | |
| : super(HttpStatus.forbidden, message); | |
| } | |
| /// Exception thrown when attempting to authenticate a request that cannot be | |
| /// authenticated. | |
| class Unauthenticated implements Exception { | |
| const Unauthenticated(this.message); | |
| final String message; | |
| @override | |
| String toString() => 'Unauthenticated: $message'; | |
| } |