4 using System.Collections.Generic;
7 using System.Threading.Tasks;
16 private HttpClient client {
get;
set; }
18 public async Task<T> MakeRequestAsync<T>(Uri url, HttpContent content = null, RequestType requstType = RequestType.GET)
21 if(requstType != RequestType.GET && content == null)
23 throw new ShodanException($
"Request type {requstType} requires content");
25 if(requstType == RequestType.DELETE || requstType == RequestType.PUT)
27 throw new NotImplementedException(
"Put and Delete requests have not been implemented properly");
29 HttpResponseMessage connection = null;
30 if(requstType == RequestType.GET)
32 connection = await client.GetAsync(url);
34 else if(requstType == RequestType.POST)
36 connection = await client.PostAsync(url, content);
40 connection.EnsureSuccessStatusCode();
49 var readResult = await connection.Content.ReadAsStringAsync();
50 if(typeof(T) == typeof(
string))
52 return readResult as T;
54 return JsonConvert.DeserializeObject<T>(readResult);
57 #region IDisposable Support 59 private bool disposedValue =
false;
61 protected virtual void Dispose(
bool disposing)
83 #endregion IDisposable Support
sane wrapper of http, and simple abstraction layer for unit testing
sane wrapper of http, and simple abstraction layer for unit testing