transfer server

Robert Olson olson at mcs.anl.gov
Thu Feb 20 16:31:37 CST 2003


the refactored transfer server should do what you want now. I'm waiting to 
commit changes until ivan gets his fixes in, but here is what the code will 
sort of look lke (from teh bottom of the datastore module).

What you'd do is define a handler class that answers GetDownloadFilename 
with the pathname of the things you want to export. The URLs to those 
things are generated by calling the GetDownloadDescriptor method on the 
transfer server. You'll need to register a prefix for your downloads like I 
do below.

If you have CanUploadFile return 0 and GetUploadFilename returnm, upload 
attempts will fail.

--bob


     s = GSIHTTPTransferServer(('', 9011))

     class Handler:
         def GetDownloadFilename(self, id_token, url_path):
             print "Get download: id='%s' path='%s'" % (id_token, url_path)
             return r"c:\temp\junoSetup.exe"

         def GetUploadFilename(self, id_token, file_info):
             print "Get upload filename for %s %s" % (id_token, file_info)
             return os.path.join("c:\\", "temp", "uploads", file_info['name'])

         def CanUploadFile(self, id_token, file_info):
             print "CanUpload: id=%s file_info=%s" % (id_token, file_info)
             return 1

         def AddPendingUpload(self, id_token, filename):
             print "AddPendingUpload: %s %s" % (id_token, filename)

         def CompleteUpload(self, id_token, file_info):
             print "CompleteUpload %s %s" % (id_token, file_info)

     prefix = "test"
     s.RegisterPrefix(prefix, Handler())

     print s.GetDownloadDescriptor(prefix, "JunoSetup.exe")
     print s.GetUploadDescriptor(prefix)

     s.run()

     try:
         while 1:
             time.sleep(.1)

     except:
         os._exit(0)




More information about the ag-dev mailing list