Системные функции

В данном разделе при описании функций приняты следующие обозначения:

  • Типы значений, которые принимает аргумент, указаны в угловых скобках.

  • Перечень необязательных аргументов заключается в квадратные скобки. При вызове функции квадратные скобки вводить не нужно.

  • После :: в угловых скобках указаны типы значений, которые возвращает функция.

get_env_var

Возвращает значение переменной окружения, указанной в name.

Спецификация функции

get_env_var(name: <строка>)
:: <строка>, <ошибка>
Аргумент Тип Описание По умолчанию Обязателен

name

строка

Имя переменной окружения

да

Ошибки

Функция get_env_var может возвращать ошибки, что означает, что обработка необходима для следующих ошибок:

  • Переменная окружения name не существует.

  • Значение переменной окружения name не является допустимым значением Unicode.

Пример

Получить значение переменной окружения

Исходный код
get_env_var!("HOME")
Результат
"/root"

get_hostname

Возвращает имя хоста локальной системы.

Спецификация функции

get_hostname()
:: <строка>, <ошибка>

Ошибки

Функция get_hostname возвращает ошибку, для которой требуется обработка, если не удалось определить имя хоста.

Пример

Получить имя хоста

Исходный код
.hostname = get_hostname!()

get_timezone_name

Возвращает название часового пояса, заданного в конфигурации Vector. Если в конфигурации установлено значение local, то функция пытается определить часовой пояс на основе операционной системы хоста. Если определить название согласно IANA не получилось, возвращается смещение местного часового пояса от UTC в формате "[-+] ЧЧ:ММ", например, "+02:00".

Спецификация функции

get_timezone_name()
:: <строка>, <ошибка>

Ошибки

Функция get_timezone_name() возвращает ошибку, для которой требуется обработка, если получение информации о местном часовом поясе завершилось неудачей.

Пример

Получить имя местного часового пояса согласно IANA

Исходный код
.vector_timezone = get_timezone_name!()

http_request

Функция http_request отправляет HTTP-запрос по указанному URL.

Функция http_request выполняет синхронные блокирующие операции. Не рекомендуется использовать ее для часто выполняемых или критически важных задач, так как это может вызвать задержки из-за работы сети.

Спецификация функции

http_request(
  url: <строка>,
  [method: <строка>,]
  [headers: <объект>,]
  [body: <строка>,]
  [http_proxy: <строка>,]
  [https_proxy: <строка>,]
  [redact_headers: <логическое значение>]
)
:: <строка>
Аргумент Тип Описание По умолчанию Обязателен

url

строка

URL-адрес для отправки HTTP-запроса.

да

method

строка

Используемый метод HTTP.

"get"

нет

headers

объект

Заголовки HTTP, отправляемые с запросом.

{ }

нет

body

строка

Содержимое, которое будет отправлено в теле запроса.

нет

http_proxy

строка

URL-адрес HTTP-прокси для запроса.

нет

https_proxy

строка

URL-адрес HTTPS-прокси для запроса.

нет

redact_headers

логическое значение

Переключатель скрытия конфиденциальных значений заголовков в сообщениях об ошибках.

Ознакомьтесь с описанием аргумента redact_headers.

true

нет

Аргумент redact_headers

Если аргумент redact_headers установлен в true, значения заголовков с конфиденциальной информацией заменяются на "***" в сообщениях об ошибках. Такими заголовками считаются следующие (без учета регистра):

  • "authorization";

  • "proxy-authorization";

  • "cookie";

  • "set-cookie";

  • "api-key";

  • "x-api-key";

  • "x-auth-token";

  • все заголовки, содержащие подстроки token, password или secret.

Примеры

Базовый HTTP-запрос

Исходный код
. = parse_json!(http_request!("https://example.org/get"))

# Скрываем IP источника.
.origin = redact!(.origin, filters: [r'.*'], redactor: {"type": "text", "replacement": "***"})
# Удаляем все идентификаторы в заголовках.
.headers = filter(object!(.headers)) -> |key, _value| { !contains(key, "id", false) }
.
Результат
{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "example.org"
  },
  "origin": "***",
  "url": "https://example.org/get"
}

HTTP-запрос с токеном Bearer

Исходный код
parse_json!(http_request!("https://example.org/bearer", headers: {"Authorization": "Bearer my_token"}))
Результат
{
  "authenticated": true,
  "token": "my_token"
}

HTTP-запрос PUT

Исходный код
. = parse_json!(http_request!("https://example.org/put", method: "put"))

# Скрываем IP источника.
.origin = redact!(.origin, filters: [r'.*'], redactor: {"type": "text", "replacement": "***"})
# Удаляем все идентификаторы в заголовках.
.headers = filter(object!(.headers)) -> |key, _value| { !contains(key, "id", false) }
.
Результат
{
  "args": {},
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "0",
    "Host": "example.org"
  },
  "json": null,
  "origin": "***",
  "url": "https://example.org/put"
}

HTTP-запрос POST с телом

Исходный код
. = parse_json!(http_request!("https://example.org/post", method: "post", body: "{\"data\":{\"hello\":\"world\"}}"))

# Скрываем IP источника.
.origin = redact!(.origin, filters: [r'.*'], redactor: {"type": "text", "replacement": "***"})
# Удаляем все идентификаторы в заголовках.
.headers = filter(object!(.headers)) -> |key, _value| { !contains(key, "id", false) }
.
Результат
{
  "args": {},
  "data": "{\"data\":{\"hello\":\"world\"}}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "26",
    "Host": "example.org"
  },
  "json": {
    "data": {
      "hello": "world"
    }
  },
  "origin": "***",
  "url": "https://example.org/post"
}

now

Возвращает текущую отметку времени в часовом поясе UTC с точностью до наносекунд.

Спецификация функции

now()
:: <метка времени>

Пример

Получение текущей отметки времени

Исходный код
now()
Результат
2021-03-04T10:51:15.928937Z

Была ли полезна эта страница?

Обратная связь