Beispiel #1
0
        private async Task <string> Get(string rescueGroupApiUri, string cachedDataName, dynamic apiQueryParameters)
        {
            var request = (HttpWebRequest)WebRequest.Create(rescueGroupApiUri);

            request.Method      = "POST";
            request.ContentType = "application/json";

            var jsonData = JsonConvert.SerializeObject(apiQueryParameters);
            var bytes    = Encoding.UTF8.GetBytes(jsonData);

            var requestStream = await request.GetRequestStreamAsync();

            requestStream.Write(bytes, 0, bytes.Length);


            var result = string.Empty;

            if (await _storageService.IsRescueGroupApiCachedDataAvailable(cachedDataName))
            {
                using (var cachedStream = new MemoryStream())
                {
                    await _storageService.GetRescueGroupApiCachedData(cachedDataName, cachedStream);

                    using (var cachedReader = new StreamReader(cachedStream))
                    {
                        result = cachedReader.ReadToEnd();
                    }
                }
            }
            else
            {
                var response = await request.GetResponseAsync();

                var stream = response.GetResponseStream();
                if (stream != null)
                {
                    StreamReader reader;
                    using (var ms = new MemoryStream())
                    {
                        stream.CopyTo(ms);
                        ms.Position = 0;
                        reader      = new StreamReader(ms);
                        result      = reader.ReadToEnd();

                        ms.Position = 0;
                        await _storageService.AddRescueGroupApiCachedData(cachedDataName, ms);
                    }
                    stream.Dispose();
                    reader.Dispose();
                }
            }

            return(result);
        }