RunnerTracker/RunnerTracker/APIService.swift
2026-06-26 19:55:52 +02:00

46 lines
1.9 KiB
Swift

import Foundation
class APIService {
static let shared = APIService()
// Ersetze dies durch deine Cloudflare-URL oder lokale Pi-IP
let writeKey = (Bundle.main.object(forInfoDictionaryKey: "WriteKey") as? String) ?? ""
let baseURL = (Bundle.main.object(forInfoDictionaryKey: "BaseUrl") as? String) ?? ""
func createRun(eventName: String, type: String, completion: @escaping (Result<String, Error>) -> Void) {
guard let url = URL(string: "\(baseURL)/runs/create") else { return }
var request = URLRequest(url: url)
print(request)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue(writeKey, forHTTPHeaderField: "X-Write-Key")
// Das schicken wir an den Pi (u_id und e_id sind Platzhalter)
let body: [String: Any] = [
"u_id": (Bundle.main.object(forInfoDictionaryKey: "UserID") as? String) ?? "",
"e_id": "f0e061e2-4317-11f1-b48c-b827ebe636d1",
"run_type": type,
"event_name": eventName // Dein neues Feld!
]
request.httpBody = try? JSONSerialization.data(withJSONObject: body)
URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
completion(.failure(error))
return
}
guard let data = data,
let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
let runID = json["run_id"] as? String else {
let parseError = NSError(domain: "", code: 500, userInfo: [NSLocalizedDescriptionKey: "Fehler beim Lesen der RunID"])
completion(.failure(parseError))
return
}
completion(.success(runID))
}.resume()
}
}