diff options
-rw-r--r-- | omaha_server/omaha/core.py | 8 | ||||
-rw-r--r-- | omaha_server/omaha/request.xsd | 13 | ||||
-rw-r--r-- | omaha_server/omaha/response.xsd | 2 | ||||
-rw-r--r-- | omaha_server/omaha/tests/fixtures.py | 10 | ||||
-rw-r--r-- | omaha_server/omaha/utils.py | 13 |
5 files changed, 37 insertions, 9 deletions
diff --git a/omaha_server/omaha/core.py b/omaha_server/omaha/core.py index d5a6870..f252501 100644 --- a/omaha_server/omaha/core.py +++ b/omaha_server/omaha/core.py @@ -24,7 +24,7 @@ from datetime import datetime from lxml.builder import E -from omaha.utils import get_sec_since_midnight +from omaha.utils import get_sec_since_midnight, get_days_since_20070101 __all__ = [ @@ -35,10 +35,12 @@ __all__ = [ def Response(apps_list, protocol='3.0', date=None, server='prod'): - elapsed_seconds = get_sec_since_midnight(date or datetime.utcnow()) + date = date or datetime.utcnow() + elapsed_seconds = get_sec_since_midnight(date) + elapsed_days = get_days_since_20070101(date) resp = E.response( dict(protocol=protocol, server=server), - E.daystart(elapsed_seconds=str(elapsed_seconds)), + E.daystart(elapsed_seconds=str(elapsed_seconds), elapsed_days=str(elapsed_days)), ) list(map(resp.append, apps_list)) return resp diff --git a/omaha_server/omaha/request.xsd b/omaha_server/omaha/request.xsd index e9cdeed..5d999fb 100644 --- a/omaha_server/omaha/request.xsd +++ b/omaha_server/omaha/request.xsd @@ -50,6 +50,9 @@ <xs:attribute name='testsource' type='xs:NCName' use="optional"/> <xs:attribute name='dedup' type='xs:NCName' use="optional"/> <xs:attribute name='updaterchannel' type='xs:NCName' use="optional"/> + <xs:attribute name='shell_version' type='xs:string' use="optional"/> + <xs:attribute name='periodoverridesec' type='xs:integer' use="optional"/> + <xs:attribute name='dlpref' type='xs:string' use="optional"/> </xs:complexType> </xs:element> <xs:element name="hw"> @@ -90,7 +93,11 @@ <xs:attribute name='experiments' use='optional' type="xs:string"/> <xs:attribute name='iid' use='optional' type="GuidType"/> <xs:attribute name='installage' use='optional' type='xs:integer'/> + <xs:attribute name='installdate' use='optional' type='xs:integer'/> <xs:attribute name='tag' use='optional' type='xs:string'/> + <xs:attribute name='cohort' use='optional' type='xs:string'/> + <xs:attribute name='cohorthint' use='optional' type='xs:string'/> + <xs:attribute name='cohortname' use='optional' type='xs:string'/> </xs:complexType> </xs:element> <xs:element name='updatecheck'> @@ -108,6 +115,7 @@ <xs:attribute name="extracode1" use="optional" type="xs:integer"/> <xs:attribute name="download_time_ms" use="optional" type="xs:integer"/> <xs:attribute name="downloaded" use="optional" type="xs:integer"/> + <xs:attribute name="downloader" use="optional" type="xs:string"/> <xs:attribute name="total" use="optional" type="xs:integer"/> <xs:attribute name="update_check_time_ms" use="optional" type="xs:integer"/> <xs:attribute name="install_time_ms" use="optional" type="xs:integer"/> @@ -117,6 +125,8 @@ <xs:attribute name="time_since_download_start_ms" use="optional" type="xs:integer"/> <xs:attribute name="nextversion" use="optional" type="xs:integer"/> <xs:attribute name="previousversion" use="optional" type="xs:integer"/> + <xs:attribute name="url" use="optional" type="xs:string"/> + <xs:attribute name="is_bundled" use="optional" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name='ping'> @@ -124,6 +134,9 @@ <xs:attribute name='active' use='optional' type='xs:integer' default="0"/> <xs:attribute name='r' use='optional' type='xs:integer' default="0"/> <xs:attribute name='a' use='optional' type='xs:integer' default="0"/> + <xs:attribute name='rd' use='optional' type='xs:integer' default="-2"/> + <xs:attribute name='ad' use='optional' type='xs:integer' default="-2"/> + <xs:attribute name='ping_freshness' use='optional' type='xs:string' default="0"/> </xs:complexType> </xs:element> <xs:element name="data" type="DataType"/> diff --git a/omaha_server/omaha/response.xsd b/omaha_server/omaha/response.xsd index a81cbfe..72ece40 100644 --- a/omaha_server/omaha/response.xsd +++ b/omaha_server/omaha/response.xsd @@ -18,7 +18,7 @@ <xs:element name="daystart"> <xs:complexType> <xs:attribute name="elapsed_seconds" use="required" type="xs:positiveInteger"/> - <xs:attribute name="elapsed_days" use="optional" type="xs:nonPositiveInteger" default="0"/> + <xs:attribute name="elapsed_days" use="required" type="xs:positiveInteger"/> </xs:complexType> </xs:element> <xs:element name='app'> diff --git a/omaha_server/omaha/tests/fixtures.py b/omaha_server/omaha/tests/fixtures.py index 4be086e..4efdfe5 100644 --- a/omaha_server/omaha/tests/fixtures.py +++ b/omaha_server/omaha/tests/fixtures.py @@ -97,7 +97,7 @@ request_data = b"""<?xml version="1.0" encoding="UTF-8"?> response_update_check_negative = b"""<?xml version="1.0" encoding="UTF-8"?> <response protocol="3.0" server="prod"> - <daystart elapsed_seconds="56508"/> + <daystart elapsed_seconds="56508" elapsed_days="2557"/> <app appid="{430FD4D0-B729-4F61-AA34-91526481799D}" status="ok"> <updatecheck status="noupdate"/> <ping status="ok"/> @@ -110,7 +110,7 @@ response_update_check_negative = b"""<?xml version="1.0" encoding="UTF-8"?> response_update_check_positive = b"""<?xml version="1.0" encoding="UTF-8"?> <response protocol="3.0" server="prod"> - <daystart elapsed_seconds="56508"/> + <daystart elapsed_seconds="56508" elapsed_days="2557"/> <app appid="{430FD4D0-B729-4F61-AA34-91526481799D}" status="ok"> <updatecheck status="noupdate"/> <ping status="ok"/> @@ -136,7 +136,7 @@ response_update_check_positive = b"""<?xml version="1.0" encoding="UTF-8"?> response_event = b"""<?xml version="1.0" encoding="UTF-8"?> <response protocol="3.0" server="prod"> - <daystart elapsed_seconds="56754"/> + <daystart elapsed_seconds="56754" elapsed_days="2557"/> <app appid="{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}" status="ok"> <event status="ok"/> <event status="ok"/> @@ -146,7 +146,7 @@ response_event = b"""<?xml version="1.0" encoding="UTF-8"?> response_data_doc = b"""<?xml version="1.0" encoding="UTF-8"?> <response protocol="3.0" server="prod"> - <daystart elapsed_seconds="56754"/> + <daystart elapsed_seconds="56754" elapsed_days="2557"/> <app appid="{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}" status="ok"> <data index="verboselogging" name="install" status="ok"> app-specific values here @@ -157,7 +157,7 @@ response_data_doc = b"""<?xml version="1.0" encoding="UTF-8"?> response_data = b"""<?xml version="1.0" encoding="UTF-8"?> <response protocol="3.0" server="prod"> - <daystart elapsed_seconds="56754"/> + <daystart elapsed_seconds="56754" elapsed_days="2557"/> <app status="ok" appid="{430FD4D0-B729-4F61-AA34-91526481799D}"> <data status="ok" index="verboselogging" name="install">app-specific values here</data> <data status="ok" name="untrusted"/> diff --git a/omaha_server/omaha/utils.py b/omaha_server/omaha/utils.py index 5be380d..bb164cf 100644 --- a/omaha_server/omaha/utils.py +++ b/omaha_server/omaha/utils.py @@ -47,6 +47,19 @@ def get_sec_since_midnight(date): return delta.seconds +def get_days_since_20070101(date): + """ + Return days since 2007-01-01 + + >>> from datetime import datetime + >>> get_days_since_20070101(datetime(year=2016, month=3, day=4)) + 3350 + """ + date_20070101 = datetime.datetime(year=2007, month=1, day=1, tzinfo=date.tzinfo) + delta = date - date_20070101 + return delta.days + + def get_id(uuid): """ >>> get_id('{8C65E04C-0383-4AE2-893F-4EC7C58F70DC}') |