<br />
<b>Warning</b>:  Parameter 1 to Language::getMagic() expected to be a reference, value given in <b>/sda/2/c/digigrids/wiki/includes/StubObject.php</b> on line <b>58</b><br />
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://digigrids.free.fr/wiki/skins//common/feed.css?207"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Static URL's for HTTP-In Service - Historique des versions</title>
		<link>http://digigrids.free.fr/wiki/index.php?title=Static_URL%27s_for_HTTP-In_Service&amp;action=history</link>
		<description>Historique pour cette page sur le wiki</description>
		<language>fr</language>
		<generator>MediaWiki 1.15.1</generator>
		<lastBuildDate>Sat, 29 Aug 2026 16:44:51 GMT</lastBuildDate>
		<item>
			<title>Djphil&amp;nbsp;:&amp;#32;Page créée avec « __NOTOC__ == Service: == LSL Redirect, is a project made to provide an easy solution for HTTP-In temporal limitation in LSL (Second Life). The system is designed to handle st… »</title>
			<link>http://digigrids.free.fr/wiki/index.php?title=Static_URL%27s_for_HTTP-In_Service&amp;diff=5054&amp;oldid=prev</link>
			<description>&lt;p&gt;Page créée avec « __NOTOC__ == Service: == LSL Redirect, is a project made to provide an easy solution for HTTP-In temporal limitation in LSL (Second Life). The system is designed to handle st… »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
