Spec-Zone.ru › Hammerspoon

hs.http

Выполнение HTTP-запросов

Обзор API

  • Переменные - Настраиваемые значения
    • htmlEntities
  • Функции - API-вызовы, предлагаемые непосредственно расширением
    • asyncGet
    • asyncPost
    • asyncPut
    • convertHtmlEntities
    • doAsyncRequest
    • doRequest
    • encodeForQuery
    • get
    • post
    • put
    • registerEntity
    • urlParts

Документация API

Переменные

htmlEntities
Подпись hs.http.htmlEntities[]
Тип Переменная
Описание

Коллекция общих HTML-сущностей (&что-либо) и их UTF8-эквивалентов. Для получения UTF8-последовательности для заданной сущности, обратитесь к таблице как hs.http.htmlEntities["&key;"], где key - текст имени сущности или числовая ссылка, например #number.

Примечания
  • Этот список, вероятно, неполный. Он основан на списке общих сущностей, описанных на http://www.freeformatter.com/html-entities.html.

  • Дополнительные сущности можно временно добавить с помощью функции hs.http.registerEntity(...). Если вы считаете, что у вас есть более официальный список сущностей, содержащий элементы, которые в настоящее время не включены по умолчанию, откройте вопрос на https://github.com/Hammerspoon/hammerspoon, и ваша ссылка будет рассмотрена.

  • Чтобы увидеть список текущих определенных сущностей, включен __tostring-метаметод, поэтому обращение к таблице напрямую как строке вернёт текущие определения.

    • Для справки, этот метаметод по существу следующий:

      for i,v in hs.fnutils.sortByKeys(hs.http.htmlEntities) do print(string.format("%-10s %-10s %s\n", i, "&#"..tostring(hs.utf8.codepoint(v))..";", v)) end

    • Обратите внимание, что этот список не будет включать числовое преобразование сущностей (например, A), поскольку это обрабатывается __index-метаметодом, чтобы позволить все возможные числовые значения.

Источник extensions/http/http.lua строка 144

Функции

asyncGet
Подпись hs.http.asyncGet(url, headers, callback)
Тип Функция
Описание

Асинхронно отправляет HTTP-запрос GET

Параметры
  • url - Строка, содержащая URL для получения
  • headers - Таблица, содержащая строковые ключи и значения, представляющие заголовки запроса, или nil, чтобы не добавлять заголовки
  • callback - Функция, которая вызывается при успешном или неудачном выполнении запроса. Функции будут переданы три параметра:
    • Число, содержащее код HTTP-ответа
    • Строка, содержащая тело ответа
    • Таблица, содержащая заголовки ответа
Возвращаемое значение
  • None
Примечания
  • Если для загрузки запроса требуется аутентификация, необходимые учетные данные должны быть указаны в URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение попытается продолжить без учетных данных.
  • Если запрос завершился ошибкой, первый параметр функции обратного вызова будет отрицательным, а второй параметр будет содержать сообщение об ошибке. Третий параметр будет nil
Источник extensions/http/http.lua строка 76
asyncPost
Подпись hs.http.asyncPost(url, data, headers, callback)
Тип Функция
Описание

Асинхронно отправляет HTTP-запрос POST

Параметры
  • url - Строка, содержащая URL для отправки
  • data - Строка, содержащая тело запроса, или nil, чтобы не отправлять тело
  • headers - Таблица, содержащая строковые ключи и значения, представляющие заголовки запроса, или nil, чтобы не добавлять заголовки
  • callback - Функция, которая вызывается при успешном или неудачном выполнении запроса. Функции будут переданы три параметра:
    • Число, содержащее код HTTP-ответа
    • Строка, содержащая тело ответа
    • Таблица, содержащая заголовки ответа
Возвращаемое значение
  • None
Примечания
  • Если для загрузки запроса требуется аутентификация, необходимые учетные данные должны быть указаны в URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение попытается продолжить без учетных данных.
  • Если запрос завершился ошибкой, первый параметр функции обратного вызова будет отрицательным, а второй параметр будет содержать сообщение об ошибке. Третий параметр будет nil
Источник extensions/http/http.lua строка 98
asyncPut
Подпись hs.http.asyncPut(url, data, headers, callback)
Тип Функция
Описание

