Skip to content

Commit

Permalink
Linter
Browse files Browse the repository at this point in the history
  • Loading branch information
fabriziodemaria committed Apr 15, 2024
1 parent 3720dd2 commit 910866e
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 72 deletions.
26 changes: 0 additions & 26 deletions Sources/Confidence/Confidence.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,32 +28,6 @@ public class Confidence: ConfidenceEventSender {
self.parent = parent
}

// public convenience init(
// clientSecret: String,
// timeout: TimeInterval,
// region: ConfidenceRegion,
// initializationStrategy: InitializationStrategy,
// context: ConfidenceStruct = [:],
// parent: ConfidenceEventSender? = nil
// ) {
// self.init(
// clientSecret: clientSecret,
// timeout: timeout,
// region: region,
// eventSenderEngine: self.eventSenderEngine,
// initializationStrategy: initializationStrategy,
// client: RemoteConfidenceClient(
// options: ConfidenceClientOptions(
// credentials: ConfidenceClientCredentials.clientSecret(secret: clientSecret),
// timeout: timeout,
// region: region),
// metadata: ConfidenceMetadata(
// name: "SDK_ID_SWIFT_CONFIDENCE",
// version: "0.1.4") // x-release-please-version)
// )
// )
// }

public func send(name: String, payload: ConfidenceStruct) {
eventSenderEngine.send(name: name, message: payload)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Common
import os

public class RemoteConfidenceClient: ConfidenceClient {
private var options: ConfidenceClientOptions
private var options: ConfidenceClientOptions
private let metadata: ConfidenceMetadata
private var httpClient: HttpClient
private var baseUrl: String
Expand Down
8 changes: 5 additions & 3 deletions Sources/Confidence/EventSenderEngine.swift
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,15 @@ final class EventSenderEngineImpl: EventSenderEngine {
let ids = try storage.batchReadyIds()
for id in ids {
let events: [NetworkEvent] = try self.storage.eventsFrom(id: id)
.compactMap({ event in
let networkPayload = event.payload.compactMapValues({ payloadValue in try? NetworkTypeMapper.convertValue(payloadValue)})
.compactMap { event in
let networkPayload = event.payload.compactMapValues { payloadValue in
try? NetworkTypeMapper.convertValue(payloadValue)
}
return NetworkEvent(
eventDefinition: event.name,
payload: NetworkStruct(fields: networkPayload),
eventTime: Date.backport.toISOString(date: event.eventTime))
})
}
let shouldCleanup = try await self.uploader.upload(events: events)
if shouldCleanup {
try storage.remove(id: id)
Expand Down
32 changes: 22 additions & 10 deletions Sources/Confidence/EventStorage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ internal class EventStorageImpl: EventStorage {
return
}
try currentFileHandle?.close()
try FileManager.default.moveItem(at: currentFileName, to: currentFileName.appendingPathExtension(READYTOSENDEXTENSION))
try FileManager.default.moveItem(
at: currentFileName,
to: currentFileName.appendingPathExtension(READYTOSENDEXTENSION))
try resetCurrentFile()
}
}
Expand All @@ -63,7 +65,12 @@ internal class EventStorageImpl: EventStorage {
func batchReadyIds() throws -> [String] {
try storageQueue.sync {
let fileUrls = try FileManager.default.contentsOfDirectory(at: folderURL, includingPropertiesForKeys: nil)
return fileUrls.filter({ url in url.pathExtension == READYTOSENDEXTENSION }).map({ url in url.lastPathComponent })
return fileUrls.filter { url in
url.pathExtension == READYTOSENDEXTENSION
}
.map { url in
url.lastPathComponent
}
}
}

Expand All @@ -74,24 +81,29 @@ internal class EventStorageImpl: EventStorage {
let data = try Data(contentsOf: fileUrl)
let dataString = String(data: data, encoding: .utf8)
return try dataString?.components(separatedBy: "\n")
.filter({ events in !events.isEmpty })
.map({ eventString in try decoder.decode(ConfidenceEvent.self, from: eventString.data(using: .utf8)!) }) ?? []
.filter { events in
!events.isEmpty
}
.compactMap { eventString in
guard let stringData = eventString.data(using: .utf8) else {
return nil
}
return try decoder.decode(ConfidenceEvent.self, from: stringData)
} ?? []
}
}

func remove(id: String) throws {
try storageQueue.sync {
let fileUrl = folderURL.appendingPathComponent(id)
try FileManager.default.removeItem(at: fileUrl)
let fileUrl = folderURL.appendingPathComponent(id)
try FileManager.default.removeItem(at: fileUrl)
}
}

private func getLastWritingFile() throws -> URL? {
let files = try FileManager.default.contentsOfDirectory(at: folderURL, includingPropertiesForKeys: nil)
for fileUrl in files {
if fileUrl.pathExtension != READYTOSENDEXTENSION {
return fileUrl
}
for fileUrl in files where fileUrl.pathExtension != READYTOSENDEXTENSION {
return fileUrl
}
return nil
}
Expand Down
4 changes: 3 additions & 1 deletion Sources/ConfidenceProvider/Cache/DefaultStorage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,9 @@ public class DefaultStorage: Storage {

func getConfigUrl() throws -> URL {
guard
let applicationSupportUrl: URL = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)
let applicationSupportUrl: URL = FileManager.default.urls(
for: .applicationSupportDirectory,
in: .userDomainMask)
.last
else {
throw ConfidenceError.cacheError(message: "Could not get URL for application directory")
Expand Down
48 changes: 32 additions & 16 deletions Tests/ConfidenceTests/ConfidenceTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ final class ConfidenceTests: XCTestCase {
let confidenceParent = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")]
)
Expand All @@ -24,9 +25,11 @@ final class ConfidenceTests: XCTestCase {
let confidenceParent = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")], parent: nil
context: ["k1": ConfidenceValue(string: "v1")],
parent: nil
)
let confidenceChild: ConfidenceEventSender = confidenceParent.withContext(
["k2": ConfidenceValue(string: "v2")]
Expand All @@ -46,9 +49,11 @@ final class ConfidenceTests: XCTestCase {
let confidence = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")], parent: nil
context: ["k1": ConfidenceValue(string: "v1")],
parent: nil
)
confidence.updateContextEntry(
key: "k1",
Expand All @@ -63,9 +68,11 @@ final class ConfidenceTests: XCTestCase {
let confidenceParent = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")], parent: nil
context: ["k1": ConfidenceValue(string: "v1")],
parent: nil
)
let confidenceChild: ConfidenceEventSender = confidenceParent.withContext(
["k2": ConfidenceValue(string: "v2")]
Expand All @@ -84,9 +91,11 @@ final class ConfidenceTests: XCTestCase {
let confidenceParent = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")], parent: nil
context: ["k1": ConfidenceValue(string: "v1")],
parent: nil
)
let confidenceChild: ConfidenceEventSender = confidenceParent.withContext(
["k2": ConfidenceValue(string: "v2")]
Expand All @@ -105,7 +114,8 @@ final class ConfidenceTests: XCTestCase {
let confidence = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: [
"k1": ConfidenceValue(string: "v1"),
Expand All @@ -124,9 +134,11 @@ final class ConfidenceTests: XCTestCase {
let confidenceParent = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")], parent: nil
context: ["k1": ConfidenceValue(string: "v1")],
parent: nil
)
let confidenceChild: ConfidenceEventSender = confidenceParent.withContext(
["k2": ConfidenceValue(string: "v2")]
Expand All @@ -142,9 +154,11 @@ final class ConfidenceTests: XCTestCase {
let confidenceParent = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")], parent: nil
context: ["k1": ConfidenceValue(string: "v1")],
parent: nil
)
let confidenceChild: ConfidenceEventSender = confidenceParent.withContext(
[
Expand All @@ -163,9 +177,11 @@ final class ConfidenceTests: XCTestCase {
let confidenceParent = Confidence.init(
clientSecret: "",
timeout: TimeInterval(),
region: .europe, eventSenderEngine: EventSenderEngineMock(),
region: .europe,
eventSenderEngine: EventSenderEngineMock(),
initializationStrategy: .activateAndFetchAsync,
context: ["k1": ConfidenceValue(string: "v1")], parent: nil
context: ["k1": ConfidenceValue(string: "v1")],
parent: nil
)
let confidenceChild: ConfidenceEventSender = confidenceParent.withContext(
[
Expand Down
42 changes: 27 additions & 15 deletions Tests/ConfidenceTests/EventStorageTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,23 @@ import XCTest

class EventStorageTest: XCTestCase {
override func setUp() async throws {
let folderURL = try! EventStorageImpl.getFolderURL()
let folderURL = try XCTUnwrap(EventStorageImpl.getFolderURL())
if FileManager.default.fileExists(atPath: folderURL.path) {
try! FileManager.default.removeItem(at: folderURL)
try XCTUnwrap(FileManager.default.removeItem(at: folderURL))
}
try await super.setUp()
}

func testCreateNewBatch() throws {
let eventStorage = try EventStorageImpl()
try eventStorage.writeEvent(event: ConfidenceEvent(name: "some event", payload: ["pants": ConfidenceValue(string: "green")], eventTime: Date().self))
try eventStorage.writeEvent(event: ConfidenceEvent(name: "some event 2", payload: ["pants": ConfidenceValue(string: "red")], eventTime: Date().self))
try eventStorage.writeEvent(event: ConfidenceEvent(
name: "some event",
payload: ["pants": ConfidenceValue(string: "green")],
eventTime: Date().self))
try eventStorage.writeEvent(event: ConfidenceEvent(
name: "some event 2",
payload: ["pants": ConfidenceValue(string: "red")],
eventTime: Date().self))
try eventStorage.startNewBatch()
try XCTAssertEqual(eventStorage.batchReadyIds().count, 1)
let events = try eventStorage.eventsFrom(id: try eventStorage.batchReadyIds()[0])
Expand All @@ -24,10 +31,16 @@ class EventStorageTest: XCTestCase {

func testContinueWritingToOldBatch() throws {
let eventStorage = try EventStorageImpl()
try eventStorage.writeEvent(event: ConfidenceEvent(name: "some event", payload: ["pants": ConfidenceValue(string: "green")], eventTime: Date().self))
try eventStorage.writeEvent(event: ConfidenceEvent(
name: "some event",
payload: ["pants": ConfidenceValue(string: "green")],
eventTime: Date().self))
// user stops using app, new session after this
let eventStorageNew = try EventStorageImpl()
try eventStorageNew.writeEvent(event: ConfidenceEvent(name: "some event 2", payload: ["pants": ConfidenceValue(string: "red")], eventTime: Date().self))
try eventStorageNew.writeEvent(event: ConfidenceEvent(
name: "some event 2",
payload: ["pants": ConfidenceValue(string: "red")],
eventTime: Date().self))
try eventStorageNew.startNewBatch()
try XCTAssertEqual(eventStorageNew.batchReadyIds().count, 1)
let events = try eventStorageNew.eventsFrom(id: try eventStorageNew.batchReadyIds()[0])
Expand All @@ -37,17 +50,16 @@ class EventStorageTest: XCTestCase {

func testRemoveFile() throws {
let eventStorage = try EventStorageImpl()
try eventStorage.writeEvent(event: ConfidenceEvent(name: "some event", payload: ["pants": ConfidenceValue(string: "green")], eventTime: Date().self))
try eventStorage.writeEvent(event: ConfidenceEvent(name: "some event 2", payload: ["pants": ConfidenceValue(string: "red")], eventTime: Date().self))
try eventStorage.writeEvent(event: ConfidenceEvent(
name: "some event",
payload: ["pants": ConfidenceValue(string: "green")],
eventTime: Date().self))
try eventStorage.writeEvent(event: ConfidenceEvent(
name: "some event 2",
payload: ["pants": ConfidenceValue(string: "red")],
eventTime: Date().self))
try eventStorage.startNewBatch()
try eventStorage.remove(id: eventStorage.batchReadyIds()[0])
try XCTAssertEqual(eventStorage.batchReadyIds().count, 0)
}

override func setUp() {
let folderURL = try! EventStorageImpl.getFolderURL()
if FileManager.default.fileExists(atPath: folderURL.path) {
try! FileManager.default.removeItem(at: folderURL)
}
}
}

0 comments on commit 910866e

Please sign in to comment.