== Service: ==&lt;br /&gt;
LSL Redirect, is a project made to provide an easy solution for HTTP-In temporal limitation in LSL (Second Life). The system is designed to handle static URLs (permanent links) and redirect them to a specific HTTP-In URL. This HTTP-In URL can be updated or removed from Second Life if needed.&lt;br /&gt;
&lt;br /&gt;
This service can be used only by LSL scripts and only for HTTP-In URLs, this is not a redirection service like 'tinyurl' or 'tr.im'.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
With our API, you have an ID, wich is your link and a CODE. The code is used as password to identificate who is requesting changes in the ID. With the code you can update the URL or remove the ID if needed.&lt;br /&gt;
&lt;br /&gt;
To keep your ID up-to-date, you have to do a frequent update, the http-in changes when the region restart, object cross-sim, object rez, object reset. Make sure you do an update each time the http-in url changes. Also, make sure you store the CODE and ID in a notecard, do not use temporal variables to store this information or you wont be able to use them.&lt;br /&gt;
&lt;br /&gt;
More info about the service and its API [http://lsl.sltools.biz/index.php here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// -------------------------------------------&lt;br /&gt;
// HTTP-IN v0.2 Public.&lt;br /&gt;
// -------------------------------------------&lt;br /&gt;
// Released under Creative Commons v3.5&lt;br /&gt;
// -------------------------------------------&lt;br /&gt;
// Created by Jor3l Boa (jor3lboa@sltools.biz)&lt;br /&gt;
// Date: 7/21/2009 - Updated:&lt;br /&gt;
// -------------------------------------------&lt;br /&gt;
// This script uses the LSL Static URL Service&lt;br /&gt;
// provided by www.sltools.biz. For more info&lt;br /&gt;
// about it, visit: http://lsl.sltools.biz&lt;br /&gt;
// -------------------------------------------&lt;br /&gt;
key createRequest;&lt;br /&gt;
key readRequest;&lt;br /&gt;
key updateRequest;&lt;br /&gt;
key getURL;&lt;br /&gt;
string myURL;&lt;br /&gt;
string ID;&lt;br /&gt;
string CODE;&lt;br /&gt;
//================&lt;br /&gt;
list ERRORS = [900,&amp;quot;Empty ID&amp;quot;,&lt;br /&gt;
               901,&amp;quot;Invalid URL (not http-in url)&amp;quot;,&lt;br /&gt;
               902,&amp;quot;Error creating ID&amp;quot;,&lt;br /&gt;
               903,&amp;quot;Code do not match&amp;quot;,&lt;br /&gt;
               904,&amp;quot;Empty URL-ID&amp;quot;,&lt;br /&gt;
               905,&amp;quot;Invalid ID&amp;quot;,&lt;br /&gt;
               910,&amp;quot;Invalid token&amp;quot;];&lt;br /&gt;
list mime   = [HTTP_METHOD,&amp;quot;POST&amp;quot;,HTTP_MIMETYPE,&amp;quot;application/x-www-form-urlencoded&amp;quot;];&lt;br /&gt;
               &lt;br /&gt;
updateURL(string sAC, string sID, string sURL)  {  &lt;br /&gt;
    updateRequest = llHTTPRequest(&amp;quot;http://lsl.sltools.biz/&amp;quot;+sID,mime,&amp;quot;actionID=&amp;quot;+sAC+&amp;quot;&amp;amp;urlID=&amp;quot;+sURL+&amp;quot;&amp;amp;codeID=&amp;quot;+CODE);&lt;br /&gt;
}&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer n)&lt;br /&gt;
    {&lt;br /&gt;
        if(llDetectedKey(0) != llGetOwner()) return;&lt;br /&gt;
        if(llGetFreeURLs() &amp;gt; 0) { //check for available urls&lt;br /&gt;
            getURL = llRequestURL();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    http_request(key id, string method, string body) {&lt;br /&gt;
        if (id == getURL &amp;amp;&amp;amp; method == URL_REQUEST_GRANTED) {&lt;br /&gt;
            myURL = body;&lt;br /&gt;
            llOwnerSay(&amp;quot;Got HTTP-IN URL: &amp;quot;+myURL+&amp;quot; - Creating Static URL&amp;quot;);&lt;br /&gt;
            state createURL;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
state createURL&lt;br /&gt;
{&lt;br /&gt;
    state_entry()   {&lt;br /&gt;
        llListen(-999901,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;); // listen for menu.&lt;br /&gt;
        createRequest = llHTTPRequest(&amp;quot;http://lsl.sltools.biz/create&amp;quot;,//url&lt;br /&gt;
            mime,&amp;quot;urlID=&amp;quot;+llEscapeURL(myURL)); //urlID=http-inURL&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    http_request(key id, string method, string body) {&lt;br /&gt;
        if (id == getURL &amp;amp;&amp;amp; method == URL_REQUEST_GRANTED) {&lt;br /&gt;
            myURL = body;&lt;br /&gt;
            updateURL(&amp;quot;UPDATE&amp;quot;,ID,myURL);&lt;br /&gt;
        }&lt;br /&gt;
        if (method == &amp;quot;GET&amp;quot;) {&lt;br /&gt;
            llOwnerSay(&amp;quot;REQUEST: &amp;quot;+body);&lt;br /&gt;
            llHTTPResponse(id,200,&amp;quot;Hello World!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer n)  {&lt;br /&gt;
        if(llDetectedKey(0) != llGetOwner()) return;&lt;br /&gt;
        if(ID != &amp;quot;&amp;quot;)    { //avoid empty ID&lt;br /&gt;
            llDialog(llGetOwner(),&amp;quot;ID: &amp;quot;+ID+&amp;quot;\nCODE: &amp;quot;+CODE+&amp;quot;\nMy URL: &amp;quot;+myURL,[&amp;quot;TEST&amp;quot;,&amp;quot;UPDATE&amp;quot;,&amp;quot;DELETE&amp;quot;],-999901);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer chan, string name, key id, string msg)   {&lt;br /&gt;
        if(msg == &amp;quot;TEST&amp;quot;)   {&lt;br /&gt;
            llOwnerSay(&amp;quot;Sending TEST request.&amp;quot;);&lt;br /&gt;
            readRequest = llHTTPRequest(&amp;quot;http://lsl.sltools.biz/&amp;quot;+ID,[],&amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if(msg == &amp;quot;UPDATE&amp;quot;)    {&lt;br /&gt;
            if(llGetFreeURLs() &amp;gt; 0) { //check for available urls&lt;br /&gt;
                llOwnerSay(&amp;quot;Getting NEW HTTP-IN URL and Updating. Wait for positive response.&amp;quot;);&lt;br /&gt;
                getURL = llRequestURL();&lt;br /&gt;
            }&lt;br /&gt;
            else    {&lt;br /&gt;
                llOwnerSay(&amp;quot;Too many HTTP-IN URLs in use.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else if(msg == &amp;quot;DELETE&amp;quot;)    {&lt;br /&gt;
            llOwnerSay(&amp;quot;Deleting ID, wait for positive response.&amp;quot;);&lt;br /&gt;
            updateURL(&amp;quot;DELETE&amp;quot;,ID,&amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }   &lt;br /&gt;
            &lt;br /&gt;
    http_response(key id, integer status, list meta, string body) {&lt;br /&gt;
        if(id == createRequest) {&lt;br /&gt;
            if(status &amp;gt;= 900)   { //System returned an error.&lt;br /&gt;
                llOwnerSay(&amp;quot;(&amp;quot;+(string)status+&amp;quot;) &amp;quot;+llList2String(ERRORS,llListFindList(ERRORS,[status])+1));&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            else if(status == 200) { //All OK&lt;br /&gt;
                list temp = llParseString2List(body,[&amp;quot;^&amp;quot;],[]); //separate ID from CODE&lt;br /&gt;
                if(llList2String(temp,0) == &amp;quot;&amp;quot;) { //avoid errors.&lt;br /&gt;
                    llOwnerSay(&amp;quot;Empty ID returned.&amp;quot;);&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                ID   = llList2String(temp,0);&lt;br /&gt;
                CODE = llList2String(temp,1);&lt;br /&gt;
                llOwnerSay(&amp;quot;My ID is: '&amp;quot;+ID+&amp;quot;' and CODE: '&amp;quot;+CODE+&amp;quot;' - Touch me to test a request.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else if(id == readRequest)  {&lt;br /&gt;
            if(status &amp;gt;= 900)   { //System returned an error.&lt;br /&gt;
                llOwnerSay(&amp;quot;(&amp;quot;+(string)status+&amp;quot;) &amp;quot;+llList2String(ERRORS,llListFindList(ERRORS,[status])+1));&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            else if(status == 200) {&lt;br /&gt;
                llOwnerSay(&amp;quot;TEST-RESPONSE: &amp;quot;+body);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else if(id == updateRequest)    {&lt;br /&gt;
            if(status &amp;gt;= 900)   { //System returned an error.&lt;br /&gt;
                llOwnerSay(&amp;quot;(&amp;quot;+(string)status+&amp;quot;) &amp;quot;+llList2String(ERRORS,llListFindList(ERRORS,[status])+1));&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            else if(status == 200) { //All OK&lt;br /&gt;
                llOwnerSay(body);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User examples ==&lt;br /&gt;
If you have found a use to this service, share your code here.&lt;/div&gt;</description>
			<pubDate>Thu, 21 Jun 2012 18:06:25 GMT</pubDate>			<dc:creator>Djphil</dc:creator>			<comments>http://digigrids.free.fr/wiki/index.php?title=Discussion:Static_URL%27s_for_HTTP-In_Service</comments>		</item>
	</channel>
</rss>