Асинхронно отправляет HTTP-запрос PUT

Параметры
  • url - Строка, содержащая URL для отправки
  • data - Строка, содержащая тело запроса, или nil, чтобы не отправлять тело
  • headers - Таблица, содержащая строковые ключи и значения, представляющие заголовки запроса, или nil, чтобы не добавлять заголовки
  • callback - Функция, которая вызывается при успешном или неудачном выполнении запроса. Функции будут переданы три параметра:
    • Число, содержащее код HTTP-ответа
    • Строка, содержащая тело ответа
    • Таблица, содержащая заголовки ответа
Возвращаемое значение
  • None
Примечания
  • Если для загрузки запроса требуется аутентификация, необходимые учетные данные должны быть указаны в URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение попытается продолжить без учетных данных.
  • Если запрос завершился ошибкой, первый параметр функции обратного вызова будет отрицательным, а второй параметр будет содержать сообщение об ошибке. Третий параметр будет nil
Источник extensions/http/http.lua строка 121
convertHtmlEntities
Подпись hs.http.convertHtmlEntities(inString) -> outString
Тип Функция
Описание

Преобразует все распознанные HTML-сущности в inString в соответствующие последовательности байтов UTF8 и возвращает преобразованный текст.

Параметры
  • inString -- Строка, содержащая любое количество HTML-сущностей (&whatever;) в тексте.
Возвращаемое значение
  • outString -- входная строка со всеми распознанными последовательностями HTML-сущностей, преобразованными в последовательности байтов UTF8.
Примечания
  • Распознанные HTML-сущности — это те, которые зарегистрированы в hs.http.htmlEntities или числовые последовательности сущностей: &#n;, где n может быть любым целым числом.
  • Эта функция особенно полезна в качестве постфильтра для данных, полученных функциями hs.http.get и hs.http.asyncGet.
Источник extensions/http/http.lua строка 444
doAsyncRequest
Подпись hs.http.doAsyncRequest(url, method, data, headers, callback, [cachePolicy|enableRedirect])
Тип Функция
Описание

Создаёт HTTP-запрос и выполняет его асинхронно

Параметры
  • url - Строка, содержащая URL
  • method - Строка, содержащая HTTP-метод (например, "GET", "POST" и т.д.)
  • data - Строка, содержащая тело запроса, или nil, чтобы не отправлять тело
  • headers - Таблица, содержащая строковые ключи и значения, представляющие ключи и значения заголовков запроса, или nil, чтобы не добавлять заголовки
  • callback - Функция, вызываемая при получении ответа. Функция должна принимать три аргумента:
    • code - Число, содержащее код HTTP-ответа
    • body - Строка, содержащая тело ответа
    • headers - Таблица, содержащая HTTP-заголовки ответа
  • cachePolicy - Необязательная строка, содержащая политику кэширования ("protocolCachePolicy", "ignoreLocalCache", "ignoreLocalAndRemoteCache", "returnCacheOrLoad", "returnCacheDontLoad" или "reloadRevalidatingCache"). По умолчанию protocolCachePolicy.
  • enableRedirect - Необязательный булевый параметр, указывающий, следует ли перенаправлять http-запрос. По умолчанию true.
Возвращаемое значение
  • None
Примечания
  • Если для загрузки запроса требуется аутентификация, необходимые учетные данные должны быть указаны в URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение попытается продолжить без учетных данных.
  • Если заголовок ответа Content-Type начинается с text/, то значение возвращаемого тела ответа является строкой UTF8. Любой другой тип контента передает тело ответа без изменений как поток байтов.
  • Если enableRedirect установлен в true, тело ответа будет пустой строкой. Тело http будет опущено, даже если ответ имеет тело. Это, похоже, ограничение метода «connection:willSendRequest:redirectResponse».
Источник extensions/http/libhttp.m строка 201
END_OF_DOCUMENT_MARKER
doRequest
Подпись hs.http.doRequest(url, method, [data, headers, cachePolicy]) -> int, string, table
Тип Функция
Описание

Создаёт HTTP-запрос и выполняет его синхронно

