URL Access Scripting
The following descriptions detail the available URL Access commands (download and upload ) available for scripting.
The download
command downloads a file using either FTP or HTTP to the disk of the
machine running the script. The web file can then be viewed with a
browser locally. Any images, however, are not downloaded with the web
page using HTTP, so you would have to download the images separately
using the download command.
download takes two required parameters: a
string
URL (as in
http://www.parkerriver.com) and a file specification
object to which the script downloads the
file. A file specification
is an AppleScript data
type that represents the name and location of a file before it is
actually saved to the hard disk. In other words, you can create a new
file with the new file scripting addition, which
will have the operating system reserve a unique path for the new
file. The new file osax displays a dialog box
requesting that the user choose a location and name for the new file.
Figure 18-2 shows this new file
dialog window.
The return value for new file is a file specification
object. You can then download a file to this
reserved file path and an actual file is saved to the hard disk with
the prior specified location and name. You have to enclose the
download command in a tell
block targeting the URL Access Scripting application, as in:
tell app "URL Access Scripting" to download¬ "http://129.69.59.34/index.html" to filespec
The rest of the download command’s parameters are optional. The return value of the download command is a reference to the file after it is downloaded:
file "Macintosh HD:Desktop Folder:parkerriver.com"
The following example encloses the download
script in a try/on error/end
try
block to catch any errors that are associated
with the download, including the user clicking the Cancel button on
the new file dialog window. The script also uses
a with
timeout
statement to
give the download command two minutes to
complete its task, before AppleScript raises an
“Apple event timed out” error. By
default, AppleScript gives an application 60 seconds to respond to an
Apple event before the script times out. See Chapter 7
, for more details on
with timeout
.
The following are download
properties:
to
file specification
This property is a required labeled parameter that identifies the
file
specification
object to
which the web page will be downloaded. For example:
download "ftp://www.parkerriver.com/resources.html" to filespec
replacing yes/no
If a file already exists at this location, then replacing yes
replaces that file with the new one, as in:
download "http://my.yahoo.com" to filespec with progress¬ replacing yes
unpacking boolean
If you are downloading a BinHexed and/or stuffed file, then this
labeled parameter (e.g., unpacking true
) attempts
to decode and/or decompress the file. AppleScript uses the Stuffit
Engine extension, which is inside the System
Folder's
Extensions
folder, to decode and decompress files. An example of a file that
would have to be decoded and unstuffed would be a file that has been
encoded using the BinHex protocol and compressed using Aladdin
Stuffit. These files sometimes have suffixes such as
“afile.sit.hqx.”
progress boolean
We all know that downloading web files with FTP or HTTP, particularly
those that involve some server-side processing, can be a tricky and
lengthy process. This parameter requests the display of a progress
bar during the web-file download, which is a good idea. A progress
bar is a horizontal cylinder shape that gradually fills with solid
color as a task is executed. Figure 18-3 shows the
progress bar. Just add a with progress
to your
download command:
download "http://www.highendDesign.com/index.html" to filespec¬ with progress
The progress bar includes a Stop button that causes AppleScript to quit the script (with error number -128) containing the download command if the user clicks the button.
form data
string
You can post some data to a Common Gateway Interface script on the
Web with the optional parameter form data
. This
would be the equivalent of a web user filling out a form and
submitting it to a CGI script on a web server. A CGI script
intercepts web data on a server and processes it in some way (such as
storing the user data in a database) before sending back a response
page to the user. The following is an example use of the
download command with the with data
parameter:
tell application "URL Access Scripting" to download URLstr to¬ filespec form data "username=adminenter&password=mypass#$"¬ with progress
The with data
parameter is a URL-encoded string,
in other words, one or more name/value pairs (e.g.,
firstname=Bruce
) separated by a
“&” character.
directory listing boolean
This true
/false
value is
designed to download a directory listing using FTP. The result is a
text file in which each line is of the form
“-rw-rw-rw- 1 owner group 17 Oct 29 1998
myfile.txt.” An example of using this labeled
parameter is:
download "ftp://www.parkerriver.com" to filespec with¬ directory listing, authentication and progress
download directory
boolean
This true
/false
value is
designed to download a directory of files using FTP. With this
parameter, the script should download the files to a folder alias
:
alias "Macintosh HD:Desktop Folder:WebFiles"
An example of using this labeled parameter is:
download "ftp://www.parkerriver.com" to folder_alias with¬ download directory, authentication and progress
authentication boolean
This optional parameter displays a dialog box asking for a username and password, if the web server requires authentication for FTP and HTTP requests. Figure 18-4 shows this authentication window. An example of using this parameter is:
tell app "URL Access Scripting" to download¬ "ftp://my.yahoo.com" to filespec with authentication try -- catch any errors caused during the download (* get a file specification first, and optionally give the new file a default name *) set filespec to new file with prompt¬ "Choose a location for the Web file" default name¬ "resources.html" with timeout of 120 seconds (* give the download command two minutes before the Apple Event times out *) tell application "URL Access Scripting" to download¬ "ftp://www.parkerriver.com/resources.html" to¬ filespec with progress and authentication end timeout on error errmesg number errNum if errNum is -128 then (* if the user cancels the file dialog or the progress dialog *) display dialog "You quit before downloading a file: the applet " &¬ "will quit now." else display dialog (errNum as text) & ": " & errmesg &¬ return & return & "An error occurred during the " &¬ "download. Try running the applet again." end if end try
Use this command if you want your
script to upload a file or a directory of files with FTP. Like the
download command, you can optionally provide a
username and password for authentication (usually required for FTP
uploads) and display a progress-bar window. If your script is
uploading an entire directory of files, you can use the
choose folder scripting addition to allow the
script user to choose the directory to upload. choose
folder returns an alias
to the folder
that the user chooses. You can then use this alias
as a parameter to the upload command:
tell app "URL Access Scripting" to upload folder_alias to¬ "ftp:// www. mysite.org" with authentication
You have to enclose the upload command in a
tell
statement targeting the URL Access Scripting
application. Chapter 7
describes the tell
statement.
to string
Provide the receiving server with this URL string
,
as in “ftp://www.parkerriver.com”.
You have to include the protocol
(“ftp://”) part of the URL. An
example is:
upload myfile to "ftp://www.mysite.org"
replacing yes/no
If a version of the uploaded file already exists on the server, then
the upload-command default is replacing no
. If you
want to replace any existing files, use:
upload myfile to "ftp://www.mysite.org" replacing yes
progress boolean
Display a progress bar for longer tasks such as uploading a directory of files. For example:
upload myfolder to "ftp://www.mysite.org/newfiles/" with¬ authentication and progress
The default value for this parameter is false
.
binhexing
boolean
The default value for the binhexing parameter is
true
. This encodes the uploaded files for safer
transfer across the network. If you do not want to binhex the files,
use binhexing false
in your
upload command:
upload myfile to "ftp://www.mysite.org" replacing yes¬ binhexing false
upload directory
boolean
This true
/false
parameter
uploads an entire directory of files. An example of using the upload
directory parameter is:
tell application "URL Access Scripting" to (upload fol_alias¬ to "ftp://www.parkerriver.com/" with progress,¬ upload directory and authentication)
This parameter is false
by default.
authentication
boolean
Many FTP sites require the user to be authenticated with the username
and password before they are allowed to upload any files or
directories. If you use authentication true
or
with authentication
with your
upload command, then the script will display an
authentication dialog window that looks like Figure 18-4. This parameter is false
by
default. For example:
tell application "URL Access Scripting" try -- catch any upload errors set fil to (choose file with prompt¬ "Choose a file to upload") set bool to (upload fil to¬ "ftp://www.parkerriver.com/" with authentication and¬ progress) on error errmesg number errnum if errnum is not -128 then display dialog (errnum as text) & ": " & errmesg &¬ return & return & "Applet quitting." return end if end try end tell