Difference between revisions of "LSL HTTP server/examples"

From Second Life Wiki
Jump to navigation Jump to search
(New page: === Hello World! === Classic example. <lsl> default { state_entry() { llRequestPublicURL(); } http_request(key id, string method, string body) { if (me...)
 
Line 23: Line 23:
             llHTTPResponse(id,200,"Hello World!");
             llHTTPResponse(id,200,"Hello World!");
         }
         }
    }
}
</lsl>
== Visitor List ==
A list of residents within sensor range of the server:
<lsl>
key request_id = NULL_KEY;
default
{
    state_entry()
    {
        llRequestPublicURL();
    }
    http_request(key id, string method, string body)
    {
        llSay(0,method);
        integer handled = FALSE;
        if (method == URL_REQUEST_GRANTED)
        {
            llSay(0,"URL: " + body);
            handled = TRUE;
        }
        else if (method == URL_REQUEST_DENIED)
        {
            llSay(0, "Something went wrong, no url. " + body);
            handled = TRUE;
        }
        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);
            }
            handled = TRUE;
        }
       
        if (!handled)
        {
            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>
</lsl>

Revision as of 16:02, 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: <lsl> key request_id = NULL_KEY;

default {

   state_entry()
   {
       llRequestPublicURL();
   }
   http_request(key id, string method, string body)
   {
       llSay(0,method);
       integer handled = FALSE;
       if (method == URL_REQUEST_GRANTED)
       {
           llSay(0,"URL: " + body);
           handled = TRUE;
       }
       else if (method == URL_REQUEST_DENIED)
       {
           llSay(0, "Something went wrong, no url. " + body);
           handled = TRUE;
       }
       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);
           }
           handled = TRUE;
       }
       
       if (!handled)
       {
           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>