Параметры
  • url - Строка, содержащая URL
  • method - Строка, содержащая HTTP-метод (например, "GET", "POST" и т.д.)
  • data - Необязательная строка, содержащая данные для POST запроса к URL, или nil, чтобы не отправлять данные
  • headers - Необязательная таблица с строковыми ключами и значениями, используемыми в качестве заголовков для запроса, или nil, чтобы не добавлять заголовки
  • cachePolicy - Необязательная строка, содержащая политику кэширования ("protocolCachePolicy", "ignoreLocalCache", "ignoreLocalAndRemoteCache", "returnCacheOrLoad", "returnCacheDontLoad" или "reloadRevalidatingCache"). По умолчанию protocolCachePolicy.
Возвращаемые значения
  • Число, содержащее код состояния HTTP-ответа
  • Строка, содержащая тело ответа
  • Таблица, содержащая заголовки ответа
Примечания
  • Если для скачивания запроса требуется аутентификация, необходимые учетные данные должны быть указаны в части URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение будет пытаться продолжить без учетных данных.

  • Эта функция синхронная и, следовательно, заблокирует все выполнение Lua до завершения. Рекомендуется использовать асинхронные функции.

  • Если вы пытаетесь подключиться к локальному серверу Hammerspoon, созданному с помощью hs.httpserver, Hammerspoon заблокируется до истечения времени ожидания подключения (60 секунд), вернёт результат с ошибкой из-за таймаута, а затем вызовется функция обратного вызова hs.httpserver (следовательно, любые побочные эффекты функции будут происходить, но её результаты будут потеряны). Используйте hs.http.doAsyncRequest, чтобы избежать этого.

  • Если заголовок ответа Content-Type начинается с text/, то возвращаемое значение тела ответа - строка UTF8. Любой другой тип контента передаёт тело ответа без изменений как поток байтов.

Источник extensions/http/libhttp.m строка 264
encodeForQuery
Подпись hs.http.encodeForQuery(string) -> string
Тип Функция
Описание

Возвращает копию предоставленной строки, в которой символы, не являющиеся допустимыми в ключе или значении HTTP-запроса, экранируются их эквивалентом %##.

Параметры
  • originalString - строка, которую нужно сделать безопасной в качестве ключа или значения для запроса
Возвращаемые значения
  • преобразованная строка
Примечания
  • Цель этой функции — предоставить допустимый ключ или допустимое значение для строки запроса, а не проверить всю строку запроса. По этой причине знаки ?, =, +, и & включены в преобразованные символы.
Источник extensions/http/http.lua строка 461
get
Подпись hs.http.get(url, headers) -> int, string, table
Тип Функция
Описание

Отправляет HTTP-запрос GET на URL

Параметры
  • url - Строка, содержащая URL для извлечения
  • headers - Таблица, содержащая строковые ключи и значения, представляющие заголовки запроса, или nil, чтобы не добавлять заголовки
Возвращаемые значения
  • Число, содержащее HTTP-код состояния
  • Строка, содержащая тело ответа
  • Таблица, содержащая заголовки ответа
Примечания
  • Если для скачивания запроса требуется аутентификация, необходимые учетные данные должны быть указаны в части URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение будет пытаться продолжить без учетных данных.
  • Эта функция синхронная и, следовательно, блокирует все другие выполнения Lua во время обработки запроса, рекомендуется использовать асинхронные функции.
  • Если вы пытаетесь подключиться к локальному серверу Hammerspoon, созданному с помощью hs.httpserver, Hammerspoon заблокируется до истечения времени ожидания подключения (60 секунд), вернёт результат с ошибкой из-за таймаута, а затем вызовется функция обратного вызова hs.httpserver (следовательно, любые побочные эффекты функции будут происходить, но её результаты будут потеряны). Используйте hs.http.asyncGet, чтобы избежать этого.
Источник extensions/http/http.lua строка 11
post
Подпись hs.http.post(url, data, headers) -> int, string, table
Тип Функция
Описание

Отправляет HTTP-запрос POST на URL

Параметры
  • url - Строка, содержащая URL для отправки
  • data - Строка, содержащая тело запроса, или nil, чтобы не отправлять тело
  • headers - Таблица, содержащая строковые ключи и значения, представляющие заголовки запроса, или nil, чтобы не добавлять заголовки
Возвращаемые значения
  • Число, содержащее HTTP-код состояния
  • Строка, содержащая тело ответа
  • Таблица, содержащая заголовки ответа
