diff --git a/Gemfile.lock b/Gemfile.lock index 0475ed41..8cbb060d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,52 +1,61 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.6) + CFPropertyList (3.0.7) + base64 + nkf rexml - activesupport (6.1.6) - concurrent-ruby (~> 1.0, >= 1.0.2) + activesupport (7.2.1) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) - artifactory (3.0.15) + artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.2.0) - aws-partitions (1.819.0) - aws-sdk-core (3.181.0) - aws-eventstream (~> 1, >= 1.0.2) + aws-eventstream (1.3.0) + aws-partitions (1.979.0) + aws-sdk-core (3.209.1) + aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.5) + aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.71.0) - aws-sdk-core (~> 3, >= 3.177.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.134.0) - aws-sdk-core (~> 3, >= 3.181.0) + aws-sdk-kms (1.94.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.166.0) + aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.6) - aws-sigv4 (1.6.0) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.10.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) badge (0.13.0) fastimage (>= 1.6) fastlane (>= 2.0) mini_magick (>= 4.9.4, < 5.0.0) + base64 (0.2.0) + bigdecimal (3.1.8) claide (1.1.0) - cocoapods (1.11.3) + cocoapods (1.15.2) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.11.3) + cocoapods-core (= 1.15.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.4.0, < 2.0) + cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.4.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) cocoapods-try (>= 1.1.0, < 2.0) colored2 (~> 3.1) escape (~> 0.0.4) @@ -54,10 +63,10 @@ GEM gh_inspector (~> 1.0) molinillo (~> 0.8.0) nap (~> 1.0) - ruby-macho (>= 1.0, < 3.0) - xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.11.3) - activesupport (>= 5.0, < 7) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.15.2) + activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) concurrent-ruby (~> 1.1) @@ -67,7 +76,7 @@ GEM public_suffix (~> 4.0) typhoeus (~> 1.0) cocoapods-deintegrate (1.0.5) - cocoapods-downloader (1.6.3) + cocoapods-downloader (2.1) cocoapods-plugins (1.0.0) nap cocoapods-search (1.0.1) @@ -79,19 +88,20 @@ GEM colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) - concurrent-ruby (1.1.10) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) declarative (0.0.20) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) + domain_name (0.6.20240107) dotenv (2.8.1) + drb (2.2.1) emoji_regex (3.2.3) escape (0.0.4) - ethon (0.15.0) + ethon (0.16.0) ffi (>= 1.15.0) - excon (0.102.0) - faraday (1.10.3) + excon (0.111.0) + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -112,22 +122,22 @@ GEM faraday-httpclient (1.0.1) faraday-multipart (1.0.4) multipart-post (~> 2) - faraday-net_http (1.0.1) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) + faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.2.7) - fastlane (2.214.0) + fastimage (2.3.1) + fastlane (2.222.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) aws-sdk-s3 (~> 1.0) babosa (>= 1.0.3, < 2.0.0) bundler (>= 1.12.0, < 3.0.0) - colored + colored (~> 1.2) commander (~> 4.6) dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 4.0) @@ -139,35 +149,37 @@ GEM gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) google-cloud-storage (~> 1.31) highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) - optparse (~> 0.1.1) + optparse (>= 0.1.1, < 1.0.0) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) - security (= 0.1.3) + security (= 0.1.5) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) - xcpretty-travis-formatter (>= 0.0.3) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) fastlane-plugin-badge (1.5.0) badge (~> 0.13.0) - ffi (1.15.5) + ffi (1.17.0) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.49.0) + google-apis-androidpublisher_v3 (0.54.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.1) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -175,85 +187,89 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml - webrick google-apis-iamcredentials_v1 (0.17.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-playcustomapp_v1 (0.13.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.19.0) - google-apis-core (>= 0.9.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) + google-apis-storage_v1 (0.31.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.7.1) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.3.1) - google-cloud-storage (1.44.0) + google-cloud-errors (1.4.0) + google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.19.0) + google-apis-storage_v1 (~> 0.31.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.8.0) + googleauth (1.8.1) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.5) + http-cookie (1.0.7) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.10.0) + i18n (1.14.6) concurrent-ruby (~> 1.0) - jazzy (0.14.2) + jazzy (0.15.2) cocoapods (~> 1.5) mustache (~> 1.1) open4 (~> 1.3) redcarpet (~> 3.4) - rexml (~> 3.2) - rouge (>= 2.0.6, < 4.0) + rexml (>= 3.2.7, < 4.0) + rouge (>= 2.0.6, < 5.0) sassc (~> 2.1) sqlite3 (~> 1.3) xcinvoke (~> 0.3.0) jmespath (1.6.2) - json (2.6.3) - jwt (2.7.1) + json (2.7.2) + jwt (2.9.1) + base64 liferaft (0.0.6) - mini_magick (4.12.0) + logger (1.6.1) + mini_magick (4.13.2) mini_mime (1.1.5) - minitest (5.15.0) + mini_portile2 (2.8.7) + minitest (5.25.1) molinillo (0.8.0) multi_json (1.15.0) - multipart-post (2.3.0) + multipart-post (2.4.1) mustache (1.1.1) nanaimo (0.3.0) nap (1.1.0) naturally (2.2.1) netrc (0.11.0) + nkf (0.2.0) open4 (1.3.4) - optparse (0.1.1) + optparse (0.5.0) os (1.1.4) - plist (3.7.0) + plist (3.7.1) public_suffix (4.0.7) - rake (13.0.6) - redcarpet (3.5.1) + rake (13.2.1) + redcarpet (3.6.0) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.6) + rexml (3.3.7) rouge (2.0.7) ruby-macho (2.5.1) ruby2_keywords (0.0.5) rubyzip (2.3.2) sassc (2.4.0) ffi (~> 1.9) - security (0.1.3) - signet (0.18.0) + securerandom (0.3.1) + security (0.1.5) + signet (0.19.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -261,40 +277,36 @@ GEM simctl (1.6.10) CFPropertyList naturally - sqlite3 (1.4.2) + sqlite3 (1.7.3) + mini_portile2 (~> 2.8.0) terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) - typhoeus (1.4.0) + typhoeus (1.4.1) ethon (>= 0.9.0) - tzinfo (2.0.4) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2) - unicode-display_width (1.8.0) - webrick (1.8.1) + unicode-display_width (2.6.0) word_wrap (1.0.0) xcinvoke (0.3.0) liferaft (~> 0.0.6) - xcodeproj (1.22.0) + xcodeproj (1.25.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) - rexml (~> 3.2.4) + rexml (>= 3.3.2, < 4.0) xcpretty (0.3.0) rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) - zeitwerk (2.5.4) PLATFORMS ruby diff --git a/PACECloudSDK/API/Communication/Generated/Models/Request/LogEventRequest.swift b/PACECloudSDK/API/Communication/Generated/Models/Request/LogEventRequest.swift index 71a3d587..144db84f 100644 --- a/PACECloudSDK/API/Communication/Generated/Models/Request/LogEventRequest.swift +++ b/PACECloudSDK/API/Communication/Generated/Models/Request/LogEventRequest.swift @@ -15,7 +15,12 @@ public extension API.Communication { /** * Dictionary of additional event parameters */ public let parameters: [String: AnyCodable]? + /** + * Provide additional context for the SDK which will not be logged */ + public let context: [String: AnyCodable]? public struct Parameters: Codable {} + + public struct Context: Codable {} } } diff --git a/PACECloudSDK/AppKit/AppKit+Delegate.swift b/PACECloudSDK/AppKit/AppKit+Delegate.swift index c2e6e610..5f05d027 100644 --- a/PACECloudSDK/AppKit/AppKit+Delegate.swift +++ b/PACECloudSDK/AppKit/AppKit+Delegate.swift @@ -25,7 +25,7 @@ public protocol AppKitDelegate: AnyObject { func currentLocation(completion: @escaping (CLLocation?) -> Void) func setUserProperty(key: String, value: String, update: Bool) - func logEvent(key: String, parameters: [String: Any]) + func logEvent(key: String, parameters: [String: Any], context: [String: Any]?) func getConfig(key: String, completion: @escaping ((Any?) -> Void)) func isAppRedirectAllowed(app: String, isAllowed: @escaping ((Bool) -> Void)) func isRemoteConfigAvailable(isAvailable: @escaping ((Bool) -> Void)) @@ -44,7 +44,7 @@ public extension AppKitDelegate { func didRequestLocationVerification(location: CLLocation, threshold: Double, completion: @escaping ((Bool) -> Void)) { completion(false) } func currentLocation(completion: @escaping (CLLocation?) -> Void) { completion(nil) } func setUserProperty(key: String, value: String, update: Bool) {} - func logEvent(key: String, parameters: [String: Any]) {} + func logEvent(key: String, parameters: [String: Any], context: [String: Any]?) {} func getConfig(key: String, completion: @escaping ((Any?) -> Void)) { completion(nil) } func isAppRedirectAllowed(app: String, isAllowed: @escaping ((Bool) -> Void)) { isAllowed(true) } func isRemoteConfigAvailable(isAvailable: @escaping ((Bool) -> Void)) { isAvailable(false) } @@ -141,9 +141,9 @@ extension AppKit { } } - func notifyLogEvent(key: String, parameters: [String: Any]) { + func notifyLogEvent(key: String, parameters: [String: Any], context: [String: Any]?) { notifyClient { [weak self] in - self?.delegate?.logEvent(key: key, parameters: parameters) + self?.delegate?.logEvent(key: key, parameters: parameters, context: context) } } diff --git a/PACECloudSDK/AppKit/AppManagement/MessageHandling/App+MessageHandling.swift b/PACECloudSDK/AppKit/AppManagement/MessageHandling/App+MessageHandling.swift index 268a9a09..b79f5287 100644 --- a/PACECloudSDK/AppKit/AppManagement/MessageHandling/App+MessageHandling.swift +++ b/PACECloudSDK/AppKit/AppManagement/MessageHandling/App+MessageHandling.swift @@ -186,7 +186,13 @@ extension App { func handleLogEvent(with request: API.Communication.LogEventRequest, completion: @escaping (API.Communication.LogEventResult) -> Void) { let key = request.key let parameters: [String: Any] = request.parameters?.reduce(into: [:], { $0[$1.key] = $1.value.value }) ?? [:] - AppKit.shared.notifyLogEvent(key: key, parameters: parameters) + + var context: [String: Any] = [:] + if request.context != nil { + context = request.context!.reduce(into: [:], { $0[$1.key] = $1.value.value }) + } + + AppKit.shared.notifyLogEvent(key: key, parameters: parameters, context: context) completion(.init(.init())) } diff --git a/docs/index.md b/docs/index.md index 8d57e271..5cac5162 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,6 +25,7 @@ + [From 20.x.x -> 21.x.x](#from-20xx-to-21xx) + [From 21.x.x -> 22.x.x](#from-21xx-to-22xx) + [From 22.x.x -> 23.x.x](#from-22xx-to-23xx) + + [From 23.x.x -> 24.x.x](#from-23xx-to-24xx) * [Contribute](#contribute) + [Localizable Strings Generation](#localizable-strings-generation) @@ -231,6 +232,10 @@ In version `7.x.x` we've made some big `AppKit` and `IDKit` changes. - Updated Fueling, Pay and POI API +### From 23.x.x to 24.x.x + +- The `logEvent` SDK handler now includes an optional `context`. This context is to be used to provide a context in which the event is logged and must not be forwarded to the analytics backend. + ## Contribute ### Localizable Strings Generation To generate our localized strings that are part of `AppKit` we use [SwiftGen](https://github.com/SwiftGen/SwiftGen).