public abstract class MirAPIUnitTestCommon
{
public abstract string GetBaseAddress();
/// <summary>
/// CRUD
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="api"></param>
/// <returns></returns>
protected TResult InvokeRequest<TResult, TArguemnt>(string api, HttpMethod httpMethod, TArguemnt arg)
{
using (var invoker = CreateMessageInvoker())
{
using (var cts = new CancellationTokenSource())
{
var request = new HttpRequestMessage(httpMethod, api);if (null != arg)
{
request.Content = new ObjectContent<TArguemnt>(arg, new JsonMediaTypeFormatter());
}
HttpClient httpClient = new HttpClient();
using (HttpResponseMessage response = httpClient.SendAsync(request, cts.Token).Result)
{
string result = response.Content.ReadAsStringAsync().Result;
return JsonConvert.DeserializeObject<TResult>(result);
}
}
}
}
private HttpMessageInvoker CreateMessageInvoker()
{
var config = new HttpConfiguration();
WebApiConfig.Register(config);
var server = new HttpServer(config);
var messageInvoker = new HttpMessageInvoker(server);
return messageInvoker;
}
}