Skip to content

Commit 9f102ea

Browse files
author
Guilherme Souza
committed
Add config struct
1 parent 6d3eace commit 9f102ea

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

Sources/SupabaseLogger/SupabaseLogHandler.swift

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
import Foundation
22
import Logging
33

4+
public struct SupabaseLogConfig {
5+
let supabaseURL: String
6+
let supabaseAnonKey: String
7+
8+
let table: String
9+
10+
public init(
11+
supabaseURL: String,
12+
supabaseAnonKey: String,
13+
table: String = "logs"
14+
) {
15+
self.supabaseURL = supabaseURL
16+
self.supabaseAnonKey = supabaseAnonKey
17+
self.table = table
18+
}
19+
}
20+
421
public struct SupabaseLogHandler: LogHandler {
522

623
public var metadata: Logger.Metadata = [:]
@@ -14,8 +31,8 @@ public struct SupabaseLogHandler: LogHandler {
1431

1532
private let logManager: SupabaseLogManager
1633

17-
public init() {
18-
logManager = SupabaseLogManager()
34+
public init(config: SupabaseLogConfig) {
35+
logManager = SupabaseLogManager(config: config)
1936
}
2037

2138
public func log(
@@ -44,10 +61,39 @@ final class SupabaseLogManager {
4461

4562
let queue = DispatchQueue(label: "co.binaryscraping.supabase-log-manager", qos: .background)
4663
var payloads: [[String: Any]] = []
64+
let config: SupabaseLogConfig
65+
66+
init(config: SupabaseLogConfig) {
67+
self.config = config
68+
}
4769

4870
func log(_ payload: [String: Any]) {
4971
queue.async {
5072
self.payloads.append(payload)
5173
}
5274
}
75+
76+
func uploadLogs() {
77+
queue.async {
78+
let data = try! JSONSerialization.data(withJSONObject: self.payloads)
79+
guard
80+
let url = URL(string: self.config.supabaseURL)?.appendingPathComponent(self.config.table)
81+
else {
82+
return
83+
}
84+
85+
var request = URLRequest(url: url)
86+
request.httpMethod = "POST"
87+
request.httpBody = data
88+
89+
URLSession.shared.dataTask(with: request) { data, response, error in
90+
if let error = error {
91+
print(error)
92+
return
93+
}
94+
95+
self.payloads = []
96+
}.resume()
97+
}
98+
}
5399
}

0 commit comments

Comments
 (0)