Merge pull request #25391 from yulin-liang/suffix

Support to add a suffix on user agents for grpc-objc.
pull/25442/head
yulin liang 4 years ago committed by GitHub
commit 90b565f17a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      src/objective-c/GRPCClient/GRPCCallOptions.h
  2. 18
      src/objective-c/GRPCClient/GRPCCallOptions.m
  3. 19
      src/objective-c/GRPCClient/private/GRPCCore/GRPCChannel.m

@ -91,6 +91,12 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property(copy, readonly, nullable) NSString *userAgentPrefix;
/**
* Custom string that is suffixed to a request's user-agent header field after gRPC's internal
* user-agent string.
*/
@property(copy, readonly, nullable) NSString *userAgentSuffix;
/**
* The size limit for the response received from server. If it is exceeded, an error with status
* code GRPCErrorCodeResourceExhausted is returned.
@ -270,6 +276,12 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property(copy, readwrite, nullable) NSString *userAgentPrefix;
/**
* Custom string that is suffixed to a request's user-agent header field after gRPC's internal
* user-agent string.
*/
@property(copy, readwrite, nullable) NSString *userAgentSuffix;
/**
* The size limit for the response received from server. If it is exceeded, an error with status
* code GRPCErrorCodeResourceExhausted is returned.

@ -27,6 +27,7 @@ static const BOOL kDefaultFlowControlEnabled = NO;
static NSArray<id<GRPCInterceptorFactory>> *const kDefaultInterceptorFactories = nil;
static NSDictionary *const kDefaultInitialMetadata = nil;
static NSString *const kDefaultUserAgentPrefix = nil;
static NSString *const kDefaultUserAgentSuffix = nil;
static const NSUInteger kDefaultResponseSizeLimit = 0;
static const GRPCCompressionAlgorithm kDefaultCompressionAlgorithm = GRPCCompressNone;
static const BOOL kDefaultRetryEnabled = YES;
@ -69,6 +70,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
id<GRPCAuthorizationProtocol> _authTokenProvider;
NSDictionary *_initialMetadata;
NSString *_userAgentPrefix;
NSString *_userAgentSuffix;
NSUInteger _responseSizeLimit;
GRPCCompressionAlgorithm _compressionAlgorithm;
BOOL _retryEnabled;
@ -97,6 +99,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
@synthesize authTokenProvider = _authTokenProvider;
@synthesize initialMetadata = _initialMetadata;
@synthesize userAgentPrefix = _userAgentPrefix;
@synthesize userAgentSuffix = _userAgentSuffix;
@synthesize responseSizeLimit = _responseSizeLimit;
@synthesize compressionAlgorithm = _compressionAlgorithm;
@synthesize retryEnabled = _retryEnabled;
@ -125,6 +128,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
authTokenProvider:kDefaultAuthTokenProvider
initialMetadata:kDefaultInitialMetadata
userAgentPrefix:kDefaultUserAgentPrefix
userAgentSuffix:kDefaultUserAgentSuffix
responseSizeLimit:kDefaultResponseSizeLimit
compressionAlgorithm:kDefaultCompressionAlgorithm
retryEnabled:kDefaultRetryEnabled
@ -153,6 +157,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
authTokenProvider:(id<GRPCAuthorizationProtocol>)authTokenProvider
initialMetadata:(NSDictionary *)initialMetadata
userAgentPrefix:(NSString *)userAgentPrefix
userAgentSuffix:(NSString *)userAgentSuffix
responseSizeLimit:(NSUInteger)responseSizeLimit
compressionAlgorithm:(GRPCCompressionAlgorithm)compressionAlgorithm
retryEnabled:(BOOL)retryEnabled
@ -183,6 +188,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
: [[NSDictionary alloc] initWithDictionary:initialMetadata
copyItems:YES];
_userAgentPrefix = [userAgentPrefix copy];
_userAgentSuffix = [userAgentSuffix copy];
_responseSizeLimit = responseSizeLimit;
_compressionAlgorithm = compressionAlgorithm;
_retryEnabled = retryEnabled;
@ -218,6 +224,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
authTokenProvider:_authTokenProvider
initialMetadata:_initialMetadata
userAgentPrefix:_userAgentPrefix
userAgentSuffix:_userAgentSuffix
responseSizeLimit:_responseSizeLimit
compressionAlgorithm:_compressionAlgorithm
retryEnabled:_retryEnabled
@ -250,6 +257,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
initialMetadata:[[NSDictionary alloc] initWithDictionary:_initialMetadata
copyItems:YES]
userAgentPrefix:[_userAgentPrefix copy]
userAgentSuffix:[_userAgentSuffix copy]
responseSizeLimit:_responseSizeLimit
compressionAlgorithm:_compressionAlgorithm
retryEnabled:_retryEnabled
@ -275,6 +283,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
- (BOOL)hasChannelOptionsEqualTo:(GRPCCallOptions *)callOptions {
if (callOptions == nil) return NO;
if (!areObjectsEqual(callOptions.userAgentPrefix, _userAgentPrefix)) return NO;
if (!areObjectsEqual(callOptions.userAgentSuffix, _userAgentSuffix)) return NO;
if (!(callOptions.responseSizeLimit == _responseSizeLimit)) return NO;
if (!(callOptions.compressionAlgorithm == _compressionAlgorithm)) return NO;
if (!(callOptions.retryEnabled == _retryEnabled)) return NO;
@ -300,6 +309,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
- (NSUInteger)channelOptionsHash {
NSUInteger result = 0;
result ^= _userAgentPrefix.hash;
result ^= _userAgentSuffix.hash;
result ^= _responseSizeLimit;
result ^= _compressionAlgorithm;
result ^= _retryEnabled;
@ -334,6 +344,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
@dynamic authTokenProvider;
@dynamic initialMetadata;
@dynamic userAgentPrefix;
@dynamic userAgentSuffix;
@dynamic responseSizeLimit;
@dynamic compressionAlgorithm;
@dynamic retryEnabled;
@ -362,6 +373,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
authTokenProvider:kDefaultAuthTokenProvider
initialMetadata:kDefaultInitialMetadata
userAgentPrefix:kDefaultUserAgentPrefix
userAgentSuffix:kDefaultUserAgentSuffix
responseSizeLimit:kDefaultResponseSizeLimit
compressionAlgorithm:kDefaultCompressionAlgorithm
retryEnabled:kDefaultRetryEnabled
@ -392,6 +404,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
authTokenProvider:_authTokenProvider
initialMetadata:_initialMetadata
userAgentPrefix:_userAgentPrefix
userAgentSuffix:_userAgentSuffix
responseSizeLimit:_responseSizeLimit
compressionAlgorithm:_compressionAlgorithm
retryEnabled:_retryEnabled
@ -423,6 +436,7 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
authTokenProvider:_authTokenProvider
initialMetadata:_initialMetadata
userAgentPrefix:_userAgentPrefix
userAgentSuffix:_userAgentSuffix
responseSizeLimit:_responseSizeLimit
compressionAlgorithm:_compressionAlgorithm
retryEnabled:_retryEnabled
@ -480,6 +494,10 @@ static BOOL areObjectsEqual(id obj1, id obj2) {
_userAgentPrefix = [userAgentPrefix copy];
}
- (void)setUserAgentSuffix:(NSString *)userAgentSuffix {
_userAgentSuffix = [userAgentSuffix copy];
}
- (void)setResponseSizeLimit:(NSUInteger)responseSizeLimit {
_responseSizeLimit = responseSizeLimit;
}

@ -100,16 +100,23 @@
- (NSDictionary *)channelArgs {
NSMutableDictionary *args = [NSMutableDictionary new];
NSString *userAgent = [NSString
stringWithFormat:@"grpc-objc-%@/%@", [self getTransportTypeString], GRPC_OBJC_VERSION_STRING];
NSMutableString *userAgent = [[NSMutableString alloc] init];
NSString *userAgentPrefix = _callOptions.userAgentPrefix;
if (userAgentPrefix.length != 0) {
args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] =
[_callOptions.userAgentPrefix stringByAppendingFormat:@" %@", userAgent];
} else {
args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] = userAgent;
[userAgent appendFormat:@"%@ ", userAgentPrefix];
}
NSString *gRPCUserAgent = [NSString
stringWithFormat:@"grpc-objc-%@/%@", [self getTransportTypeString], GRPC_OBJC_VERSION_STRING];
[userAgent appendString:gRPCUserAgent];
NSString *userAgentSuffix = _callOptions.userAgentSuffix;
if (userAgentSuffix.length != 0) {
[userAgent appendFormat:@" %@", userAgentSuffix];
}
args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] = [userAgent copy];
NSString *hostNameOverride = _callOptions.hostNameOverride;
if (hostNameOverride) {
args[@GRPC_SSL_TARGET_NAME_OVERRIDE_ARG] = hostNameOverride;

Loading…
Cancel
Save