@@ -108,31 +108,48 @@ public Task<T> Put<T>(Uri uri, IDictionary<string, string> parameters, object bo
108108 return SendAPIRequest < T > ( uri , HttpMethod . Put , parameters , body ) ;
109109 }
110110
111+ public async Task < HttpStatusCode > PutRaw ( Uri uri , IDictionary < string , string > parameters , object body )
112+ {
113+ Ensure . ArgumentNotNull ( uri , nameof ( uri ) ) ;
114+
115+ var response = await SendRawRequest ( uri , HttpMethod . Put , parameters , body ) ;
116+ return response . StatusCode ;
117+ }
118+
111119 public void SetRequestTimeout ( TimeSpan timeout )
112120 {
113121 _httpClient . SetRequestTimeout ( timeout ) ;
114122 }
115123
116- public async Task < T > SendAPIRequest < T > (
124+ private IRequest CreateRequest (
117125 Uri uri ,
118126 HttpMethod method ,
119- IDictionary < string , string > parameters = null ,
120- object body = null
127+ IDictionary < string , string > parameters ,
128+ object body
121129 )
122130 {
123131 Ensure . ArgumentNotNull ( uri , nameof ( uri ) ) ;
124132 Ensure . ArgumentNotNull ( method , nameof ( method ) ) ;
125133
126- var request = new Request
134+ return new Request
127135 {
128136 BaseAddress = _baseAddress ,
129137 Parameters = parameters ,
130138 Endpoint = uri ,
131139 Method = method ,
132140 Body = body
133141 } ;
142+ }
134143
144+ private async Task < IAPIResponse < T > > SendSerializedRequest < T > ( IRequest request )
145+ {
135146 _jsonSerializer . SerializeRequest ( request ) ;
147+ var response = await SendRequest ( request ) ;
148+ return _jsonSerializer . DeserializeResponse < T > ( response ) ;
149+ }
150+
151+ private async Task < IResponse > SendRequest ( IRequest request )
152+ {
136153 await _authenticator . Apply ( request ) . ConfigureAwait ( false ) ;
137154 IResponse response = await _httpClient . DoRequest ( request ) . ConfigureAwait ( false ) ;
138155 if ( _retryHandler != null )
@@ -144,8 +161,29 @@ public async Task<T> SendAPIRequest<T>(
144161 } ) ;
145162 }
146163 ProcessErrors ( response ) ;
164+ return response ;
165+ }
147166
148- IAPIResponse < T > apiResponse = _jsonSerializer . DeserializeResponse < T > ( response ) ;
167+ public Task < IResponse > SendRawRequest (
168+ Uri uri ,
169+ HttpMethod method ,
170+ IDictionary < string , string > parameters = null ,
171+ object body = null
172+ )
173+ {
174+ var request = CreateRequest ( uri , method , parameters , body ) ;
175+ return SendRequest ( request ) ;
176+ }
177+
178+ public async Task < T > SendAPIRequest < T > (
179+ Uri uri ,
180+ HttpMethod method ,
181+ IDictionary < string , string > parameters = null ,
182+ object body = null
183+ )
184+ {
185+ var request = CreateRequest ( uri , method , parameters , body ) ;
186+ IAPIResponse < T > apiResponse = await SendSerializedRequest < T > ( request ) ;
149187 return apiResponse . Body ;
150188 }
151189
0 commit comments