httpie-cli/httpie/status.py

41 lines
987 B
Python
Raw Normal View History

2019-12-02 00:57:29 +01:00
from enum import IntEnum, unique
2019-09-16 13:26:18 +02:00
2019-12-02 00:57:29 +01:00
@unique
class ExitStatus(IntEnum):
2019-12-02 00:57:29 +01:00
"""Program exit status code constants."""
2019-09-16 13:26:18 +02:00
SUCCESS = 0
ERROR = 1
ERROR_TIMEOUT = 2
2019-12-02 00:57:29 +01:00
# See --check-status
2019-09-16 13:26:18 +02:00
ERROR_HTTP_3XX = 3
ERROR_HTTP_4XX = 4
ERROR_HTTP_5XX = 5
2019-12-02 00:57:29 +01:00
ERROR_TOO_MANY_REDIRECTS = 6
PLUGIN_ERROR = 7
# 128+2 SIGINT
# <http://www.tldp.org/LDP/abs/html/exitcodes.html>
ERROR_CTRL_C = 130
2019-09-16 13:26:18 +02:00
def http_status_to_exit_status(http_status: int, follow=False) -> ExitStatus:
"""
Translate HTTP status code to exit status code.
(Relevant only when invoked with --check-status or --download.)
"""
if 300 <= http_status <= 399 and not follow:
# Redirect
return ExitStatus.ERROR_HTTP_3XX
elif 400 <= http_status <= 499:
# Client Error
return ExitStatus.ERROR_HTTP_4XX
elif 500 <= http_status <= 599:
# Server Error
return ExitStatus.ERROR_HTTP_5XX
else:
return ExitStatus.SUCCESS