44from email .message import EmailMessage
55from typing import Union , List , Tuple , Dict
66
7+ class CaptureApp :
8+ def __init__ (self , json : dict ):
9+ self ._name = json ['name' ]
10+ self ._id = json .get ('id' )
11+ self ._path = json .get ('path' )
12+
13+ # The app's name.
14+ @property
15+ def name (self ) -> str :
16+ return self ._name
17+
18+ # The app unique id, such as `bundleId`, `packageName`.
19+ # return None if not detected.
20+ @property
21+ def id (self ) -> Union [str , None ]:
22+ return self ._id
23+
24+ # The app installed path.
25+ # return None if not detected.
26+ @property
27+ def path (self ) -> Union [str , None ]:
28+ return self ._path
29+
30+ # Serialize the app info to a dict.
31+ def serialize (self ) -> dict :
32+ return {
33+ 'name' : self ._name ,
34+ 'id' : self ._id ,
35+ 'path' : self ._path ,
36+ }
37+
738class CaptureContext :
839 def __init__ (self , json : dict ):
940 self ._url = json ['url' ]
@@ -15,6 +46,11 @@ def __init__(self, json: dict):
1546 self ._sid = json ['sid' ]
1647 self ._stime = json ['stime' ]
1748 self ._env = json .get ('env' )
49+ app = json .get ('app' )
50+ if app is None :
51+ self ._app = None
52+ else :
53+ self ._app = CaptureApp (app )
1854 self .shared = json .get ('shared' )
1955
2056 def __str__ (self ):
@@ -76,6 +112,11 @@ def uid(self) -> str:
76112 def env (self ) -> Dict [str , str ]:
77113 return self ._env
78114
115+ # App info, return None means unknown app.
116+ @property
117+ def app (self ) -> Union [CaptureApp , None ]:
118+ return self ._app
119+
79120 def toJson (self ) -> str :
80121 return json .dumps ({
81122 'url' : self ._url ,
@@ -87,6 +128,7 @@ def toJson(self) -> str:
87128 'sid' : self ._sid ,
88129 'stime' : self ._stime ,
89130 'env' : self ._env ,
131+ 'app' : self ._app .serialize (),
90132 'shared' : self .shared ,
91133 })
92134
0 commit comments