79 lines
1.5 KiB
Swift
79 lines
1.5 KiB
Swift
//
|
|
// APIService.swift
|
|
// GuruAnalytics_iOS
|
|
//
|
|
// Created by mayue on 2022/11/8.
|
|
//
|
|
|
|
import Foundation
|
|
import Alamofire
|
|
|
|
internal enum APIService {}
|
|
|
|
extension APIService {
|
|
enum Backend: CaseIterable {
|
|
case event
|
|
case systemTime
|
|
}
|
|
}
|
|
|
|
extension APIService.Backend {
|
|
|
|
var scheme: String {
|
|
return "https"
|
|
}
|
|
|
|
var host: String {
|
|
switch self {
|
|
case .systemTime:
|
|
return "saas.castbox.fm"
|
|
case .event:
|
|
return UserDefaults.eventsServerHost ?? "collect.saas.castbox.fm"
|
|
}
|
|
}
|
|
|
|
var urlComponents: URLComponents {
|
|
var urlC = URLComponents()
|
|
urlC.host = self.host
|
|
urlC.scheme = self.scheme
|
|
urlC.path = self.path
|
|
return urlC
|
|
}
|
|
|
|
var path: String {
|
|
switch self {
|
|
case .event:
|
|
return "/event"
|
|
case .systemTime:
|
|
return "/tool/api/v1/system/time"
|
|
}
|
|
}
|
|
|
|
var method: HTTPMethod {
|
|
switch self {
|
|
case .event:
|
|
return .post
|
|
case .systemTime:
|
|
return .get
|
|
}
|
|
}
|
|
|
|
var headers: HTTPHeaders {
|
|
HTTPHeaders(
|
|
["Content-Type": "application/json",
|
|
"Content-Encoding": "gzip",
|
|
"x_event_type": "event"]
|
|
)
|
|
}
|
|
|
|
var version: Int {
|
|
/// 接口版本
|
|
switch self {
|
|
case .event:
|
|
return 10
|
|
case .systemTime:
|
|
return 0
|
|
}
|
|
}
|
|
}
|