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 | ||
|  |         } | ||
|  |     } | ||
|  | } |