Примечания
  • Если для скачивания запроса требуется аутентификация, необходимые учетные данные должны быть указаны в части URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение будет пытаться продолжить без учетных данных.
  • Эта функция синхронная и, следовательно, блокирует все другие выполнения Lua во время обработки запроса, рекомендуется использовать асинхронные функции.
  • Если вы пытаетесь подключиться к локальному серверу Hammerspoon, созданному с помощью hs.httpserver, Hammerspoon заблокируется до истечения времени ожидания подключения (60 секунд), вернёт результат с ошибкой из-за таймаута, а затем вызовется функция обратного вызова hs.httpserver (следовательно, любые побочные эффекты функции будут происходить, но её результаты будут потеряны). Используйте hs.http.asyncPost, чтобы избежать этого.
Источник extensions/http/http.lua строка 32
put
Подпись hs.http.put(url, data, headers) -> int, string, table
Тип Функция
Описание

Отправляет HTTP-запрос PUT на URL

Параметры
  • url - Строка, содержащая URL для отправки
  • data - Строка, содержащая тело запроса, или nil, чтобы не отправлять тело
  • headers - Таблица, содержащая строковые ключи и значения, представляющие заголовки запроса, или nil, чтобы не добавлять заголовки
Возвращаемые значения
  • Число, содержащее HTTP-код состояния
  • Строка, содержащая тело ответа
  • Таблица, содержащая заголовки ответа
Примечания
  • Если для скачивания запроса требуется аутентификация, необходимые учетные данные должны быть указаны в части URL (например, "http://user:password@host.com/"). Если аутентификация не удалась или учетные данные отсутствуют, подключение будет пытаться продолжить без учетных данных.
  • Эта функция синхронная и, следовательно, блокирует все другие выполнения Lua во время обработки запроса, рекомендуется использовать асинхронные функции.
  • Если вы пытаетесь подключиться к локальному серверу Hammerspoon, созданному с помощью hs.httpserver, Hammerspoon заблокируется до истечения времени ожидания подключения (60 секунд), вернёт результат с ошибкой из-за таймаута, а затем вызовется функция обратного вызова hs.httpserver (следовательно, любые побочные эффекты функции будут происходить, но её результаты будут потеряны). Используйте hs.http.asyncPost, чтобы избежать этого.
Источник extensions/http/http.lua строка 54
registerEntity
Подпись hs.http.registerEntity(entity, codepoint) -> string
Тип Функция
Описание

Регистрирует HTML-сущность с указанным кодовым значением Unicode, которая в дальнейшем может быть использована в вашем коде как hs.http.htmlEntity[entity] для удобства и читаемости.

Параметры
  • entity -- Полный текст HTML-сущности, как он представлен в кодированных HTML-документах. Правильная сущность начинается с & и заканчивается ; и метки сущностей, которые не соответствуют этому, будут добавлены — для последующих обращений к соответствующей UTF8 обязательно включайте этот инициатор и терминатор, иначе они не будут распознаны.
  • codepoint -- числовое или U+xxxx представление кодового значения Unicode для регистрации с данной сущностью.
Возвращаемые значения
  • Последовательность байтов UTF8 для зарегистрированной сущности.
Примечания
  • Если метка сущности была ранее зарегистрирована, это перепишет предыдущее значение новым.
  • Возвращаемое значение является просто синтаксическим сахаром, и вам не нужно его сохранять локально; его можно безопасно игнорировать — последующий доступ к предварительно преобразованной сущности должен быть получен как hs.http.htmlEntities[entity] в вашем коде. Впрочем, это выглядит неплохо при вызове из консоли ☺.
Источник extensions/http/http.lua строка 419
END_OF_DOCUMENT_MARKER
urlParts
Подпись hs.http.urlParts(url) -> table
Тип Функция
Описание

Возвращает таблицу ключей, содержащих отдельные компоненты предоставленного URL.

Параметры
  • url - URL для разбора на отдельные компоненты
