using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using HospitalServerManager.InterfacesAndEnums; using Newtonsoft.Json; using System.IO; namespace HospitalServerManager.Model.Controllers { class WebService { private HttpClient httpClient; private IProvideDBInfo databaseInfoProvider { get; } public WebService(HttpClient httpClient) { this.httpClient = httpClient; InitializeHttpClient(new Uri("http://localhost:1433/")); } public WebService(Uri baseAdress) { httpClient = new HttpClient(new HttpClientHandler(), false); InitializeHttpClient(baseAdress); } private void InitializeHttpClient(Uri baseAdress) { httpClient.BaseAddress = baseAdress; httpClient.DefaultRequestHeaders.Clear(); //httpClient.DefaultRequestHeaders.Add("JSON", new MediaTypeWithQualityHeaderValue("application/json")); } public async Task> GetRecordAsync(string tableName) { // TODO: SPRAWDZIC CZY IMPLEMENTUJE INTERFACE!! List modelsList = new List(); //using (var client = httpClient) using (var message = new HttpRequestMessage(HttpMethod.Get, ApiCommandProvider.GetRecordHttpRequest(tableName))) using (var response = await httpClient.SendAsync(message)) { response.EnsureSuccessStatusCode(); var stream = await response.Content.ReadAsStreamAsync(); return DeserializeJsonFromStream>(stream); //return JsonConvert.DeserializeObject>(content); } } public async Task> GetColumnNamesAsync(string tableName) { using (var message = new HttpRequestMessage(HttpMethod.Get, ApiCommandProvider.GetColumnNamesHttpRequest(tableName))) using (var response = await httpClient.SendAsync(message)) { response.EnsureSuccessStatusCode(); var columns = await response.Content.ReadAsStringAsync(); var columnNames = columns.Split("."); var x = columnNames.ToList(); x.RemoveAt(x.Count - 1); return x; } } public async Task> GetColumnTypesAsync(string tableName) { using (var message = new HttpRequestMessage(HttpMethod.Get, ApiCommandProvider.GetColumnTypesHttpRequest(tableName))) using (var response = await httpClient.SendAsync(message)) { response.EnsureSuccessStatusCode(); var columns = await response.Content.ReadAsStringAsync(); var columnTypes = columns.Split("."); var x = columnTypes.ToList(); x.RemoveAt(x.Count - 1); var dictionary = new Dictionary(); for(int i = 0; i CreateNewRecordAsync(string tableName, IEnumerable valuesList) { using (var message = new HttpRequestMessage(HttpMethod.Get, ApiCommandProvider.CreateNewRecordAsync(tableName, valuesList.ToList()))) using (var response = await httpClient.SendAsync(message)) { response.EnsureSuccessStatusCode(); return true; } } private static T DeserializeJsonFromStream(Stream stream) { if (stream == null || stream.CanRead == false) return default(T); using (var sr = new StreamReader(stream)) using (var textReader = new JsonTextReader(sr)) { var js = new JsonSerializer(); var searchResult = js.Deserialize(textReader); return searchResult; } } private string GetRecordHttpRequest(string tableName) { return @"/getfromdb/" + tableName; } } }