Skip to content

Commit 916e0d4

Browse files
committed
Improve header setting
1 parent 760eed4 commit 916e0d4

File tree

1 file changed

+54
-34
lines changed

1 file changed

+54
-34
lines changed

templates/swift/Sources/Client.swift.twig

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,8 @@ open class Client {
4545

4646
public init() {
4747
http = Client.createHTTP()
48-
49-
#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)
50-
addHeaders()
51-
#endif
48+
addUserAgentHeader()
49+
addOriginHeader()
5250
}
5351

5452
private static func createHTTP(
@@ -540,51 +538,73 @@ open class Client {
540538
request.body = .byteBuffer(bodyBuffer)
541539
}
542540

543-
private func addHeaders() {
541+
private func addUserAgentHeader() {
544542
let packageInfo = OSPackageInfo.get()
545-
let deviceInfo = OSDeviceInfo()
546-
var device = "";
547-
var operatingSystem = ""
548-
549-
#if os(iOS)
550-
let iosinfo = deviceInfo.iOSInfo
551-
device = "\(iosinfo!.modelIdentifier) iOS/\(iosinfo!.systemVersion)";
552-
operatingSystem = "ios"
553-
#elseif os(tvOS)
554-
let iosinfo = deviceInfo.iOSInfo
555-
device = "\(iosinfo!.systemInfo.machine) tvOS/\(iosinfo!.systemVersion)";
556-
operatingSystem = "tvos"
557-
#elseif os(watchOS)
558-
let iosinfo = deviceInfo.iOSInfo
559-
device = "\(iosinfo!.systemInfo.machine) watchOS/\(iosinfo!.systemVersion)";
560-
operatingSystem = "watchos"
561-
#elseif os(macOS)
562-
let macinfo = deviceInfo.macOSInfo
563-
device = "(Macintosh; \(macinfo!.model))"
564-
operatingSystem = "macos"
565-
#elseif os(Linux)
566-
let lininfo = deviceInfo.linuxInfo
567-
device = "(Linux; U; \(lininfo!.id) \(lininfo!.version))"
568-
operatingSystem = "linux"
569-
#elseif os(Windows)
570-
let wininfo = deviceInfo.windowsInfo
571-
device = "(Windows NT; \(wininfo!.computerName))"
572-
operatingSystem = "windows"
573-
#endif
543+
let device = Client.getDevice()
574544

575545
#if !os(Linux) && !os(Windows)
576546
_ = addHeader(
577547
key: "user-agent",
578548
value: "\(packageInfo.packageName)/\(packageInfo.version) \(device)"
579549
)
580550
#endif
551+
}
552+
553+
private func addOriginHeader() {
554+
let packageInfo = OSPackageInfo.get()
555+
let operatingSystem = Client.getOperatingSystem()
581556
_ = addHeader(
582557
key: "origin",
583558
value: "{{ spec.title | caseLower }}-\(operatingSystem)://\(packageInfo.packageName)"
584559
)
585560
}
586561
}
587562

563+
extension Client {
564+
private static func getOperatingSystem() -> String {
565+
#if os(iOS)
566+
return "ios"
567+
#elseif os(watchOS)
568+
return "watchos"
569+
#elseif os(tvOS)
570+
return "tvos"
571+
#elseif os(macOS)
572+
return "macos"
573+
#elseif os(Linux)
574+
return "linux"
575+
#elseif os(Windows)
576+
return "windows"
577+
#endif
578+
}
579+
580+
private static func getDevice() -> String {
581+
let deviceInfo = OSDeviceInfo()
582+
var device = ""
583+
584+
#if os(iOS)
585+
let info = deviceInfo.iOSInfo
586+
device = "\(info!.modelIdentifier) iOS/\(info!.systemVersion)"
587+
#elseif os(watchOS)
588+
let info = deviceInfo.watchOSInfo
589+
device = "\(info!.systemInfo.machine) watchOS/\(info!.systemVersion)"
590+
#elseif os(tvOS)
591+
let info = deviceInfo.tvOSInfo
592+
device = "\(info!.systemInfo.machine) tvOS/\(info!.systemVersion)"
593+
#elseif os(macOS)
594+
let info = deviceInfo.macOSInfo
595+
device = "(Macintosh; \(info!.model))"
596+
#elseif os(Linux)
597+
let info = deviceInfo.linuxInfo
598+
device = "(Linux; U; \(info!.id) \(info!.version))"
599+
#elseif os(Windows)
600+
let info = deviceInfo.windowsInfo
601+
device = "(Windows NT; \(info!.computerName))"
602+
#endif
603+
604+
return device
605+
}
606+
}
607+
588608
extension Client {
589609

590610
public enum HTTPStatus: Int {

0 commit comments

Comments
 (0)