LSL HTTP server/examples: Difference between revisions
Jump to navigation
Jump to search
Kelly Linden (talk | contribs) |
Kelly Linden (talk | contribs) |
||
| Line 33: | Line 33: | ||
<lsl> | <lsl> | ||
key request_id = NULL_KEY; | key request_id = NULL_KEY; | ||
default | default | ||
{ | { | ||
| Line 40: | Line 40: | ||
llRequestPublicURL(); | llRequestPublicURL(); | ||
} | } | ||
http_request(key id, string method, string body) | http_request(key id, string method, string body) | ||
{ | { | ||
if (method == URL_REQUEST_GRANTED) | if (method == URL_REQUEST_GRANTED) | ||
{ | { | ||
llSay(0,"URL: " + body); | llSay(0,"URL: " + body); | ||
} | } | ||
else if (method == URL_REQUEST_DENIED) | else if (method == URL_REQUEST_DENIED) | ||
{ | { | ||
llSay(0, "Something went wrong, no url. " + body); | llSay(0, "Something went wrong, no url. " + body); | ||
} | } | ||
else if (method == "GET") | else if (method == "GET") | ||
| Line 68: | Line 64: | ||
llSensor("",NULL_KEY,AGENT,96,PI); | llSensor("",NULL_KEY,AGENT,96,PI); | ||
} | } | ||
} | } | ||
else | |||
{ | { | ||
llHTTPResponse(id,500,"Unsupported method."); | llHTTPResponse(id,500,"Unsupported method."); | ||
} | } | ||
} | } | ||
no_sensor() | no_sensor() | ||
{ | { | ||
| Line 82: | Line 76: | ||
request_id = NULL_KEY; | request_id = NULL_KEY; | ||
} | } | ||
sensor(integer n) | sensor(integer n) | ||
{ | { | ||
| Line 96: | Line 90: | ||
} | } | ||
</lsl> | </lsl> | ||
=== Url Persistence === | === Url Persistence === | ||
Revision as of 16:10, 18 July 2008
Hello World!
Classic example. <lsl> default {
state_entry()
{
llRequestPublicURL();
}
http_request(key id, string method, string body)
{
if (method == URL_REQUEST_GRANTED)
{
llSay(0,"URL: " + body);
}
else if (method == URL_REQUEST_DENIED)
{
llSay(0, "Something went wrong, no url. " + body);
}
else if (method == "GET")
{
llHTTPResponse(id,200,"Hello World!");
}
}
} </lsl>
Visitor List
A list of residents within sensor range of the server.
Notes:
- It is cheesy and only handles one request at a time. This was just so the script didn't fill out with list management.
- Unlike the hello world above, this one will give a response for methods it doesn't handle.
<lsl> key request_id = NULL_KEY;
default {
state_entry()
{
llRequestPublicURL();
}
http_request(key id, string method, string body)
{
if (method == URL_REQUEST_GRANTED)
{
llSay(0,"URL: " + body);
}
else if (method == URL_REQUEST_DENIED)
{
llSay(0, "Something went wrong, no url. " + body);
}
else if (method == "GET")
{
if (request_id != NULL_KEY)
{
// This is cheesy.
// Handling multiple requests means list management though.
llHTTPResponse(id,200,"Sorry, busy right now.\n\tTry again soon.");
}
else
{
request_id = id;
llSensor("",NULL_KEY,AGENT,96,PI);
}
}
else
{
llHTTPResponse(id,500,"Unsupported method.");
}
}
no_sensor()
{
llHTTPResponse(request_id, 200, "There is no one here.");
request_id = NULL_KEY;
}
sensor(integer n)
{
string output = "There are " + (string)n + " avatars nearby:";
integer i;
for (i = 0;i<n;++i)
{
output += "\n\t" + llDetectedName(i);
}
llHTTPResponse(request_id,200,output);
request_id = NULL_KEY;
}
} </lsl>