All pastes #740234 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-10-17 20:00 UTC
rendered paste body
dialog dler {
  title "Downloader"
  size -1 -1 429 126
  option pixels
  edit "Url example: www.google.com", 1, 31 15 97 21, autohs
  edit "File name example: file.zip", 2, 162 15 139 21, autohs
  button "Download", 3, 110 49 75 25
  edit "Messages", 4, 44 91 340 21, read
}
alias dler dialog -md dler dler
on *:dialog:dler:sclick:3: {
  if ($regex($did(1),/(?:http:\/\/)?(?:www\.)?(\w+)\.(\w+)(\/.*)?/i)) {
    if (!$regml(4)) { set %end $chr(47) }
    else { set %end $regml(4) }
    set %host www. $+ $regml(1) $+ . $+ $regml(2)
    sockopen dl %host 80
    did -ra $dname 4 Initializing download...
  }
  else { did -ra $dname 4 Invalid URL }
}
on *:sockopen:dl: {
  did -ra dler 4 Opening connection
  sockwrite -nt $sockname GET %end HTTP/1.1
  sockwrite -nt $sockname Host: %host
  sockwrite -nt $sockname $crlf
}
on *:sockread:dl: {
  if ($sockerr) { did -ra dler 4 Error, closing connection }
  else {
    var %a = 1,%x = $numtok($sock($sockname).mark,32)
    while %a && %x = 0 {
      sockread %a
      if ($regex(%a,/Content\-Length: (\d+)/i)) { set %size $regml(1) }
    }
    sockmark $sockname Done it!
    while $sock($sockname).rq {
      sockread &b
      bwrite $did(dler,2) -1 -1 &b
      did -ra dler 4 $calc(($lof($did(dler,2))) / %size * 100) percent complete
      inc %l
    } 
    if ($file($did(dler,2)).size >= %size) { did -ra dler 4 Download Complete! | sockclose $sockname }
  }
}