summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--omaha_server/omaha/core.py8
-rw-r--r--omaha_server/omaha/request.xsd13
-rw-r--r--omaha_server/omaha/response.xsd2
-rw-r--r--omaha_server/omaha/tests/fixtures.py10
-rw-r--r--omaha_server/omaha/utils.py13
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}')