fix: [core] Hard code version number in user agent string (#98) (#533)

Add a hard coded version number to the user agent string, for an
eventual identification by the Lambda service

### Motivation:

It's [an
issue](https://github.com/swift-server/swift-aws-lambda-runtime/issues/108)
that was open more than 5 years ago and was never addressed. At the
time, the consensus was to pickup a version number for the Package.swift
file and the maintainer at the time decided to wait for Swift to
implement this.
Five years later, and several major version of Swift later, this is
still not available. I decided to move on and implement a less optimal
solution. This can be replaced in the future if package version ever
becomes part of Package.swift.

### Modifications:

Add a version enum to isolate the versioning in one place. I decided to
keep it simple and not over engineering it with major, minor, patch and
pre-release. At the time, it's a simple string. This is all what we need
for usage in the user agent string.

### Result:

User agent now identifies as `Swift-Lambda/2,0` instead of
`Swift-Lambda/unknown`
This commit is contained in:
Sébastien Stormacq
2025-07-21 15:15:02 +02:00
committed by GitHub
parent aa21cb2daa
commit e786f2f620
2 changed files with 26 additions and 1 deletions
@@ -93,7 +93,7 @@ struct ControlPlaneRequestEncoder: _EmittingChannelHandler {
extension String {
static let CRLF: String = "\r\n"
static let userAgent = "Swift-Lambda/Unknown"
static let userAgent = "Swift-Lambda/\(Version.current)"
static let userAgentHeader: String = "user-agent: \(userAgent)\r\n"
static let unhandledErrorHeader: String = "lambda-runtime-function-error-type: Unhandled\r\n"
+25
View File
@@ -0,0 +1,25 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the SwiftAWSLambdaRuntime open source project
//
// Copyright (c) 2017-2018 Apple Inc. and the SwiftAWSLambdaRuntime project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
/// The version of the AWS Lambda Runtime.
///
/// This is used in the User Agent header when making requests to the AWS Lambda data Plane.
///
/// - Note: This is a static property that returns the current version of the AWS Lambda Runtime.
/// It is used to ensure that the runtime can be identified by the AWS Lambda service.
/// As such, we mainly care about major version and minor version. Patch and pre-release versions are ignored.
package enum Version {
/// The current version of the AWS Lambda Runtime.
package static let current = "2.0"
}