Difference between revisions of "User:Opensource Obscure/http/snurl-sample"
m |
|||
Line 41: | Line 41: | ||
// | // ask a new URL | ||
setup() | setup() | ||
{ | { | ||
Line 49: | Line 49: | ||
// | // HTTP response | ||
send_response(key id, string body) | send_response(key id, string body) | ||
{ | { | ||
Line 56: | Line 56: | ||
// | // NOT USED | ||
generate_snurl(string testo) | generate_snurl(string testo) | ||
{ | { | ||
Line 68: | Line 66: | ||
} | } | ||
// | // used everytime the script resets | ||
// | // it calls snurl.com APIs and it tells its new long URL. then, I call the short URL + parameters | ||
update_snurl(string testo) | update_snurl(string testo) | ||
{ | { | ||
Line 83: | Line 81: | ||
// | // do something | ||
fa(key id, string asd) | fa(key id, string asd) | ||
{ | { | ||
Line 108: | Line 106: | ||
// do something else | |||
altro(integer value) | altro(integer value) | ||
{ | { | ||
Line 227: | Line 226: | ||
// | // this happens after setup() | ||
http_request(key id, string method, string body) | http_request(key id, string method, string body) | ||
{ | { | ||
// | // we got a new URL | ||
if (method == URL_REQUEST_GRANTED) | if (method == URL_REQUEST_GRANTED) | ||
{ | { | ||
url = body; | url = body; | ||
//generate_snurl(url); // | //generate_snurl(url); // not used | ||
update_snurl(url); | update_snurl(url); | ||
} | } | ||
Line 263: | Line 262: | ||
// | // tell some info | ||
http_response(key request_id, integer status, list metadata, string body) | http_response(key request_id, integer status, list metadata, string body) | ||
{ | { | ||
Line 279: | Line 275: | ||
// llWhisper(0, "... " + (string)length); // debug length | // llWhisper(0, "... " + (string)length); // debug length | ||
nome = llGetSubString(body,i+4,i+llStringLength("<id>")+21); | nome = llGetSubString(body,i+4,i+llStringLength("<id>")+21); | ||
llInstantMessage(mykey, " | llInstantMessage(mykey, "i'm " + url + " - that is " + nome); // debug | ||
} | } | ||
} else | } else |
Revision as of 13:52, 20 July 2009
This building changes its colors according to this panel control: http://open.myartsonline.com/http-in/control.php
Feel free to visit, change the colors and warn me if it doesn't work! SLURL
Here are the LSL scripts. For the HTML, look the web page source
first script - it manages HTTP calls and talks to snurl.com in order to keep stable its snurl.com short url
<lsl>
// first, create a short URL via snurl.com website // any web address will work // your short URL will be like this: http://snurl.com/WHATEVER string snurlnick = "WHATEVER"; // change this!
key mykey = "YOUR-SL-UUID"; // YOUR SL UUID
string user = "YOUR-SNURL-USERNAME"; string api_key = "YOUR-SNURL-API-KEY";
// this script sends a chat message to 3 private channels // here are 3 channels integer chan1 = -20241; integer chan2 = -20242; integer chan3 = -20243;
string url;
string query;
string nome;
string baseurl = "http://snipr.com/site/getsnip";
string t1 = "my address is ";
key requestid;
integer status = FALSE;
list requests;
vector pos_orig;
// ask a new URL
setup()
{
url = ""; llRequestURL();
}
// HTTP response
send_response(key id, string body)
{
llHTTPResponse(id, 200, body);
}
// NOT USED
generate_snurl(string testo)
{
query = "sniplink=" + llEscapeURL(testo) + "&snipuser=" + user + "&snipapi=" + api_key + "&snipnick=" + snurlnick; requestid = llHTTPRequest(baseurl,[HTTP_METHOD,"POST", HTTP_MIMETYPE,"application/x-www-form-urlencoded"],query);
}
// used everytime the script resets
// it calls snurl.com APIs and it tells its new long URL. then, I call the short URL + parameters
update_snurl(string testo)
{
query = "sniplink=" + llEscapeURL(testo) + "&snipuser=" + user + "&snipapi=" + api_key + "&snipaction=UPDATE" + "&snipcurrentnick=" + snurlnick + "&snipresetcount="; requestid = llHTTPRequest(baseurl,[HTTP_METHOD,"POST", HTTP_MIMETYPE,"application/x-www-form-urlencoded"],query);
}
// do something
fa(key id, string asd)
{
string a = llUnescapeURL(asd); send_response(id, a); list variabili = llParseString2List(asd, ["color1=", "&color2=","&color3=", "&rez=", "&a="], [""]); string color1 = llUnescapeURL(llList2String(variabili, 0)); string color2 = llUnescapeURL(llList2String(variabili, 1)); string color3 = llUnescapeURL(llList2String(variabili, 2)); integer rez = (integer)llUnescapeURL(llList2String(variabili, 3)); string messaggio = llUnescapeURL(llList2String(variabili, 4)); llSay(chan1, (string)sbColorConvert(color1)); llSay(chan2, (string)sbColorConvert(color2)); llSay(chan3, (string)sbColorConvert(color3)); llSetPrimitiveParams([ PRIM_COLOR, ALL_SIDES, (vector)color1, 1.0 ]); altro(rez); if(messaggio) { llSay(0, messaggio); }
}
// do something else
altro(integer value)
{
if(value) { string a = llGetInventoryName(INVENTORY_OBJECT,0); llSay(0, "rezzo " + a); llRezObject(a, pos_orig + <0,0,1>, <0,0,0>, <0,0,0,0>, 1); }
}
list lstHTML = [
"aliceblue", 0xf0f8ff, "antiquewhite", 0xfaebd7, "aqua", 0x00ffff, "aquamarine", 0x7fffd4, "azure", 0xf0ffff, "beige", 0xf5f5dc, "bisque", 0xffe4c4, "black", 0x000000, "blanchedalmond", 0xffebcd, "blue", 0x0000ff, "blueviolet", 0x8a2be2, "brown", 0xa52a2a, "burlywood", 0xdeb887, "cadetblue", 0x5f9ea0, "chartreuse", 0x7fff00, "chocolate", 0xd2691e, "coral", 0xff7f50, "cornflowerblue", 0x6495ed, "cornsilk", 0xfff8dc, "crimson", 0xdc143c, "cyan", 0x00ffff, "darkblue", 0x00008b, "darkcyan", 0x008b8b, "darkgoldenrod", 0xb8860b, "darkgray", 0xa9a9a9, "darkgreen", 0x006400, "darkkhaki", 0xbdb76b, "darkmagenta", 0x8b008b, "darkolivegreen", 0x556b2f, "darkorange", 0xff8c00, "darkorchid", 0x9932cc, "darkred", 0x8b0000, "darksalmon", 0xe9967a, "darkseagreen", 0x8fbc8f, "darkslateblue", 0x483d8b, "darkslategray", 0x2f4f4f, "darkturquoise", 0x00ced1, "darkviolet", 0x9400d3, "deeppink", 0xff1493, "deepskyblue", 0x00bfff, "dimgray", 0x696969, "dodgerblue", 0x1e90ff, "firebrick", 0xb22222, "floralwhite", 0xfffaf0, "forestgreen", 0x228b22, "fuchsia", 0xff00ff, "gainsboro", 0xdcdcdc, "ghostwhite", 0xf8f8ff, "gold", 0xffd700, "goldenrod", 0xdaa520, "gray", 0x808080, "green", 0x008000, "greenyellow", 0xadff2f, "honeydew", 0xf0fff0, "hotpink", 0xff69b4, "indianred", 0xcd5c5c, "indigo", 0x4b0082, "ivory", 0xfffff0, "khaki", 0xf0e68c, "lavender", 0xe6e6fa, "lavenderblush", 0xfff0f5, "lawngreen", 0x7cfc00, "lemonchiffon", 0xfffacd, "lightblue", 0xadd8e6, "lightcoral", 0xf08080, "lightcyan", 0xe0ffff, "lightgoldenrodyellow", 0xfafad2, "lightgrey", 0xd3d3d3, "lightgreen", 0x90ee90, "lightpink", 0xffb6c1, "lightsalmon", 0xffa07a, "lightseagreen", 0x20b2aa, "lightskyblue", 0x87cefa, "lightslategray", 0x778899, "lightsteelblue", 0xb0c4de, "lightyellow", 0xffffe0, "lime", 0x00ff00, "limegreen", 0x32cd32, "linen", 0xfaf0e6, "magenta", 0xff00ff, "maroon", 0x800000, "mediumaquamarine", 0x66cdaa, "mediumblue", 0x0000cd, "mediumorchid", 0xba55d3, "mediumpurple", 0x9370d8, "mediumseagreen", 0x3cb371, "mediumslateblue", 0x7b68ee, "mediumspringgreen", 0x00fa9a, "mediumturquoise", 0x48d1cc, "mediumvioletred", 0xc71585, "midnightblue", 0x191970, "mintcream", 0xf5fffa, "mistyrose", 0xffe4e1, "moccasin", 0xffe4b5, "navajowhite", 0xffdead, "navy", 0x000080, "oldlace", 0xfdf5e6, "olive", 0x808000, "olivedrab", 0x6b8e23, "orange", 0xffa500, "orangered", 0xff4500, "orchid", 0xda70d6, "palegoldenrod", 0xeee8aa, "palegreen", 0x98fb98, "paleturquoise", 0xafeeee, "palevioletred", 0xd87093, "papayawhip", 0xffefd5, "peachpuff", 0xffdab9, "peru", 0xcd853f, "pink", 0xffc0cb, "plum", 0xdda0dd, "powderblue", 0xb0e0e6, "purple", 0x800080, "red", 0xff0000, "rosybrown", 0xbc8f8f, "royalblue", 0x4169e1, "saddlebrown", 0x8b4513, "salmon", 0xfa8072, "sandybrown", 0xf4a460, "seagreen", 0x2e8b57, "seashell", 0xfff5ee, "sienna", 0xa0522d, "silver", 0xc0c0c0, "skyblue", 0x87ceeb, "slateblue", 0x6a5acd, "slategray", 0x708090, "snow", 0xfffafa, "springgreen", 0x00ff7f, "steelblue", 0x4682b4, "tan", 0xd2b48c, "teal", 0x008080, "thistle", 0xd8bfd8, "tomato", 0xff6347, "turquoise", 0x40e0d0, "violet", 0xee82ee, "wheat", 0xf5deb3, "white", 0xffffff, "whitesmoke", 0xf5f5f5, "yellow", 0xffff00, "yellowgreen", 0x9acd32 ];
vector sbColorConvert(string strData) {
integer mode = llListFindList(lstHTML, [llToLower(strData)]); integer intColor = 0; if (~mode) { intColor = llList2Integer(lstHTML, mode | 1); mode = 8; } else { string strStart = llGetSubString(strData, 0, 1); if (strStart != "0x") { if (llGetSubString(strStart, 0, 0) == "#") { strData = "0x" + llDeleteSubString(strData, 0, 0); } else { vector vecColor = (vector)("<"+strData+">"); if (vecColor) { return (vector)("<"+strData+">") / 255; } strData = "0x" + strData; } } intColor = (integer)strData; mode = llStringLength(strData); } if (mode == 8) {//RRGGBB return <(intColor >> 16) & 0xFF, (intColor >> 8) & 0xFF, (intColor & 0xFF)> / 0xFF; } else if (mode == 5) {//RGB (an HTML color format) return <(intColor >> 8) & 0xF, (intColor >> 4) & 0xF, (intColor & 0xF)> / 0xF; } return ZERO_VECTOR;//black
}
default {
state_entry() { setup(); pos_orig = llGetPos(); } on_rez(integer n) { setup(); }
changed(integer c) { if (c & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT) ) { setup(); } }
// this happens after setup()
http_request(key id, string method, string body) { // we got a new URL if (method == URL_REQUEST_GRANTED) { url = body; //generate_snurl(url); // not used update_snurl(url); } else if (method == URL_REQUEST_DENIED) { llInstantMessage(mykey, "Something went wrong, no url. " + body); } // script gets called - e.g. link pressed on a web page // do something (apologize for funny var names) else if (method == "GET") { string asd = llGetHTTPHeader(id, "x-query-string"); fa(id,asd); } else { llHTTPResponse(id,405,"Unsupported method."); } }
// comunico gli URL dello script
touch_start(integer total_number) { llInstantMessage(mykey, "my url is " + url + " - that is " + nome); }
// tell some info
http_response(key request_id, integer status, list metadata, string body) { integer i; if (request_id == requestid) { integer i = llSubStringIndex(body,"<id>"); integer j = llSubStringIndex(body,"</id>"); integer length = j - i; if ( i != -1 ) { // llWhisper(0, "... " + (string)length); // debug length nome = llGetSubString(body,i+4,i+llStringLength("<id>")+21); llInstantMessage(mykey, "i'm " + url + " - that is " + nome); // debug } } else llInstantMessage(mykey, (string)status+" error"); }
}
</lsl>
second script - it listens to the first script and it changes the prim color
<lsl> default {
state_entry() { llListen(-20241, "", "", ""); } listen(integer chan, string name, key id, string msg) { llSetLinkColor(-1, (vector)msg, ALL_SIDES); }
} </lsl>
third and fourth script - see second script and change chat channel to 20242 and 20243