Skip to content

Commit aa18e59

Browse files
committed
Add platform tags in x-goog-api-client (#12680)
1 parent 261fe03 commit aa18e59

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

FirebaseCore/Sources/FIRApp.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@ + (void)registerSwiftComponents {
829829
@"FIRSessions" : @"fire-ses",
830830
@"FIRFunctionsComponent" : @"fire-fun",
831831
@"FIRStorageComponent" : @"fire-str",
832-
@"FIRVertexAIComponent" : @"fire-vtx",
832+
@"FIRVertexAIComponent" : @"fire-vertex",
833833
};
834834
for (NSString *className in swiftComponents.allKeys) {
835835
Class klass = NSClassFromString(className);

FirebaseVertexAI/Sources/GenerativeAIService.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ import Foundation
1818

1919
@available(iOS 15.0, macOS 11.0, macCatalyst 15.0, *)
2020
struct GenerativeAIService {
21+
/// The language of the SDK in the format "gl-<language>/<version>" where version may be blank.
22+
static let languageTag = "gl-swift/"
23+
24+
/// The Firebase SDK version in the format "fire/<version>".
25+
static let firebaseVersionTag = "fire/\(FirebaseVersion())"
26+
2127
/// Gives permission to talk to the backend.
2228
private let apiKey: String
2329

@@ -155,9 +161,10 @@ struct GenerativeAIService {
155161
var urlRequest = URLRequest(url: request.url)
156162
urlRequest.httpMethod = "POST"
157163
urlRequest.setValue(apiKey, forHTTPHeaderField: "x-goog-api-key")
158-
// TODO: Determine the right client header to use.
159-
// urlRequest.setValue("genai-swift/\(GenerativeAISwift.version))",
160-
// forHTTPHeaderField: "x-goog-api-client")
164+
urlRequest.setValue(
165+
"\(GenerativeAIService.languageTag) \(GenerativeAIService.firebaseVersionTag)",
166+
forHTTPHeaderField: "x-goog-api-client"
167+
)
161168
urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
162169

163170
if let appCheck {

FirebaseVertexAI/Tests/Unit/GenerativeModelTests.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
import FirebaseAppCheckInterop
16+
import FirebaseCore
1617
import XCTest
1718

1819
@testable import FirebaseVertexAI
@@ -1058,6 +1059,10 @@ final class GenerativeModelTests: XCTestCase {
10581059
let requestURL = try XCTUnwrap(request.url)
10591060
XCTAssertEqual(requestURL.path.occurrenceCount(of: "models/"), 1)
10601061
XCTAssertEqual(request.timeoutInterval, timeout)
1062+
let apiClientTags = try XCTUnwrap(request.value(forHTTPHeaderField: "x-goog-api-client"))
1063+
.components(separatedBy: " ")
1064+
XCTAssert(apiClientTags.contains(GenerativeAIService.languageTag))
1065+
XCTAssert(apiClientTags.contains(GenerativeAIService.firebaseVersionTag))
10611066
XCTAssertEqual(request.value(forHTTPHeaderField: "X-Firebase-AppCheck"), appCheckToken)
10621067
let response = try XCTUnwrap(HTTPURLResponse(
10631068
url: requestURL,

0 commit comments

Comments
 (0)