Difference between revisions of "LlRequestSecureURL"
Jump to navigation
Jump to search
Kireji Haiku (talk | contribs) m |
Kireji Haiku (talk | contribs) m (changed example script and added tip) |
||
Line 10: | Line 10: | ||
|constants | |constants | ||
|examples= | |examples= | ||
{{LSL Tip|Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the sim owner and/or estate managers.}} | |||
Requesting a secure URL. | Requesting a secure URL. | ||
<lsl> | <lsl> | ||
string secureUrl; | |||
key urlRequestId; | key urlRequestId; | ||
key selfCheckRequestId; | |||
request_secure_url() | request_secure_url() | ||
{ | { | ||
llReleaseURL(secureUrl); | |||
secureUrl = ""; | |||
urlRequestId = llRequestSecureURL(); | urlRequestId = llRequestSecureURL(); | ||
} | } | ||
throw_exception(string inputString) | |||
{ | |||
key owner = llGetOwner(); | |||
llInstantMessage(owner, inputString); | |||
// yeah, bad way to handle exceptions by restarting. | |||
// However this is just a demo script... | |||
llResetScript(); | |||
} | |||
default | default | ||
{ | { | ||
on_rez(integer start_param) | |||
{ | |||
llResetScript(); | |||
} | |||
changed(integer change) | changed(integer change) | ||
{ | { | ||
if (change & CHANGED_REGION_START) | if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) | ||
{ | |||
llReleaseURL(secureUrl); | |||
secureUrl = ""; | |||
llResetScript(); | |||
} | |||
if (change & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT)) | |||
request_secure_url(); | request_secure_url(); | ||
} | } | ||
state_entry() | state_entry() | ||
{ | { | ||
request_secure_url(); | request_secure_url(); | ||
} | } | ||
http_request(key id, string method, string body) | http_request(key id, string method, string body) | ||
{ | { | ||
if ( | integer responseStatus = 400; | ||
string responseBody = "Unsupported method"; | |||
if (method == URL_REQUEST_DENIED) | |||
throw_exception("The following error occurred while attempting to get a free URL for this device:\n \n" + body); | |||
else if (method == URL_REQUEST_GRANTED) | |||
{ | { | ||
secureUrl = body; | |||
key owner = llGetOwner(); | |||
llLoadURL(owner, "Click to visit my URL!", secureUrl); | |||
// check every 5 mins for dropped URL | |||
llSetTimerEvent(300.0); | |||
} | } | ||
else if (method == "GET") | else if (method == "GET") | ||
llHTTPResponse(id, 200, " | { | ||
responseStatus = 200; | |||
responseBody = "Hello world!"; | |||
} | |||
// else if (method == "POST") ...; | |||
// else if (method == "PUT") ...; | |||
// else if (method == "DELETE") { responseStatus = 403; responseBody = "forbidden"; } | |||
llHTTPResponse(id, responseStatus, responseBody); | |||
} | |||
http_response(key id, integer status, list metaData, string body) | |||
{ | |||
if (id == selfCheckRequestId) | |||
{ | |||
// If you're not usually doing this, | |||
// now is a good time to get used to doing it! | |||
selfCheckRequestId = NULL_KEY; | |||
if (status != 200) | |||
request_secure_url(); | |||
} | |||
else if (id == NULL_KEY) | |||
throw_exception("Too many HTTP requests too fast!"); | |||
} | |||
timer() | |||
{ | |||
selfCheckRequestId = llHTTPRequest(secureUrl, | |||
[HTTP_METHOD, "GET", | |||
HTTP_VERBOSE_THROTTLE, FALSE, | |||
HTTP_BODY_MAXLENGTH, 16384], | |||
""); | |||
} | } | ||
} | } |
Revision as of 06:26, 6 October 2012
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: key llRequestSecureURL( );0.0 | Forced Delay |
10.0 | Energy |
Requests one HTTPS:// (SSL) url for use by this object. The http_request event is tiggered with results.
Returns a key that is the handle used for identifying the request in the http_request event.
Caveats
- When a region is (re)started all HTTP server URLs are automatically released and invalidated.
- Use CHANGED_REGION_START to detect this so new URL can be requested.
Examples
Important: Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the sim owner and/or estate managers. |
Requesting a secure URL. <lsl> string secureUrl; key urlRequestId; key selfCheckRequestId;
request_secure_url() {
llReleaseURL(secureUrl); secureUrl = ""; urlRequestId = llRequestSecureURL();
}
throw_exception(string inputString) {
key owner = llGetOwner(); llInstantMessage(owner, inputString); // yeah, bad way to handle exceptions by restarting. // However this is just a demo script... llResetScript();
}
default {
on_rez(integer start_param) { llResetScript(); } changed(integer change) {if (change & (CHANGED_OWNER
See Also
Functions
• | llRequestURL | |||
• | llGetFreeURLs | |||
• | llReleaseURL | |||
• | llHTTPResponse | |||
• | llGetHTTPHeader |
Articles
• | LSL http server |