added iOS source code
[wl-app.git] / iOS / Pods / MatomoTracker / MatomoTracker / Visitor.swift
diff --git a/iOS/Pods/MatomoTracker/MatomoTracker/Visitor.swift b/iOS/Pods/MatomoTracker/MatomoTracker/Visitor.swift
new file mode 100644 (file)
index 0000000..613bb07
--- /dev/null
@@ -0,0 +1,44 @@
+//
+//  Visitor.swift
+//  PiwikTracker
+//
+//  Created by Cornelius Horstmann on 26.02.17.
+//  Copyright © 2017 PIWIK. All rights reserved.
+//
+
+import Foundation
+
+struct Visitor {
+    /// Unique ID per visitor (device in this case). Should be
+    /// generated upon first start and never changed after.
+    /// api-key: _id
+    let id: String
+    
+    /// An optional user identifier such as email or username.
+    /// api-key: uid
+    let userId: String?
+}
+
+extension Visitor {
+    static func current(in matomoUserDefaults: MatomoUserDefaults) -> Visitor {
+        var matomoUserDefaults = matomoUserDefaults
+        let id: String
+        if let existingId = matomoUserDefaults.clientId {
+            id = existingId
+        } else {
+            let newId = newVisitorID()
+            matomoUserDefaults.clientId = newId
+            id = newId
+        }
+        let userId = matomoUserDefaults.visitorUserId
+        return Visitor(id: id, userId: userId)
+    }
+    
+    static func newVisitorID() -> String {
+        let uuid = UUID().uuidString
+        let sanitizedUUID = uuid.replacingOccurrences(of: "-", with: "")
+        let start = sanitizedUUID.startIndex
+        let end = sanitizedUUID.index(start, offsetBy: 16)
+        return String(sanitizedUUID[start..<end])
+    }
+}