extends HTTPRequest

## Для приборов АФСП и РТР

const RESULT_STRINGS = {
    RESULT_SUCCESS:                    'Запрос успешен',
    RESULT_CHUNKED_BODY_SIZE_MISMATCH: 'Несоответствие размеров частей сообщения',
    RESULT_CANT_CONNECT:               'Запрос не выполнен при подключении',
    RESULT_CANT_RESOLVE:               'Запрос не выполнен при разрешении',
    RESULT_CONNECTION_ERROR:           'Запрос не выполнен из-за ошибки соединения (чтения/записи)',
    RESULT_TLS_HANDSHAKE_ERROR:        'Запрос не выполнен на TLS рукопожатии',
    RESULT_NO_RESPONSE:                'Запрос не имеет ответа (пока)',
    RESULT_BODY_SIZE_LIMIT_EXCEEDED:   'Запрос превысил максимальный размер, см. `body_size_limit`',
    RESULT_BODY_DECOMPRESS_FAILED:     'Не удалось распаковать сообщение',
    RESULT_REQUEST_FAILED:             'Запрос не удался (в настоящее время не используется)',
    RESULT_DOWNLOAD_FILE_CANT_OPEN:    'Невозможно открыть файл загрузки',
    RESULT_DOWNLOAD_FILE_WRITE_ERROR:  'Невозможно записать в файл загрузки',
    RESULT_REDIRECT_LIMIT_REACHED:     'Запрос достиг максимального предела перенаправления, см. `max_redirects`',
    RESULT_TIMEOUT:                    'Время истекло' }


@export var request_url: String = ''


func get_result_string(result: Result):
    return RESULT_STRINGS[result] if RESULT_STRINGS.has(result) else '<неизвестный код результата HTTPRequest - %d>' % result


func _on_request_timer():
    if HTTPClient.Status.STATUS_DISCONNECTED != get_http_client_status():
        return
    var rc: = request(request_url)
    if rc != Error.OK:
        push_error('%s: \"%s\"' % [error_string(rc), request_url])
