const httpStatus = {
    // Informational
    CONTINUE: 100,
    SWITCHING_PROTOCOLS: 101,
    PROCESSING: 102,

    // Success
    OK: 200,
    CREATED: 201,
    ACCEPTED: 202,
    NO_CONTENT: 204,

    // Redirection
    MOVED_PERMANENTLY: 301,
    FOUND: 302,
    SEE_OTHER: 303,
    NOT_MODIFIED: 304,
    TEMPORARY_REDIRECT: 307,

    // Client Error
    BAD_REQUEST: 400,
    UNAUTHORIZED: 401,
    FORBIDDEN: 403,
    NOT_FOUND: 404,
    METHOD_NOT_ALLOWED: 405,
    CONFLICT: 409,
    GONE: 410,
    UNSUPPORTED_MEDIA_TYPE: 415,

    // Server Error
    INTERNAL_SERVER_ERROR: 500,
    NOT_IMPLEMENTED: 501,
    SERVICE_UNAVAILABLE: 503
};

const httpStatusMessages = {
    // Informational
    [httpStatus.CONTINUE]: "Continue",
    [httpStatus.SWITCHING_PROTOCOLS]: "Switching Protocols",
    [httpStatus.PROCESSING]: "Processing",

    // Success
    [httpStatus.OK]: "OK",
    [httpStatus.CREATED]: "Created",
    [httpStatus.ACCEPTED]: "Accepted",
    [httpStatus.NO_CONTENT]: "No Content",

    // Redirection
    [httpStatus.MOVED_PERMANENTLY]: "Moved Permanently",
    [httpStatus.FOUND]: "Found",
    [httpStatus.SEE_OTHER]: "See Other",
    [httpStatus.NOT_MODIFIED]: "Not Modified",
    [httpStatus.TEMPORARY_REDIRECT]: "Temporary Redirect",

    // Client Error
    [httpStatus.BAD_REQUEST]: "Bad Request",
    [httpStatus.UNAUTHORIZED]: "Unauthorized",
    [httpStatus.FORBIDDEN]: "Forbidden",
    [httpStatus.NOT_FOUND]: "Not Found",
    [httpStatus.METHOD_NOT_ALLOWED]: "Method Not Allowed",
    [httpStatus.CONFLICT]: "Conflict",
    [httpStatus.GONE]: "Gone",
    [httpStatus.UNSUPPORTED_MEDIA_TYPE]: "Unsupported Media Type",

    // Server Error
    [httpStatus.INTERNAL_SERVER_ERROR]: "Internal Server Error",
    [httpStatus.NOT_IMPLEMENTED]: "Not Implemented",
    [httpStatus.SERVICE_UNAVAILABLE]: "Service Unavailable"
};

const httpHeaders = {
    JSON: { 'name': 'Content-Type', 'value': 'application/json' }
};

module.exports = {httpStatus, httpStatusMessages, httpHeaders};