Возвращаемое значение
  • таблица, содержащая любые из следующих ключей, применимых к указанному URL:
    • absoluteString - Строка URL для URL в виде абсолютного URL.
    • absoluteURL - Абсолютный URL, который ссылается на тот же ресурс, что и предоставленный URL.
    • baseURL - базовый URL, если URL относительный
    • fileSystemRepresentation - Неэкранированный путь URL, указанный как путь файловой системы
    • fragment - фрагмент, если он указан в URL
    • host - хост для URL
    • isFileURL - логическое значение, указывающее, представляет ли URL локальный файл
    • lastPathComponent - последний компонент пути, указанный в URL
    • parameterString - строка параметров, если она указана в URL
    • password - пароль, если он указан в URL
    • path - неэкранированный путь, указанный в URL
    • pathComponents - массив, содержащий компоненты пути URL
    • pathExtension - расширение файла, если оно указано в URL
    • port - порт, если он указан в URL
    • query - запрос, если он указан в URL
    • queryItems - если URL содержит строку запроса, это поле содержит массив неэкранированных пар ключ-значение для каждого элемента. Каждая пара ключ-значение представлена таблицей в массиве для сохранения порядка. См. примечания для получения дополнительной информации.
    • relativePath - относительный путь URL без разрешения по отношению к его базовому URL. Если путь имеет конечный слеш, он удаляется. Если URL уже является абсолютным URL, это содержит то же значение, что и path.
    • relativeString - строковое представление относительной части URL. Если URL уже является абсолютным URL, это содержит то же значение, что и absoluteString.
    • resourceSpecifier - ресурс, указанный в URL
    • scheme - схема URL
    • standardizedURL - URL со всеми экземплярами ".." или "." удаленными из его пути
    • user - имя пользователя, если оно указано в URL
Примечания
  • Эта функция предполагает, что URL соответствует RFC 1808. Если URL некорректен или не соответствует RFC1808, то многие из этих полей могут отсутствовать.

  • Пример для URL http://user:password@host.site.com:80/path/to%20a/../file.txt;parameter?query1=1&query2=a%28#fragment:

    hs.inspect(hs.http.urlParts("http://user:password@host.site.com:80/path/to%20a/../file.txt;parameter?query1=1&query2=a%28#fragment"))

    { absoluteString = "http://user:password@host.site.com:80/path/to%20a/../file.txt;parameter?query1=1&query2=a%28#fragment", absoluteURL = "http://user:password@host.site.com:80/path/to%20a/../file.txt;parameter?query1=1&query2=a%28#fragment", fileSystemRepresentation = "/path/to a/../file.txt", fragment = "fragment", host = "host.site.com", isFileURL = false, lastPathComponent = "file.txt", parameterString = "parameter", password = "password", path = "/path/to a/../file.txt", pathComponents = { "/", "path", "to a", "..", "file.txt" }, pathExtension = "txt", port = 80, query = "query1=1&query2=a%28", queryItems = { { query1 = "1" }, { query2 = "a(" } }, relativePath = "/path/to a/../file.txt", relativeString = "http://user:password@host.site.com:80/path/to%20a/../file.txt;parameter?query1=1&query2=a%28#fragment", resourceSpecifier = "//user:password@host.site.com:80/path/to%20a/../file.txt;parameter?query1=1&query2=a%28#fragment", scheme = "http", standardizedURL = "http://user:password@host.site.com:80/path/file.txt;parameter?query1=1&query2=a%28#fragment", user = "user" }

  • Поскольку для пары ключ-значение запроса допустимо отсутствовать ключ, значение или оба, используются следующие соглашения:

    • отсутствующий ключ (например, '=value') будет представлен как { "" = value }
    • отсутствующее значение (например, 'key=') будет представлено как { key = "" }
    • отсутствующее значение без = (например, 'key') будет представлено как { key }
    • отсутствующий ключ и значение (например, '=') будут представлены как { "" = "" }
    • пустой элемент запроса (например, запрос, заканчивающийся '&', или запрос, содержащий && между двумя другими элементами запроса) будет представлен как { "" }
  • В настоящее время Hammerspoon не предоставляет способ представления URL в виде истинного объекта Objective-C в API OS X. Это влияет на следующие ключи:

    • относительные URL не могут быть выражены должным образом, поэтому baseURL всегда будет nil, а relativePath и relativeString всегда будут совпадать с path и absoluteString.
    • Эти ограничения могут быть изменены в будущих обновлениях, если необходимость более полного соответствия обработке URL будет признана необходимой.
Источник extensions/http/libhttp.m строка 332

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.http.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API