46 lines
1.9 KiB
Swift
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()
|
|
}
|
|
}
|