1515
1616using System ;
1717using System . Collections . Generic ;
18+ using System . Diagnostics ;
1819using System . Globalization ;
1920using System . Text ;
2021using Amazon . Runtime . Telemetry ;
@@ -106,29 +107,28 @@ private static void SetRecursionDetectionHeader(IDictionary<string, string> head
106107
107108 private static void SetUserAgentHeader ( IRequestContext requestContext )
108109 {
109- var sb = new StringBuilder ( requestContext . ClientConfig . UserAgent ) ;
110+ var sb = new StringBuilder ( 256 ) ;
111+
112+ sb . Append ( InternalSDKUtils . ReplaceInvalidUserAgentCharacters ( requestContext . ClientConfig . UserAgent ) ) ;
110113
111114 var clientAppId = requestContext . ClientConfig . ClientAppId ;
112115 if ( ! string . IsNullOrEmpty ( clientAppId ) )
113- sb . AppendFormat ( " app/{0}" , clientAppId ) ;
116+ sb . Append ( " app/" ) . Append ( InternalSDKUtils . ReplaceInvalidUserAgentCharacters ( clientAppId ) ) ;
114117
115- var retryMode = requestContext . ClientConfig . RetryMode . ToString ( ) . ToLower ( ) ;
116- sb . AppendFormat ( " cfg/retry-mode#{0}" , retryMode ) ;
118+ sb . Append ( " cfg/retry-mode#}" ) . Append ( ToUserAgentHeaderString ( requestContext . ClientConfig . RetryMode ) ) ;
117119
118- sb . AppendFormat ( " md/{0}" , requestContext . IsAsync ? "ClientAsync" : "ClientSync" ) ;
120+ sb . Append ( " md/" ) . Append ( requestContext . IsAsync ? "ClientAsync" : "ClientSync" ) ;
119121
120- sb . AppendFormat ( " cfg/init-coll#{0}" , AWSConfigs . InitializeCollections ? "1" : "0" ) ;
122+ sb . Append ( " cfg/init-coll#" ) . Append ( AWSConfigs . InitializeCollections ? '1' : '0' ) ;
121123
122124 var userAgentAddition = requestContext . OriginalRequest . UserAgentAddition ;
123125 if ( ! string . IsNullOrEmpty ( userAgentAddition ) )
124126 {
125- sb . AppendFormat ( " {0}" , userAgentAddition ) ;
127+ sb . Append ( ' ' ) . Append ( InternalSDKUtils . ReplaceInvalidUserAgentCharacters ( userAgentAddition ) ) ;
126128 }
127129
128130 var userAgent = sb . ToString ( ) ;
129131
130- userAgent = InternalSDKUtils . ReplaceInvalidUserAgentCharacters ( userAgent ) ;
131-
132132 if ( requestContext . ClientConfig . UseAlternateUserAgentHeader )
133133 {
134134 requestContext . Request . Headers [ HeaderKeys . XAmzUserAgentHeader ] = userAgent ;
@@ -138,5 +138,18 @@ private static void SetUserAgentHeader(IRequestContext requestContext)
138138 requestContext . Request . Headers [ HeaderKeys . UserAgentHeader ] = userAgent ;
139139 }
140140 }
141+
142+ private static string ToUserAgentHeaderString ( RequestRetryMode requestRetryMode )
143+ {
144+ switch ( requestRetryMode )
145+ {
146+ case RequestRetryMode . Standard :
147+ return "standard" ;
148+ case RequestRetryMode . Adaptive :
149+ return "adaptive" ;
150+ default :
151+ return requestRetryMode . ToString ( ) . ToLowerInvariant ( ) ;
152+ }
153+ }
141154 }
142155}
0 commit comments