示例#1
0
        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);
        }
示例#2
0
        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);
        }