// Copyright © 2024 Ryan Booker. All rights reserved. import ArgumentParser import Foundation public enum Endpoint: String { static let baseUrl = URL(string: "https://kagi.com/api/v0/")! case fastGPT case search case summarize var httpMethod: String { switch self { case .search: return "GET" case .fastGPT, .summarize: return "POST" } } var url: URL { URL(string: rawValue.lowercased(), relativeTo: Self.baseUrl)! } var request: URLRequest { var request = URLRequest(url: url) request.httpMethod = httpMethod if httpMethod == "POST" { request.setValue("application/json", forHTTPHeaderField: "Content-Type") } return request } public var authorizedRequest: URLRequest { get throws { guard let apiToken = ProcessInfo.processInfo.environment["FASTGPT_API_TOKEN"] else { throw ValidationError("API key is missing. Set the environment variable FASTGPT_API_TOKEN.") } var request = self.request request.setValue("Bot \(apiToken)", forHTTPHeaderField: "Authorization") return request } } }