00001
00002
00003
00004
00005
00006 import sys, time
00007 from ZSI.ServiceContainer import AsServer
00008 from DateService_server import simple_Date_Service as _DateService
00009
00010 class Service(_DateService):
00011 def soap_getCurrentDate(self, ps):
00012 request,response = _DateService.soap_getCurrentDate(self, ps)
00013 response.Today = today = response.new_today()
00014 request._input
00015 _SetCurrentDate(today)
00016 return request,response
00017
00018 def soap_getDate(self, ps):
00019 request,response = _DateService.soap_getDate(self, ps)
00020 response.Day = day = response.new_day()
00021 _SetDay(day, offset=request.Offset,
00022 date=request.Someday)
00023 return request,response
00024
00025
00026
00027 def _SetCurrentDate(today):
00028 dt = time.localtime(time.time())
00029 today.Year = dt[0]
00030 today.Month = dt[1]
00031 today.Day = dt[2]
00032 today.Hour = dt[3]
00033 today.Minute = dt[4]
00034 today.Second = dt[5]
00035 today.Weekday = dt[6]
00036 today.DayOfYear = dt[7]
00037 today.Dst = dt[8]
00038
00039 def _SetDay(someDay, offset=None, date=None):
00040 sec = 3600 * 24
00041 providedDate_tuple = (date._year, date._month, date._day,
00042 date._hour, date._minute, date._second,
00043 date._weekday, date._dayOfYear, date._dst)
00044 providedDate_sec = time.mktime(providedDate_tuple)
00045 offset_sec = sec * offset
00046 newDate_sec = providedDate_sec + offset_sec
00047 newDate_tuple = time.localtime(newDate_sec)
00048 if not offset:
00049 offset = 0
00050
00051 if not date:
00052 raise RuntimeError, "Date is required"
00053
00054 someDay._year = newDate_tuple[0]
00055 someDay._month = newDate_tuple[1]
00056 someDay._day = newDate_tuple[2]
00057 someDay._hour = newDate_tuple[3]
00058 someDay._minute = newDate_tuple[4]
00059 someDay._second = newDate_tuple[5]
00060 someDay._weekday = newDate_tuple[6]
00061 someDay._dayOfYear = newDate_tuple[7]
00062 someDay._dst = newDate_tuple[8]
00063 return someDay
00064
00065
00066 if __name__ == "__main__" :
00067 port = int(sys.argv[1])
00068 AsServer(port, (Service('test'),))