home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 February / PCWorld_2001-02_cd.bin / Software / Vyzkuste / visirc / fetch.vsc < prev    next >
Text File  |  1997-08-29  |  2KB  |  44 lines

  1. // FETCH.VSC (Version 1.10) - Usage: /fetch url
  2. // A great little script to grab files off the Web.
  3. //
  4. // Example: /fetch http://www.megalith.co.uk/vircblu3.jpg
  5. //
  6. // This script demonstrates how to "hijack" a TDCC file transfer socket and
  7. // send a GET request to a web server. V97 is totally unaware of this, and
  8. // downloads the file as if it was a regular file being received by TDCC.
  9. // This script also demonstrates some rather complex use of the list
  10. // manipulation functions to parse a URL into its different components.
  11.  
  12. Alias FETCH
  13.   @l $url = $listSplit(/ $1-)
  14.   @l $protocol = $listIndex(0 $url)
  15.   if ([$protocol] != [http:])
  16.      TextOut > . clRed *** I can only fetch files from http sites at the moment!!
  17.      Halt
  18.   endif
  19.   @l $site = $listIndex(2 $url)
  20.   @l $wholefile = $listJoin(/ $listRange(3 $listElementCount($url) $url))
  21.   @l $file = $listIndex($($listElementCount($url) - 1) $url)
  22.   TextOut > . clBlue *** Fetching file \b$file\b from \b$site\b ...
  23.   SimulateServerData :www!www@$site PRIVMSG $N :\ADCC TSEND $file $dns($site) 80\A
  24.   @l $socket = $MapObject(*TGET/www/$file:DCCSocket)
  25.   @l $status = $MapObject(*TGET/www/$file:txStatus)
  26.   TextOut > . clBlack $socket $status
  27.  
  28.   // We need to wait until the socket has actually connected before sending the
  29.   // GET request.
  30.   TextOut > . clBlue *** Waiting for socket to connect ...
  31.   @l $stime = $mtime()
  32.   while ([$prop($status.Caption)] != [Transferring ...])
  33.     Yield
  34.     // Check that the DCC form hasn't closed due to an error.
  35.     if (!($MappedObjectExists(*TGET/www/$file)))
  36.        TextOut > . clRed *** An error occurred while connecting to \b$site\b.
  37.        Halt
  38.     endif
  39.   endwhile
  40.  
  41.   $socket.SendCRLF GET /$wholefile
  42.   TextOut > . clBlue *** Transferring ...
  43. EndAlias
  44.