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:                    'Время истекло' }

const headers_left = [
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
    'Connection: keep-alive',
    'Host: 172.22.246.12:8081',
    'Priority: u=0,i',
    'Upgrade-Insecure-Requests: 1',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0' ]

const headers_right = [
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
    'Connection: keep-alive',
    'Host: 172.22.246.14:8082',
    'Priority: u=0,i',
    'Upgrade-Insecure-Requests: 1',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0' ]

@export var projsettings_path_left: String = ''
@export var projsettings_path_right: String = ''
@export var projsettings_path_wait_time: String = ''


var i_bort: int = 0
var addr_left: String
var addr_right: String


func on_settings_changed():
    addr_left = ProjectSettings.get_setting(projsettings_path_left)
    addr_right = ProjectSettings.get_setting(projsettings_path_right)
    $timer.wait_time = int(ProjectSettings.get_setting(projsettings_path_wait_time, 5))


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


func _ready():
    ProjectSettings.connect('settings_changed', on_settings_changed)
    on_settings_changed()


func _on_request_timer():
    var addr = [addr_right, addr_left][i_bort]
    var hdrs = [headers_right, headers_left][i_bort]
    var rc: = request(addr, hdrs)
    if rc != Error.OK:
        var s: String = '%s: %s' % [error_string(rc), addr]
        log.error('%s' % s)
        i_bort = (i_bort + 1) % 2
