home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / AACD / Online / AWebScripts / DL.awebrx < prev    next >
Text File  |  1999-11-25  |  3KB  |  147 lines

  1. /*    $VER: Download.awebrx 1.4 (23.11.99) by Jorma Oksanen <tenu@sci.fi>
  2.  
  3.     Downloads files without requester
  4.  
  5.  
  6.     Setup:
  7.         GUI/Menus/ARexx
  8.  
  9.         Set Download options
  10.         RUN AWeb3:Plugins/DL.awebrx set
  11.  
  12.  
  13.         GUI/Popup/Link
  14.  
  15.         Download
  16.         RUN AWeb3:Plugins/DL.awebrx u=%u;d="DL:AWeb";m=5
  17.  
  18.     Possible arguments are:
  19.  
  20.     set         Set new dowload directory and/or default action.
  21.             If you give other arguments, they are set as
  22.             defaults, otherwise you will be asked for the
  23.             download directory and the default mode.
  24.             URL given is ignored.
  25.  
  26.     u="<url>"    Download URL to download directory
  27.  
  28.     d="<dir>"    Download URL to specified directory. This
  29.             doesn't change the default directory.
  30.  
  31.     m=n        Set default action for already existing file.
  32.             This doesn't change the default mode.
  33.  
  34.                 0 = Requester        3 = New name
  35.                 1 = Overwrite        4 = Auto Rename
  36.                 2 = Append        5 = Skip
  37. */
  38.  
  39. options results
  40. parse arg args
  41.  
  42. cname='AWebDL-opt'
  43.  
  44. u=''; d=''; m=0
  45. interpret getclip(cname)
  46.  
  47. set=abbrev(upper(args)' ','SET '); if set then args=substr(args,5)
  48.  
  49. interpret args
  50.  
  51. /* Ask download directory if not already set or if asked to do so */
  52.  
  53. if (d='')|(set) then do
  54.  
  55.  if d='' then do
  56.   'getcfg savepath var d'
  57.   if verify(right(d,1),":/") then d=d'/'
  58.  end
  59.  if (~set)|((set)&(args='')) then do
  60.   'requestfile "Set DL directory" file "'d'" savemode dirsonly'
  61.   if rc=5 then exit
  62.   d=result
  63.  end
  64.  
  65.  if (set)&(args='') then do
  66.   'request "DL" "Select default action for already existing files" "_Requester|_Overwrite|_Append|_New name|Auto _Rename|_Skip"'
  67.   if rc=5 then m=5
  68.   else m=result-1
  69.  end
  70.  
  71.  call setclip(cname,'m='m';d="'d'"')
  72.  
  73.  if set then exit
  74. end
  75.  
  76. if right(u,1)='/' then file='index.html'
  77. else do
  78.  file=translate(u,' ','/')
  79.  file=word(translate(word(file,words(file)),' ','#'),1)
  80. end
  81.  
  82. file=d||purify(file)
  83. app=''
  84.  
  85. /* rename until unique name */
  86.  
  87. if exists(file) then file=req(m,file)
  88.  
  89. 'load "'u'" saveas "'file'"' app
  90.  
  91. exit
  92.  
  93. /* Quote wildcard chars */
  94.  
  95. Purify: procedure
  96. return translate(arg(1),'','`~"=#?/:;\*%()[]<>'||"'")
  97.  
  98.  
  99. /* Return filename for saving */
  100.  
  101. req: procedure expose app
  102. parse arg m,file
  103.  
  104. if m=5 then exit            /* cancel */
  105.  
  106. ok=0
  107. do until ok
  108.  
  109.  if m=0 then do
  110.   'request "DL" "'file'*nalready exists!" "_Overwrite|_Append|_New name|Auto _Rename|_Cancel"'
  111.   if rc=5 then exit
  112.  end
  113.  else do
  114.   result=m
  115.   m=0
  116.  end
  117.  
  118.  select
  119.   when result=1 then ok=1        /* overwrite */
  120.  
  121.   when result=2 then do         /* append */
  122.    app='append'; ok=1
  123.   end
  124.  
  125.   when result=3 then do            /* new name */
  126.    'requestfile "DL - select new file name" file' file 'savemode'
  127.    if rc=5 then exit
  128.    file=result; ok=~exists(file)
  129.   end
  130.  
  131.   when result=4 then do            /* rename */
  132.    file=auto(file); ok=1
  133.   end
  134.  
  135.   otherwise nop
  136.  
  137.  end
  138. end
  139.  
  140. return file
  141.  
  142.  
  143. auto: procedure
  144.  
  145. do i=2 while exists(arg(1)'.'i); end
  146. return arg(1)'.'i
  147.