Плагин http.spf
Файл: http.spf
Автор: Nicholas Nemtsev
Описание: Дополнительные слова, позволяющие отслеживать изменения
удаленных файлов по протокулу http, получать дату и время их последнего
изменения и даже загружать файлы на локальный компьютер.
Новые слова:
HTTP-CHANGED: <URL> ( -- ?)
Проверяет, не изменился ли ресурс по указанному URL с момента последнего запуска HTTP-CHANGED:. При проверке используется http-заголовок Last-Modified. Корректная работа слова HTTP-CHANGED: возможна только если удаленный http-сервер возвращает заголовок Last-Modified.
Код возврата http-сервера записывается в пользовательскую переменную HTTP-RESULT.
При первом использовании слово HTTP-CHANGED: сохраняет время последнего изменения ресурса в файл etc\htime.txt в домашней директории nnCron, а затем, при последующих использованиях, сравнивает сохраненное время с тем временем, которое возвращает http-сервер в заголовке Last-Modified. Если время отличается, то результатом работы HTTP-CHANGED: будет TRUE (-1). Если время совпадает, то HTTP-CHANGED: вернет FALSE (0).
Не забывайте, что слово HTTP-CHANGED: возвращает флаг. Это означает, что HTTP-CHANGED: нужно иcпользовать совместно с конструкцией IF ELSE THEN или явным образом удалять со стека возвращенное HTTP-CHANGED: значение.
Пример:
#( help_ru-notify AsLoggedUser OnceAHour : help_ru S" http://www.nncron.ru/download/help_ru.zip" ; Rule: ONLINE? DUP IF DROP HTTP-CHANGED: %help_ru% THEN Action: QUERY: "%help_ru% is changed.%crlf%Download it?" IF S" help_ru.zip" DELETE-FILE DROP ShowMinimized START-APP: wget %help_ru% THEN )#
Существует постфиксный вариант слова HTTP-CHANGED:
S" http://www.nncron.ru/index.html" HTTP-CHANGED
HTTP-GET: <URL> ( -- a u ior)
Возвращает код возможной ошибки и строку с содержимым удаленного ресурса, т. е. загружает указанный ресурс на локальный компьютер. Основное предназначение слова HTTP-GET: - загрузка html-страниц с целью их последующей обработки ( например, поиска по ключевым словам). HTTP-GET: не поддерживает "докачку", поэтому для загрузки бинарных данных лучше использовать специальные утилиты. Впрочем, при необходимости, с помощью HTTP-GET: можно загружать и бинарные данные. Код возврата http-сервера записывается в пользовательскую переменную HTTP-RESULT.
Пример:
Action: S" http://www.nncron.ru/download/help_ru.zip" HTTP-GET 0= IF S" help_ru.zip" FWRITE ELSE 2DROP THEN
Существует постфиксный вариант слова HTTP-GET:
S" http://www.nncron.ru/index.html" HTTP-GET
HTTP-LM: <URL> ( -- a u ior)
Возвращает код возможной ошибки и строку с содержимым заголовка Last-Modified, полученную от удаленного http-сервера, т. е. время последнего изменения удаленного ресурса. Код возврата http-сервера записывается в пользовательскую переменную HTTP-RESULT.
Пример:
#( test_http_lm NoActive Action: HTTP-LM: "http://www.nncron.ru/download/help_ru.zip" 0= IF 2DUP \ выводим дату последнего изменения на консоль TYPE CR \ выводим сообщение с этой же датой MsgBox ELSE 2DROP MSG: "Error in http-response" THEN )#
Существует постфиксный вариант слова HTTP-LM:
S" http://www.nncron.ru/index.html" HTTP-LM
Содержит код возврата http-сервера (после работы слов HTTP-CHANGED:, HTTP-GET: и HTTP-LM:).
Вот самые распространенные коды:
200 - все в порядке.
404 - ресурс не найден
и т. д. (полный список кодов можно найти в документации к веб-серверу).
Код 0 означает, что ошибка произошла не на http-сервере (самое вероятное - возникли проблемы с сетью). В этом случае имеет смысл изучить код возврата HTTP-GET: и HTTP-LM:.
Пример:
#( test_http-result NoActive Action: HTTP-CHANGED: "http://www.nncron.ru/download/help.zip" HTTP-RESULT 200 <> IF DROP MSG: "There was an error: %HTTP-RESULT%" ELSE IF MSG: "help.zip was changed" THEN THEN )#
Задает прокси-сервер для использования со словами, определенными в плагине http.spf. См. также HTTPProxyPort:. Обратите внимание: это слово устанавливают глобальную переменную, поэтому его следует использовать в nncron.ini.
Пример:
HTTPProxy: "proxy.provider.ru"
Задает номер порта прокси-сервера (см. HTTPProxy:). Значение по умолчанию: 3128. Обратите внимание: это слово устанавливают глобальную переменную, поэтому его следует использовать в nncron.ini.
Пример:
HTTPProxyPort: 3100
HTTPProxy-Authorization: username:password
Задает логин и пароль для авторизации на прокси-сервере (см. HTTPProxy:). Обратите внимание: это слово устанавливают глобальную переменную, поэтому его следует использовать в nncron.ini.
Пример:
HTTPProxy-Authorization: user:password
URL - строка с полным адресом удаленного ресурса по http-протоколу.
Примеры:
HTTP-CHANGED: "http://www.nncron.ru/index.html" HTTP-LM: "http://www.nncron.ru/download/help_ru.zip"
Не забывайте добавлять прямой слеш в конец адреса, когда обращаетесь не к конкретному файлу, а к целому каталогу или "дефолтной" странице (index.htm, index.html и т. д.):
HTTP-CHANGED: "http://www.nncron.ru/" HTTP-CHANGED: "http://www.nbk.orc.ru/nncron/"