1
1
import Foundation
2
2
3
3
class Event {
4
- var action : String
5
- var url : String
6
- var urlref : String
7
- var data : Dictionary < String , Any > !
8
- var metadata : ParselyMetadata ?
9
- var idsite : String
10
- var extra_data : Dictionary < String , Any > ?
11
- var session_id : Int ?
12
- var session_timestamp : UInt64 ?
13
- var session_url : String ?
14
- var session_referrer : String ?
15
- var last_session_timestamp : UInt64 ?
16
- var parsely_site_uuid : String ?
17
- var rand : UInt64 !
4
+ let action : String
5
+ let url : String
6
+ let urlref : String
7
+ let metadata : ParselyMetadata ?
8
+ let idsite : String
9
+ let extra_data : Dictionary < String , Any >
10
+ private( set) var session_id : Int ?
11
+ private( set) var session_timestamp : UInt64 ?
12
+ private( set) var session_url : String ?
13
+ private( set) var session_referrer : String ?
14
+ private( set) var last_session_timestamp : UInt64 ?
15
+ private( set) var parsely_site_uuid : String ?
16
+ let rand : UInt64
18
17
19
18
init ( _ action: String ,
20
19
url: String ,
@@ -33,14 +32,14 @@ class Event {
33
32
self . urlref = urlref ?? " "
34
33
self . idsite = idsite
35
34
self . metadata = metadata
36
- self . extra_data = extra_data
35
+ self . extra_data = extra_data ?? [ : ]
37
36
self . session_id = session_id
38
37
self . session_timestamp = session_timestamp
39
38
self . session_url = session_url
40
39
self . session_referrer = session_referrer
41
40
self . last_session_timestamp = last_session_timestamp
41
+ // Note that, while this value will likely always be different at runtime, is not truly random.
42
42
self . rand = Date ( ) . millisecondsSince1970
43
-
44
43
}
45
44
46
45
func setSessionInfo( session: Dictionary < String , Any ? > ) {
@@ -52,9 +51,11 @@ class Event {
52
51
}
53
52
54
53
func setVisitorInfo( visitorInfo: Dictionary < String , Any > ? ) {
55
- if let visitor = visitorInfo {
56
- self . parsely_site_uuid = ( visitor [ " id " ] as! String )
54
+ guard let visitor = visitorInfo ? [ " id " ] as? String else {
55
+ return
57
56
}
57
+
58
+ parsely_site_uuid = visitor
58
59
}
59
60
60
61
func toDict( ) -> Dictionary < String , Any > {
@@ -65,31 +66,32 @@ class Event {
65
66
" idsite " : self . idsite,
66
67
]
67
68
68
- data = extra_data ?? [ : ]
69
+ var data : [ String : Any ] = extra_data
69
70
data [ " ts " ] = self . rand
70
71
71
- if parsely_site_uuid != nil {
72
- data [ " parsely_site_uuid " ] = parsely_site_uuid!
72
+ if let parsely_site_uuid {
73
+ data [ " parsely_site_uuid " ] = parsely_site_uuid
73
74
}
74
75
75
76
params [ " data " ] = data
76
77
77
-
78
78
if let metas = self . metadata {
79
79
let metasDict = metas. toDict ( )
80
80
if !metasDict. isEmpty {
81
81
params [ " metadata " ] = metasDict
82
82
}
83
83
}
84
-
85
- if self . session_id != nil {
86
- params [ " sid " ] = self . session_id
87
- params [ " sts " ] = self . session_timestamp
88
- params [ " surl " ] = self . session_url
89
- params [ " sref " ] = self . session_referrer
90
- params [ " slts " ] = self . last_session_timestamp
84
+
85
+ guard let session_id else {
86
+ return params
91
87
}
92
88
89
+ params [ " sid " ] = session_id
90
+ params [ " sts " ] = session_timestamp
91
+ params [ " surl " ] = session_url
92
+ params [ " sref " ] = session_referrer
93
+ params [ " slts " ] = last_session_timestamp
94
+
93
95
return params
94
96
}
95
97
0 commit comments