4
4
from email .message import EmailMessage
5
5
from typing import Union , List , Tuple , Dict
6
6
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
+
7
38
class CaptureContext :
8
39
def __init__ (self , json : dict ):
9
40
self ._url = json ['url' ]
@@ -15,6 +46,11 @@ def __init__(self, json: dict):
15
46
self ._sid = json ['sid' ]
16
47
self ._stime = json ['stime' ]
17
48
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 )
18
54
self .shared = json .get ('shared' )
19
55
20
56
def __str__ (self ):
@@ -76,6 +112,11 @@ def uid(self) -> str:
76
112
def env (self ) -> Dict [str , str ]:
77
113
return self ._env
78
114
115
+ # App info, return None means unknown app.
116
+ @property
117
+ def app (self ) -> Union [CaptureApp , None ]:
118
+ return self ._app
119
+
79
120
def toJson (self ) -> str :
80
121
return json .dumps ({
81
122
'url' : self ._url ,
@@ -87,6 +128,7 @@ def toJson(self) -> str:
87
128
'sid' : self ._sid ,
88
129
'stime' : self ._stime ,
89
130
'env' : self ._env ,
131
+ 'app' : self ._app .serialize (),
90
132
'shared' : self .shared ,
91
133
})
92
134
0 commit comments