Скриптовое событие MyChat Server: OnRequestByREST_2
An event that occurs when the POST or GET query is sent to MyChat WEB Server via http/https (REST).
The address to which you need to send a query:
[protocol]://[server_address]:[port]/rest/[scriptname]/?[parameters]
A description of the query parameters:
Parameter |
Value |
protocol |
http or https; |
server_address |
IP address or the domain name of MyChat Server; |
port |
port for MyChat WEB Server work. If it is 80/http or 443/https you do not have to specify this parameter; |
scriptname |
script name in the OnRequestByREST event section that is executed by this query. The letter case is important, "myScript" and "myscript" are different scripts. Script MUST be enabled! |
parameters |
query parameters. For example, data=test&key=value#testhash |
Event template
function OnRequestByREST(sBody, sParams, sHeaders, sURL, sIPv4, sIPv6: string; iType: integer): string;
begin
// your own code
result := '{}';
end;
begin
end.
You can use your own code instead of the comment.
A description of script event parameters
Parameter |
Type |
Value |
sBody |
string |
query text; |
sParams |
string |
query parameters; |
sHeaders |
string |
query HTML headers; |
sURL |
string |
query full URL; |
sIPv4 |
string |
client IP address in the IPv4 format; |
sIPv6 |
string |
client IP address in the IPv6 format; |
iType |
integer |
query type. 0 GET, 1 POST. |
Return value
Function must return JSON object as a text string. If you won't return anything then a JSON object will return automatically with a numeric parameter "Error".
This answer is given to the service that made POST or GET query to MyChat WEB Server.
Example
const
LOG_FILE = 'c:\temp\log.txt';
function OnRequestByREST(sBody, sParams, sHeaders, sURL, sIPv4, sIPv6: string; iType: integer): string;
begin
case iType of
0: Protocol('GET request', LOG_FILE, true);
1: Protocol('POST request', LOG_FILE, true);
end;
Protocol('sIPv4 : ' + sIPv4, LOG_FILE, true);
Protocol('sIPv6 : ' + sIPv6, LOG_FILE, true);
Protocol('sBody : ' + sBody, LOG_FILE, true);
Protocol('sParams : ' + sParams, LOG_FILE, true);
Protocol('sURL : ' + sURL, LOG_FILE, true);
Protocol('sHeaders : ' + sHeaders, LOG_FILE, true);
result := '{"done" : "ok"}';
end;
begin
end.
The scripts processes an incoming REST query from a browser and saves data into a file. In return, it sends a template answer in JSON format.
The example of a query string in a browser: http://192.168.10.109:8080/rest/telegram/?data=test&key=value#testhash
In our example, MyChat WEB Server works on 192.168.10.109 IP address, 8080 port, without traffic encryption. Query script called "telegram":
The result of script work
[31.05.2017 18:12:26] GET request
[31.05.2017 18:12:26] sIPv4 : 192.168.10.105
[31.05.2017 18:12:26] sIPv6 : ::ffff:192.168.10.105
[31.05.2017 18:12:26] sBody : ?data=test&key=value
[31.05.2017 18:12:26] sParams : ?data=test&key=value
[31.05.2017 18:12:26] sURL : /rest/telegram/123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/
[31.05.2017 18:12:26] sHeaders : Host
192.168.10.109:8080
Connection
keep-alive
Cache-Control
max-age=0
Upgrade-Insecure-Requests
1
User-Agent
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT
1
Accept-Encoding
gzip, deflate, sdch
Accept-Language
ru,en-US;q=0.8,en;q=0.6,uk;q=0.4
Cookie
io=X7qdbz1grVCXbK2TAAAA