LSL HTTP server/examples/fr: Difference between revisions
< LSL HTTP server | examples
Rand Linden (talk | contribs) m moved LSL http server/examples/fr to LSL HTTP server/examples/fr: HTTP is capitalized |
|||
| (11 intermediate revisions by one other user not shown) | |||
| Line 15: | Line 15: | ||
{ | { | ||
if (methode == URL_REQUEST_GRANTED) | if (methode == URL_REQUEST_GRANTED) | ||
llSay(0, "URL : " + corps); | llSay(0, "URL : " + corps); | ||
else if (methode == "GET") | else if (methode == "GET") | ||
llHTTPResponse(id, 200, "Bonjour à tous !"); | llHTTPResponse(id, 200, "Bonjour à tous !"); | ||
} | } | ||
} | } | ||
| Line 38: | Line 34: | ||
{ | { | ||
if (methode == URL_REQUEST_GRANTED) | if (methode == URL_REQUEST_GRANTED) | ||
llSay(0, "URL : " + corps); | llSay(0, "URL : " + corps); | ||
else if (methode == URL_REQUEST_DENIED) | else if (methode == URL_REQUEST_DENIED) | ||
llSay(0, "Quelque chose s'est mal passé, pas d'URL. " + corps); | llSay(0, "Quelque chose s'est mal passé, pas d'URL. " + corps); | ||
else if (methode == "GET") | else if (methode == "GET") | ||
llHTTPResponse(id, 200, "Bonjour à tous !"); | llHTTPResponse(id, 200, "Bonjour à tous !"); | ||
else | else | ||
llHTTPResponse(id, 405, "Méthode pas encore prise en charge."); | llHTTPResponse(id, 405, "Méthode pas encore prise en charge."); | ||
} | } | ||
} | } | ||
| Line 72: | Line 60: | ||
for (j = 0; j < l; ++j) | for (j = 0; j < l; ++j) | ||
llHTTPResponse(llList2Key(requetes, j), 200, corps); | llHTTPResponse(llList2Key(requetes, j), 200, corps); | ||
requetes = []; | requetes = []; | ||
} | } | ||
| Line 88: | Line 75: | ||
{ | { | ||
if (methode == URL_REQUEST_GRANTED) | if (methode == URL_REQUEST_GRANTED) | ||
llSay(0, "URL: " + corps); | |||
llSay(0,"URL: " + | |||
else if (methode == URL_REQUEST_DENIED) | else if (methode == URL_REQUEST_DENIED) | ||
llSay(0, "Et flûte. " + corps); | |||
llSay(0, "Et flûte. " + | else if (methode == "GET") | ||
else if ( | |||
{ | { | ||
if (!detection) | if (!detection) | ||
| Line 102: | Line 85: | ||
detection = TRUE; | detection = TRUE; | ||
} | } | ||
requetes += [ id ]; | requetes += [ id ]; | ||
} | } | ||
else | else | ||
llHTTPResponse(id, 405, "Hein ?"); | llHTTPResponse(id, 405, "Hein ?"); | ||
} | } | ||
no_sensor() | no_sensor() | ||
{ | { | ||
envoie_reponse("C'est désert ici."); | |||
detection = FALSE; | detection = FALSE; | ||
} | } | ||
| Line 119: | Line 100: | ||
sensor(integer n) | sensor(integer n) | ||
{ | { | ||
string | string rapport; | ||
integer i; | integer i; | ||
if (n < 16) | if (n < 16) rapport = "Il y a " + (string) n + " avatars dans le coin:"; | ||
else | else rapport = "C'est la folie ici, il y a au moins 16 avatars dans le coin."; | ||
for (i = 0; i < n; ++i) | for (i = 0; i < n; ++i) | ||
rapport += "\n\t" + llDetectedName(i); | |||
envoie_reponse(rapport); | |||
detection = FALSE; | detection = FALSE; | ||
} | } | ||
| Line 137: | Line 115: | ||
</lsl> | </lsl> | ||
=== | === Presistance de l'URL - compteur de visiteurs === | ||
Un "hello world" plus complet, a une URL en permanence et tient à jour un compteur de visiteurs. | |||
<lsl> | <lsl> | ||
string url; | string url; | ||
integer | integer visites; | ||
initialisation() | |||
{ | { | ||
llSetObjectName("HTTP | llSetObjectName("Serveur HTTP"); | ||
url = ""; | url = ""; | ||
llRequestURL(); | llRequestURL(); | ||
visites = (integer)llGetObjectDesc(); | |||
llSetText((string) | llSetText((string) visites + " visiteurs.", <1,1,0>, 1); | ||
} | } | ||
default | default | ||
{ | { | ||
state_entry() { | state_entry() { initialisation(); } | ||
on_rez(integer n) { | |||
on_rez(integer n) { initialisation(); } | |||
changed(integer c) | changed(integer c) | ||
{ | { | ||
if (c & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT) ) | if (c & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT) ) | ||
initialisation(); | |||
} | } | ||
touch_start(integer n) | touch_start(integer n) | ||
{ | { | ||
llSay(0," | llSay(0, "Mon URL est : " + url); | ||
} | } | ||
http_request(key id, string | http_request(key id, string methode, string corps) | ||
{ | { | ||
if ( | if (methode == URL_REQUEST_GRANTED) | ||
url = corps; | |||
else if (methode == URL_REQUEST_DENIED) | |||
llSay(0, "Souci, pas d'URL. " + corps); | |||
else if (methode == "GET") | |||
{ | { | ||
++visites; | |||
llSetObjectDesc((string) visites); | |||
llSetText((string) visites + " visiteurs.", <1,1,0>, 1); | |||
llHTTPResponse(id, 200, "Bonjour ! Vous êtes le visiteur numéro " + (string) visites + "."); | |||
++ | |||
llSetObjectDesc((string) | |||
llSetText((string) | |||
llHTTPResponse(id,200," | |||
} | } | ||
else | else | ||
llHTTPResponse(id, 405, "Méthode inconnue."); | |||
llHTTPResponse(id,405," | |||
} | } | ||
} | } | ||
</lsl> | </lsl> | ||
{{LSLC|HTTP}}{{LSLC|Examples}} | {{LSLC/fr|HTTP}}{{LSLC/fr|Examples}} | ||
Latest revision as of 12:45, 5 November 2009
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Hello World!
Exemple classique, le plus petit script à base de http_request possible. <lsl> default {
state_entry()
{
llRequestURL();
}
http_request(key id, string methode, string corps)
{
if (methode == URL_REQUEST_GRANTED)
llSay(0, "URL : " + corps);
else if (methode == "GET")
llHTTPResponse(id, 200, "Bonjour à tous !");
}
} </lsl>
Une version légèrement plus robuste : <lsl> default {
state_entry()
{
llRequestURL();
}
http_request(key id, string methode, string corps)
{
if (methode == URL_REQUEST_GRANTED)
llSay(0, "URL : " + corps);
else if (methode == URL_REQUEST_DENIED)
llSay(0, "Quelque chose s'est mal passé, pas d'URL. " + corps);
else if (methode == "GET")
llHTTPResponse(id, 200, "Bonjour à tous !");
else
llHTTPResponse(id, 405, "Méthode pas encore prise en charge.");
}
} </lsl>
Liste de visiteurs
Une liste des visiteurs à portée de détection du serveur.
Notes :
- Comporte une méthode pour gérer des requêtes multiples alors que l'on attend le retour de requêtes asynchrones.
<lsl>integer detection = FALSE;
list requetes;
envoie_reponse(string corps) {
integer l = llGetListLength(requetes); integer j;
for (j = 0; j < l; ++j)
llHTTPResponse(llList2Key(requetes, j), 200, corps);
requetes = [];
}
default {
state_entry()
{
llRequestURL();
}
http_request(key id, string methode, string corps)
{
if (methode == URL_REQUEST_GRANTED)
llSay(0, "URL: " + corps);
else if (methode == URL_REQUEST_DENIED)
llSay(0, "Et flûte. " + corps);
else if (methode == "GET")
{
if (!detection)
{
llSensor("", NULL_KEY,AGENT, 96, PI);
detection = TRUE;
}
requetes += [ id ];
}
else
llHTTPResponse(id, 405, "Hein ?");
}
no_sensor()
{
envoie_reponse("C'est désert ici.");
detection = FALSE;
}
sensor(integer n)
{
string rapport;
integer i;
if (n < 16) rapport = "Il y a " + (string) n + " avatars dans le coin:";
else rapport = "C'est la folie ici, il y a au moins 16 avatars dans le coin.";
for (i = 0; i < n; ++i)
rapport += "\n\t" + llDetectedName(i);
envoie_reponse(rapport);
detection = FALSE;
}
} </lsl>
Presistance de l'URL - compteur de visiteurs
Un "hello world" plus complet, a une URL en permanence et tient à jour un compteur de visiteurs. <lsl> string url; integer visites;
initialisation() {
llSetObjectName("Serveur HTTP");
url = "";
llRequestURL();
visites = (integer)llGetObjectDesc();
llSetText((string) visites + " visiteurs.", <1,1,0>, 1);
}
default {
state_entry() { initialisation(); }
on_rez(integer n) { initialisation(); }
changed(integer c)
{
if (c & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT) )
initialisation();
}
touch_start(integer n)
{
llSay(0, "Mon URL est : " + url);
}
http_request(key id, string methode, string corps)
{
if (methode == URL_REQUEST_GRANTED)
url = corps;
else if (methode == URL_REQUEST_DENIED)
llSay(0, "Souci, pas d'URL. " + corps);
else if (methode == "GET")
{
++visites;
llSetObjectDesc((string) visites);
llSetText((string) visites + " visiteurs.", <1,1,0>, 1);
llHTTPResponse(id, 200, "Bonjour ! Vous êtes le visiteur numéro " + (string) visites + ".");
}
else
llHTTPResponse(id, 405, "Méthode inconnue.");
}
} </lsl>