Posted to tcl by aspect at Tue Oct 28 13:31:56 GMT 2014view raw

  1. package require http
  2. package require tls
  3. http::register https 443 ::tls::socket
  4.  
  5. http::config -useragent poop
  6.  
  7. # -- simple wrapper for http::geturl
  8. proc geturl {url} {
  9. puts "Trying $url ..."
  10. set tok [::http::geturl $url]
  11. try {
  12. upvar 1 $tok state
  13. if {[set status [::http::status $tok]] ne "ok"} {
  14. error $status
  15. }
  16. if {[dict exists [::http::meta $tok] Location]} {
  17. tailcall geturl [dict get [::http::meta $tok] Location]
  18. }
  19. return [::http::data $tok]
  20. } finally {
  21. ::http::cleanup $tok
  22. }
  23. }
  24.  
  25. set tar [geturl http://sourceforge.net/projects/tcl/files/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz/download]
  26. puts [string length $tar]
  27.  
  28. return
  29. ## output:
  30.  
  31. Trying http://sourceforge.net/projects/tcl/files/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz ...
  32. Trying http://sourceforge.net/projects/tcl/files/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz/download ...
  33. Trying http://downloads.sourceforge.net/project/tcl/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz?r=&ts=1414503080&use_mirror=aarnet ...
  34. Trying http://aarnet.dl.sourceforge.net/project/tcl/Tcl/8.6.3/tk8.6.3rc1-src.tar.gz ...
  35. 4257787
  36.