Set User-Agent header for OCI HTTP requests (#478)

* Set User-Agent header for OCI HTTP requests

* IORegistry value is actually a NUL-terminated C string

* Use sysctl instead of IOKit
This commit is contained in:
Nikolay Edigaryev
2023-04-28 18:02:57 +04:00
committed by GitHub
parent 9098eaf024
commit 4f70d01dd6
4 changed files with 51 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
import Foundation
import Sysctl
class DeviceInfo {
private static var osMemoized: String? = nil
private static var modelMemoized: String? = nil
static var os: String {
if let os = osMemoized {
return os
}
osMemoized = getOS()
return osMemoized!
}
static var model: String {
if let model = modelMemoized {
return model
}
modelMemoized = getModel()
return modelMemoized!
}
private static func getOS() -> String {
let osVersion = ProcessInfo.processInfo.operatingSystemVersion
return "macOS \(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)"
}
private static func getModel() -> String {
return SystemControl().hardware.model
}
}
+3
View File
@@ -387,6 +387,9 @@ class Registry {
request.addValue(value, forHTTPHeaderField: name)
}
request.setValue("Tart/\(CI.version) (\(DeviceInfo.os); \(DeviceInfo.model))",
forHTTPHeaderField: "User-Agent")
return try await Fetcher.fetch(request, viaFile: viaFile)
}
}