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