#include "error.h"

namespace panda { namespace protocol { namespace http {

const ErrorCategory error_category;

const char* ErrorCategory::name () const noexcept { return "protocol-http"; }

std::string ErrorCategory::message (int condition) const noexcept {
    switch ((errc)condition) {
        case errc::lexical_error                 : return "http parsing lexical error";
        case errc::multiple_content_length       : return "multiple content-length header in message is not allowed";
        case errc::headers_too_large             : return "headers is bigger than max_headers_size";
        case errc::body_too_large                : return "body is bigger than max_body_size";
        case errc::uncompression_failure         : return "payload cannot be uncompressed";
        case errc::unexpected_body               : return "body is prohibited";
        case errc::unexpected_eof                : return "http parsing error: unexpected EOF";
        case errc::unexpected_continue           : return "response code 100-continue was not expected";
        case errc::unsupported_compression       : return "compression method is not supported";
        case errc::unsupported_transfer_encoding : return "transfer encodinng is not supported";
        case errc::corrupted_cookie_jar          : return "serialized cookie jar seems corrupted";
    }
    return {};
}

}}}