Current section
Files
Jump to
Current section
Files
src/glen/status.gleam
//// This module provides an easy way to reference
//// [HTTP status codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)
//// and some extra utilities for working with them.
////
//// ```
//// status.not_found
//// |> status.classify
//// // -> ClientError
//// ```
/// HTTP status codes are divided into 5 main groups:
/// - Informational responses (100 – 199)
/// - Successful responses (200 – 299)
/// - Redirection messages (300 – 399)
/// - Client error responses (400 – 499)
/// - Server error responses (500 – 599)
pub type StatusType {
Informational
Successful
Redirection
ClientError
ServerError
}
/// Classify a status code into a [`StatusType`](#StatusType).
pub fn classify(status: Int) -> StatusType {
case status {
_ if status >= 500 -> ServerError
_ if status >= 400 -> ClientError
_ if status >= 300 -> Redirection
_ if status >= 200 -> Successful
_ -> Informational
}
}
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100)
pub const continue = 100
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/101)
pub const switching_protocols = 101
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/102)
pub const processing = 102
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/103)
pub const early_hints = 103
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200)
pub const ok = 200
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201)
pub const created = 201
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202)
pub const accepted = 202
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/203)
pub const non_authoritative_information = 203
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204)
pub const no_content = 204
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/205)
pub const reset_content = 205
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206)
pub const partial_content = 206
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/207)
pub const multi_status = 207
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/208)
pub const already_reported = 208
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/226)
pub const im_used = 226
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/300)
pub const multiple_choices = 300
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301)
pub const moved_permanently = 301
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302)
pub const found = 302
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303)
pub const see_other = 303
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304)
pub const not_modified = 304
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/305)
pub const use_proxy = 305
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307)
pub const temporary_redirect = 307
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308)
pub const permanent_redirect = 308
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400)
pub const bad_request = 400
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401)
pub const unauthorized = 401
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/402)
pub const payment_required = 402
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403)
pub const forbidden = 403
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404)
pub const not_found = 404
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405)
pub const method_not_allowed = 405
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406)
pub const not_acceptable = 406
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/407)
pub const proxy_authentication_required = 407
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408)
pub const request_timeout = 408
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409)
pub const conflict = 409
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410)
pub const gone = 410
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/411)
pub const length_required = 411
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412)
pub const precondition_failed = 412
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/413)
pub const payload_too_large = 413
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/414)
pub const request_uri_too_long = 414
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415)
pub const unsupported_media_type = 415
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/416)
pub const requested_range_not_satisfiable = 416
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/417)
pub const expectation_failed = 417
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418)
pub const im_a_teapot = 418
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/421)
pub const misdirected_request = 421
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422)
pub const unprocessable_entity = 422
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/423)
pub const locked = 423
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/424)
pub const failed_dependency = 424
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/426)
pub const upgrade_required = 426
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/428)
pub const precondition_required = 428
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429)
pub const too_many_requests = 429
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431)
pub const request_header_fields_too_large = 431
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/444)
pub const connection_closed_without_response = 444
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/451)
pub const unavailable_for_legal_reasons = 451
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/499)
pub const client_closed_request = 499
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500)
pub const internal_server_error = 500
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501)
pub const not_implemented = 501
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502)
pub const bad_gateway = 502
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503)
pub const service_unavailable = 503
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504)
pub const gateway_timeout = 504
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/505)
pub const http_version_not_supported = 505
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/506)
pub const variant_also_negotiates = 506
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/507)
pub const insufficient_storage = 507
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/508)
pub const loop_detected = 508
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/510)
pub const not_extended = 510
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/511)
pub const network_authentication_required = 511
/// [Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/599)
pub const network_connect_timeout_error = 599