Skip to content

Commit b02f88e

Browse files
onynOnyn
andauthored
feat: allow configuring user agent (#1009)
Co-authored-by: Onyn <[email protected]>
1 parent e7b79f4 commit b02f88e

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

grpc-client-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/client/channelfactory/AbstractChannelFactory.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ protected void configure(final T builder, final String name) {
182182
configureSecurity(builder, name);
183183
configureLimits(builder, name);
184184
configureCompression(builder, name);
185+
configureUserAgent(builder, name);
185186
for (final GrpcChannelConfigurer channelConfigurer : this.channelConfigurers) {
186187
channelConfigurer.accept(builder, name);
187188
}
@@ -259,6 +260,20 @@ protected void configureCompression(final T builder, final String name) {
259260
}
260261
}
261262

263+
/**
264+
* Configures custom User-Agent for the channel.
265+
*
266+
* @param builder The channel builder to configure.
267+
* @param name The name of the client to configure.
268+
*/
269+
protected void configureUserAgent(final T builder, final String name) {
270+
final GrpcChannelProperties properties = getPropertiesFor(name);
271+
final String userAgent = properties.getUserAgent();
272+
if (userAgent != null) {
273+
builder.userAgent(userAgent);
274+
}
275+
}
276+
262277
@Override
263278
public Map<String, ConnectivityState> getConnectivityState() {
264279
return Collections.unmodifiableMap(this.channelStates);

grpc-client-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/client/config/GrpcChannelProperties.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,32 @@ public void setImmediateConnectTimeout(final Duration immediateConnectTimeout) {
422422

423423
// --------------------------------------------------
424424

425+
private String userAgent = null;
426+
427+
/**
428+
* Get custom User-Agent for the channel.
429+
*
430+
* @return custom User-Agent for the channel.
431+
*
432+
* @see #setUserAgent(String)
433+
*/
434+
public String getUserAgent() {
435+
return this.userAgent;
436+
}
437+
438+
/**
439+
* Sets custom User-Agent HTTP header.
440+
*
441+
* @param userAgent Custom User-Agent.
442+
*
443+
* @see ManagedChannelBuilder#userAgent(String)
444+
*/
445+
public void setUserAgent(final String userAgent) {
446+
this.userAgent = userAgent;
447+
}
448+
449+
// --------------------------------------------------
450+
425451
private final Security security = new Security();
426452

427453
/**
@@ -476,6 +502,9 @@ public void copyDefaultsFrom(final GrpcChannelProperties config) {
476502
if (this.immediateConnectTimeout == null) {
477503
this.immediateConnectTimeout = config.immediateConnectTimeout;
478504
}
505+
if (this.userAgent == null) {
506+
this.userAgent = config.userAgent;
507+
}
479508
this.security.copyDefaultsFrom(config.security);
480509
}
481510

0 commit comments

Comments
 (0)