1
1
using System ;
2
+ using System . Collections . Generic ;
2
3
using System . Net . Http ;
3
4
using System . Net . Http . Headers ;
4
5
using System . Threading . Tasks ;
@@ -102,42 +103,66 @@ public async Task RunOnDatabaseAsync(Func<TDbContext, Task> asyncAction)
102
103
}
103
104
104
105
public async Task < ( HttpResponseMessage httpResponse , TResponseDocument responseDocument ) >
105
- ExecuteGetAsync < TResponseDocument > ( string requestUrl )
106
+ ExecuteGetAsync < TResponseDocument > ( string requestUrl ,
107
+ IEnumerable < MediaTypeWithQualityHeaderValue > acceptHeaders = null )
106
108
{
107
- return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Get , requestUrl ) ;
109
+ return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Get , requestUrl , null , null , acceptHeaders ) ;
108
110
}
109
111
110
112
public async Task < ( HttpResponseMessage httpResponse , TResponseDocument responseDocument ) >
111
- ExecutePostAsync < TResponseDocument > ( string requestUrl , object requestBody )
113
+ ExecutePostAsync < TResponseDocument > ( string requestUrl , object requestBody ,
114
+ string contentType = HeaderConstants . MediaType ,
115
+ IEnumerable < MediaTypeWithQualityHeaderValue > acceptHeaders = null )
112
116
{
113
- return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Post , requestUrl , requestBody ) ;
117
+ return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Post , requestUrl , requestBody , contentType ,
118
+ acceptHeaders ) ;
114
119
}
115
120
116
121
public async Task < ( HttpResponseMessage httpResponse , TResponseDocument responseDocument ) >
117
- ExecutePatchAsync < TResponseDocument > ( string requestUrl , object requestBody )
122
+ ExecutePatchAsync < TResponseDocument > ( string requestUrl , object requestBody ,
123
+ string contentType = HeaderConstants . MediaType ,
124
+ IEnumerable < MediaTypeWithQualityHeaderValue > acceptHeaders = null )
118
125
{
119
- return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Patch , requestUrl , requestBody ) ;
126
+ return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Patch , requestUrl , requestBody , contentType ,
127
+ acceptHeaders ) ;
120
128
}
121
129
122
130
public async Task < ( HttpResponseMessage httpResponse , TResponseDocument responseDocument ) >
123
- ExecuteDeleteAsync < TResponseDocument > ( string requestUrl , object requestBody = null )
131
+ ExecuteDeleteAsync < TResponseDocument > ( string requestUrl , object requestBody = null ,
132
+ string contentType = HeaderConstants . MediaType ,
133
+ IEnumerable < MediaTypeWithQualityHeaderValue > acceptHeaders = null )
124
134
{
125
- return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Delete , requestUrl , requestBody ) ;
135
+ return await ExecuteRequestAsync < TResponseDocument > ( HttpMethod . Delete , requestUrl , requestBody , contentType ,
136
+ acceptHeaders ) ;
126
137
}
127
138
128
139
private async Task < ( HttpResponseMessage httpResponse , TResponseDocument responseDocument ) >
129
- ExecuteRequestAsync < TResponseDocument > ( HttpMethod method , string requestUrl , object requestBody = null )
140
+ ExecuteRequestAsync < TResponseDocument > ( HttpMethod method , string requestUrl , object requestBody ,
141
+ string contentType , IEnumerable < MediaTypeWithQualityHeaderValue > acceptHeaders )
130
142
{
131
143
var request = new HttpRequestMessage ( method , requestUrl ) ;
132
144
string requestText = SerializeRequest ( requestBody ) ;
133
145
134
146
if ( ! string . IsNullOrEmpty ( requestText ) )
135
147
{
136
148
request . Content = new StringContent ( requestText ) ;
137
- request . Content . Headers . ContentType = new MediaTypeHeaderValue ( HeaderConstants . MediaType ) ;
149
+
150
+ if ( contentType != null )
151
+ {
152
+ request . Content . Headers . ContentType = MediaTypeHeaderValue . Parse ( contentType ) ;
153
+ }
138
154
}
139
155
140
156
using HttpClient client = Factory . CreateClient ( ) ;
157
+
158
+ if ( acceptHeaders != null )
159
+ {
160
+ foreach ( var acceptHeader in acceptHeaders )
161
+ {
162
+ client . DefaultRequestHeaders . Accept . Add ( acceptHeader ) ;
163
+ }
164
+ }
165
+
141
166
HttpResponseMessage responseMessage = await client . SendAsync ( request ) ;
142
167
143
168
string responseText = await responseMessage . Content . ReadAsStringAsync ( ) ;
@@ -148,11 +173,11 @@ public async Task RunOnDatabaseAsync(Func<TDbContext, Task> asyncAction)
148
173
149
174
private string SerializeRequest ( object requestBody )
150
175
{
151
- string requestText = requestBody is string stringRequestBody
152
- ? stringRequestBody
153
- : JsonConvert . SerializeObject ( requestBody ) ;
154
-
155
- return requestText ;
176
+ return requestBody == null
177
+ ? null
178
+ : requestBody is string stringRequestBody
179
+ ? stringRequestBody
180
+ : JsonConvert . SerializeObject ( requestBody ) ;
156
181
}
157
182
158
183
private TResponseDocument DeserializeResponse < TResponseDocument > ( string responseText )
0 commit comments