struct ChatRequest: Encodable {
let prompt: String
}
struct ChatResponse: Decodable {
let text: String
}
func sendPrompt(_ prompt: String, sessionToken: String) async throws -> ChatResponse {
let url = URL(string: "https://your-app.example/api/chat")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer \\(sessionToken)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try JSONEncoder().encode(ChatRequest(prompt: prompt))
let (data, response) = try await URLSession.shared.data(for: request)
guard let httpResponse = response as? HTTPURLResponse,
(200..<300).contains(httpResponse.statusCode) else {
throw URLError(.badServerResponse)
}
return try JSONDecoder().decode(ChatResponse.self, from: data)
}