@@ -47,6 +47,26 @@ protected virtual HttpContent CreateHttpContent(object value)
4747 return content ;
4848 }
4949
50+ protected virtual void EnsureTemplate ( ProxyMethodDescriptor descriptor ,
51+ ProxyUriDefinition proxyUriDefinition ,
52+ RequestContext requestContext ,
53+ IDictionary < string , object > argsDic ,
54+ List < string > keys )
55+ {
56+ if ( descriptor . Template . HasValue ( ) )
57+ {
58+ if ( proxyUriDefinition . HasParameter )
59+ {
60+ for ( int i = 0 ; i < proxyUriDefinition . ParameterParts . Count ; i ++ )
61+ {
62+ var key = keys [ i ] ;
63+ proxyUriDefinition . UriBuilder . Path += ( $ "/{ WebUtility . UrlEncode ( requestContext . Args [ i ] ? . ToString ( ) ) } ") ;
64+ argsDic . Remove ( key ) ;
65+ }
66+ }
67+ }
68+ }
69+
5070 public async Task CreateRequestContentAsync ( RequestContext requestContext ,
5171 HttpRequestMessage request ,
5272 ProxyMethodDescriptor descriptor ,
@@ -69,6 +89,9 @@ public async Task CreateRequestContentAsync(RequestContext requestContext,
6989 }
7090 else if ( descriptor . HttpMethod == HttpMethod . Put )
7191 {
92+ EnsureTemplate ( descriptor , proxyUriDefinition , requestContext , argsDic , keys ) ;
93+ argsCount = argsDic . Count ;
94+ request . RequestUri = uriBuilder . Uri ;
7295 if ( argsCount == 1 )
7396 {
7497 request . Content = SerializeToString ( argsDic . First ( ) . Value ) ;
@@ -90,19 +113,7 @@ public async Task CreateRequestContentAsync(RequestContext requestContext,
90113 }
91114 if ( descriptor . HttpMethod == HttpMethod . Get || descriptor . HttpMethod == HttpMethod . Delete )
92115 {
93- if ( descriptor . Template . HasValue ( ) )
94- {
95- if ( proxyUriDefinition . HasParameter )
96- {
97- for ( int i = 0 ; i < proxyUriDefinition . ParameterParts . Count ; i ++ )
98- {
99- var key = keys [ i ] ;
100- uriBuilder . Path += ( $ "/{ WebUtility . UrlEncode ( requestContext . Args [ i ] ? . ToString ( ) ) } ") ;
101- argsDic . Remove ( key ) ;
102- }
103- }
104- }
105-
116+ EnsureTemplate ( descriptor , proxyUriDefinition , requestContext , argsDic , keys ) ;
106117 request . RequestUri = QueryStringResolver . Parse ( uriBuilder , argsDic ) ;
107118 }
108119 }
0 commit comments