Exemplo n.º 1
0
        protected void LoadWebData(string uri, string mockFile)
        {
            this.lastLoadErrors = false;

            // MOCK
            if (this.useMocks)
            {
                // MOCK
                this.DecodeData(new MemoryStream(File.ReadAllBytes(mockFile)));
                if (autoReportDoneAfterDecode)
                {
                    this.DataLoaded();
                }
                return;
            }

            // CACHE

            FileCache fileCache = this.GetCache();

            if (fileCache != null)
            {
                if (fileCache.Exists())
                {
                    this.DecodeData(fileCache.Read());
                    if (autoReportDoneAfterDecode)
                    {
                        this.DataLoaded();
                    }
                    return;
                }
            }


            // LOAD
            try
            {
                var webRequest = WebRequest.Create(uri) as HttpWebRequest;

                if (webRequest == null)
                {
                    return;
                }
                webRequest.ContentType = this.requestContentType;
                using (var responseStream = webRequest.GetResponse().GetResponseStream())
                {
                    MemoryStream workStream = new MemoryStream();
                    responseStream.CopyTo(workStream);


                    workStream.Seek(0, SeekOrigin.Begin);

                    this.DecodeData(workStream);
                    if (autoReportDoneAfterDecode)
                    {
                        this.DataLoaded();
                    }

                    if (fileCache != null)
                    {
                        workStream.Seek(0, SeekOrigin.Begin);
                        fileCache.Write(workStream);
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.Instance.Debug(exception.Message);
                this.lastLoadErrors = true;
                this.DataLoaded();
            }
        }