Triggers: Difference between revisions

1,554 bytes removed ,  6 October 2016
m
no edit summary
mNo edit summary
mNo edit summary
Line 308: Line 308:
</source>
</source>


==Выполнение http запросов==
== Processing an HTTP request ==
С помощью скриптов можно выполнять http-запросы, что позволяет обмениваться информацией с веб-службами предоставляющими API. Также через http запросы вы можете интегрировать Memento со своей системой.
Scripts can send HTTP requests to Web services through their APIs.
Все операции с файлами производятся через объект Http, который получается через вызов глобального метода http().
Processing for HTTP requests allows integration between Memento and the system. All file operations use the Http object, which works through global method http().
 
HTTP requests must fulfill two requirements:
# Script execution should be asynchronous, because processing of the request on the network can take a long time. Therefore, HTTP requests of the last Event phase.
# The library should have permission - Network.


Http запросы доступны при соблюдении двух условий:
# Выполнение скрипта должно быть асинхронным (фоновым), так как обработка запроса по сети может занимать много времени. Таким образом выполнять http-запросы можно только в последних фазах действий.
# В библиотеки должно быть установлено разрешение - Network.
=== Object Http ===
=== Object Http ===
Интерфейс выполнения http запросов.  
Interface for processing HTTP requests.  
==== Method ====
==== Methods ====
=====get(url)=====
===== get(url) =====
:Выполнить get запрос.
:Execute get request
:Параметры: url - http адрес, должен начинаться с http или https
:Argument: url - HTTP address, starting with http or https
:Результат: HttpResult - объект содержащий результат выполнения http запроса.
:Result: HttpResult - Object containing the result of the execution of the HTTP request.


=== Object HttpResult ===
=== Object HttpResult ===
Результат выполнения http запроса
Result of the execution of the HTTP request
====Свойства====
==== Properties ====
;code : http код ответа, если запрос выполнен успешно, то он обычно равен 200.
;code : HTTP code of the response, if the request is successful (usually is 200).
;body : тело ответа в виде текста.
;body : The response in text form
 
=== Examples ===
==== Currency Conversion ====
Suppose the library contains two fields: PriceUSD and PriceEUR.
The user will enter the value in PriceUSD and the value in Euros will appear in PriceEUR according to the current exchange rate.
We will create a Trigger on Event '''Create Entry to Add''' and phaase '''After Saving Entry'''.


===Примеры===
====Конвертация валюты====
Библиотека содержит два поля PriceUSD и PriceEUR. Пользователь заполняет только поле PriceUSD, требуется чтобы в поле  PriceEUR  записывалась цена в евро по текущему курсу.
Создадим триггер на действие ''Создание записи'', фаза выполнения будет ''После сохранения''.
<source lang="javascript" line>
<source lang="javascript" line>
result = http().get("http://api.fixer.io/latest?base=USD")
result = http().get("http://api.fixer.io/latest?base=USD")       // Use service http://fixer.io/ to get conversion rate in JSON format
usdToEur = JSON.parse(result.body)["rates"]["Eur"]  
usdToEur = JSON.parse(result.body)["rates"]["Eur"]               // Use standard JavaScript object JSON to parse the result
entry().set("PriceEUR" , entry().field( "PriceUSD") * usdToEur )
entry().set("PriceEUR" , entry().field( "PriceUSD") * usdToEur ) // Multiply PriceUSD by the conversion rate to determine the value for PriceEUR
</source>
</source>
#Для получения курсов валют пользуемся сервисом http://fixer.io/. Сервис по запросу http://api.fixer.io/latest?base=USD возвращает курсы валют в JSON формате.
#Воспользуется стандартным JavaScript объектом JSON чтобы распарсить ответ.
#Умножаем цену из поля PriceUSD на коэффициент конвертации валюты и устанавливаем полученное значение в поле PriceEUR.


====Создание задачи в приложении Todoist====
==== Creating a Task in the Todoist App ====
[https://todoist.com Todoist] — это веб-сервис и программа для управления задачами. Веб-сервис предоставляет возможность через [https://developer.todoist.com/ api] создавать задачи.
[https://todoist.com Todoist] — A Web service and mobile app for task management. Todoist allows task creation via API [https://developer.todoist.com/].
Приведем скрипт для создания задачи, текст задачи будет браться из записи.  
In the following example of task creation, text will be taken from the Memento library entry.
 
<source lang="javascript" line>
<source lang="javascript" line>
var commands='[{"uuid":"' + guid() + '","temp_id":"' + guid() + '","type":"item_add","args":{"content":"' + entry().field("Task") + '"}}]'
var commands='[{"uuid":"' + guid() + '","temp_id":"' + guid() + '","type":"item_add","args":{"content":"' + entry().field("Task") + '"}}]'
Line 350: Line 351:
if (result.code == 200) message('Task has been successfully created")
if (result.code == 200) message('Task has been successfully created")
</source>
</source>
#Составляем команду в json формате для создания задачи в todoist, формат команды описан здесь: https://developer.todoist.com/#add-an-item. В команде должны присутствовать уникальные идентификаторы, для их получения используем глобальную функцию guid().  
#Составляем команду в json формате для создания задачи в todoist, формат команды описан здесь: https://developer.todoist.com/#add-an-item. В команде должны присутствовать уникальные идентификаторы, для их получения используем глобальную функцию guid().  
#Выполняем http запрос. Атрибут token используется для авторизации в todoist, его можно получить в Настройках Todoist вкладка Аккаунт. Так как текст задачи может содержать символы недопустимые в URL-запроса, то экранируем их с помощью стандартной функции encodeURIComponent().
#Выполняем http запрос. Атрибут token используется для авторизации в todoist, его можно получить в Настройках Todoist вкладка Аккаунт. Так как текст задачи может содержать символы недопустимые в URL-запроса, то экранируем их с помощью стандартной функции encodeURIComponent().