diff --git a/Bucketeer/Sources/Internal/Remote/ApiClientImpl.swift b/Bucketeer/Sources/Internal/Remote/ApiClientImpl.swift index 88f4e786..3cdd36e8 100644 --- a/Bucketeer/Sources/Internal/Remote/ApiClientImpl.swift +++ b/Bucketeer/Sources/Internal/Remote/ApiClientImpl.swift @@ -50,7 +50,8 @@ final class ApiClientImpl: ApiClient { userEvaluationsId: userEvaluationsId, sourceId: .ios, userEvaluationCondition: UserEvaluationCondition(evaluatedAt: condition.evaluatedAt, - userAttributesUpdated: condition.userAttributesUpdated) + userAttributesUpdated: condition.userAttributesUpdated), + sdkVersion: Version.current ) let featureTag = self.featureTag let timeoutMillisValue = timeoutMillis ?? defaultRequestTimeoutMills @@ -78,7 +79,8 @@ final class ApiClientImpl: ApiClient { func registerEvents(events: [Event], completion: ((Result) -> Void)?) { let requestBody = RegisterEventsRequestBody( - events: events + events: events, + sdkVersion: Version.current ) logger?.debug(message: "[API] Register events: \(requestBody)") let encoder = JSONEncoder() diff --git a/Bucketeer/Sources/Internal/Remote/RequestBody/GetEvaluationsRequestBody.swift b/Bucketeer/Sources/Internal/Remote/RequestBody/GetEvaluationsRequestBody.swift index abc818e4..610466fe 100644 --- a/Bucketeer/Sources/Internal/Remote/RequestBody/GetEvaluationsRequestBody.swift +++ b/Bucketeer/Sources/Internal/Remote/RequestBody/GetEvaluationsRequestBody.swift @@ -6,4 +6,7 @@ struct GetEvaluationsRequestBody: Codable { let userEvaluationsId: String let sourceId: SourceID let userEvaluationCondition: UserEvaluationCondition + // noted: we didn't set the default value to prevent the warning about Decodeable will not work + // error message "Immutable property will not be decoded because it is declared with an initial value which cannot be overwritten" + let sdkVersion: String } diff --git a/Bucketeer/Sources/Internal/Remote/RequestBody/RegisterEventsRequestBody.swift b/Bucketeer/Sources/Internal/Remote/RequestBody/RegisterEventsRequestBody.swift index 9cf0268d..1fffc5fa 100644 --- a/Bucketeer/Sources/Internal/Remote/RequestBody/RegisterEventsRequestBody.swift +++ b/Bucketeer/Sources/Internal/Remote/RequestBody/RegisterEventsRequestBody.swift @@ -2,4 +2,5 @@ import Foundation struct RegisterEventsRequestBody: Codable { let events: [Event] + let sdkVersion: String } diff --git a/BucketeerTests/ApiClientTests.swift b/BucketeerTests/ApiClientTests.swift index 87edfe60..fc42b7e3 100644 --- a/BucketeerTests/ApiClientTests.swift +++ b/BucketeerTests/ApiClientTests.swift @@ -37,6 +37,7 @@ class ApiClientTests: XCTestCase { let jsonString = String(data: data, encoding: .utf8) ?? "" let expected = """ { + "sdkVersion" : "\(Version.current)", "sourceId" : 2, "tag" : "tag1", "user" : { @@ -114,6 +115,7 @@ class ApiClientTests: XCTestCase { let jsonString = String(data: data, encoding: .utf8) ?? "" let expected = """ { + "sdkVersion" : "\(Version.current)", "sourceId" : 2, "tag" : "tag1", "user" : { @@ -247,7 +249,8 @@ class ApiClientTests: XCTestCase { "id" : "evaluation_event1", "type" : 3 } - ] + ], + "sdkVersion" : "\(Version.current)" } """ XCTAssertEqual(jsonString, expected) @@ -356,7 +359,8 @@ class ApiClientTests: XCTestCase { "id" : "evaluation_event1", "type" : 3 } - ] + ], + "sdkVersion" : "\(Version.current)" } """ XCTAssertEqual(jsonString, expected)