40 lines
2.3 KiB
GDScript
40 lines
2.3 KiB
GDScript
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 = ''
|
||
|
||
signal send_http_request() ## Отправка запроса
|
||
|
||
|
||
func get_result_string(result: Result):
|
||
return RESULT_STRINGS[result] if RESULT_STRINGS.has(result) else '<неизвестный код результата HTTPRequest - %d>' % result
|
||
|
||
|
||
func _on_request_timer():
|
||
print('_on_request_timer: ', Time.get_ticks_msec())
|
||
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])
|
||
else:
|
||
emit_signal('send_http_request')
|