async Task <T> MakeWebRequestAsync <T>( ParkopediaApi apiName, Dictionary <string, string> parameters) { T result = default(T); string query = MakeQuery(apiName, parameters); var httpClient = new HttpClient(); var response = await httpClient.GetAsync(new Uri(query, UriKind.Absolute)); if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); result = JsonConvert.DeserializeObject <T>(responseBody); } return(result); }
string MakeQuery(ParkopediaApi apiName, Dictionary <string, string> parameters) { var relativePath = $"{baseApiUrlPath}/{apiName.ToString().ToLower()}"; var path = $"{baseServiceUrlFormat}{relativePath}?"; var queryBuilder = new StringBuilder(); foreach (var serviceArgument in this.argumentProviders) { AppendQueryEntry(queryBuilder, serviceArgument.Key, serviceArgument.Value()); } foreach (var parameter in parameters) { AppendQueryEntry(queryBuilder, parameter.Key, parameter.Value); } var signature = CalculateSignature(relativePath, parameters); AppendQueryEntry(queryBuilder, sigParameterName, signature); var query = $"{path}{queryBuilder.ToString()}"; return(query); }