Hur du skriver din egen spidermodul

Hur du skriver din egen spidermodul

Alla förfrågningar om filer som matchar regeln ~%s/%s.lpc%s kommer att spider försöker ladda in filen /users/%s/html/%s.lpc, och anropa funktionen parse i den filen.

Ett exempel är http://www.lysator.liu.se/~cardeci/debug.lpc, som alltså kommer att ladda in filen /users/cardeci/html/debug.lpc, och anropa patch i den filen (Filen finns här nedanför)

Filen /usr/www/spider/logs/debug.log kommer att innehålla alla eventuella kompileringsfel som blir när du försöker ladda ditt object, så ett bra tips är att ha en "tail -f /usr/www/spider/logs/debug.log" körandes i ett fönster.


debug.lpc -- Ett test av spiders modulstöd



function nsocket_close=previous_object()->nsocket_close;
function nsocket_write=previous_object()->nsocket_write;
function nsocket_address=previous_object()->nsocket_address;

function translate_url=previous_object()->is_file_url;

function decode_string=previous_object()->decode_string;



mixed parse(int file_descriptor, string *matches, string url,
            mapping request_info)
{
//  Den här regeln är nästan ett måste, eftersom det annars är stört
//  omöjligt att uppdatera modulen om du ändrar på den
  if(strstr(url, "reload")!=-1)
  {
    update(file_name(this_object()));
    destruct();
    return "<h1>Ok. I will update.</h1>"; //Kommer att bli text/html.
  }

  return ("Hej, " + (request_info["from"] * "") + "." +
          "Jag ser att du just läste " + (request_info["referer"] * "") + "." +
 	  "<p><hr><pre>\n"+			
	  sprintf("Request_info:\n%O", request_info)+
	  "</pre>");
}

För mer info om LPC i allmänhet, fråga gärna mig.