Exemplo n.º 1
0
        private async void GetData_Callback(IAsyncResult result)
        {
            try
            {
                HttpWebRequest request  = (HttpWebRequest)result.AsyncState;
                WebResponse    response = request.EndGetResponse(result);

                using (Stream stream = response.GetResponseStream())
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        string json = reader.ReadToEnd();
                        T      obj  = JsonSerializer.Deserialize <T>(json);
                        if (obj != null)
                        {
                            App.CurrentInstance.RunAsync(() =>
                            {
                                onCallback(obj);
                            });
                        }

                        if (toCacheData)
                        {
                            await IsolatedStorageHelper.WriteToFileAsync(moduleName, fileName, json);
                        }
                    }
                Loaded = true;
            }
            catch (Exception)
            {
            }
            finally
            {
                Busy = false;
            }
        }
Exemplo n.º 2
0
        public async Task <T> LoadLocalData(string filePath)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return(null);
            }

            T result = null;

            //load cache
            try
            {
                var json = await IsolatedStorageHelper.ReadFileAsync(filePath);

                if (!string.IsNullOrEmpty(json))
                {
                    result = JsonSerializer.Deserialize <T>(json);
                }
            }
            catch (Exception ex)
            {
            }

            return(result);
        }
Exemplo n.º 3
0
        public async Task <T> LoadLocalData(string module, string file)
        {
            if ((string.IsNullOrEmpty(module) || string.IsNullOrEmpty(file)))
            {
                return(null);
            }

            T result = null;

            //load cache
            try
            {
                //ensure file existence
                //await IsolatedStorageHelper.GetFileAsync(moduleName, fileName, Windows.Storage.CreationCollisionOption.OpenIfExists);
                var json = await IsolatedStorageHelper.ReadFileAsync(module, file);

                if (!string.IsNullOrEmpty(json))
                {
                    result = JsonSerializer.Deserialize <T>(json);
                }
            }
            catch (Exception ex)
            {
            }

            return(result);
        }
Exemplo n.º 4
0
        public async Task <StorageFile> Download(string url, string filePath, ProgressBar progressBar)
        {
            progressBarControl = progressBar;
            //onCompleteAction = onComplete;

            if (cts == null)
            {
                cts = new CancellationTokenSource();
            }

            if (progressBar != null)
            {
                progressBar.Maximum = 100d;
            }

            try
            {
                Uri source = new Uri(url, UriKind.Absolute);
                destinationFile = await IsolatedStorageHelper.GetFileAsync(filePath, CreationCollisionOption.ReplaceExisting);

                BackgroundDownloader downloader = new BackgroundDownloader();
                DownloadOperation    download   = downloader.CreateDownload(source, destinationFile);
                //download.Priority = BackgroundTransferPriority.High;

                // Attach progress and completion handlers.
                await HandleDownloadAsync(download);
            }
            catch (Exception ex)
            {
            }

            return(destinationFile);
        }
Exemplo n.º 5
0
        public async void Load(string dataURL, bool cacheData, string module, string file, Action <T> callback)
        {
            if (cacheData && (string.IsNullOrEmpty(module) || string.IsNullOrEmpty(file)))
            {
                return;
            }

            //for callback
            onCallback  = callback;
            toCacheData = cacheData;
            moduleName  = module;
            fileName    = file;

            if (!NetworkHelper.CheckInternet())
            {
                //load cache
                if (cacheData)
                {
                    try
                    {
                        var cachedJson = await IsolatedStorageHelper.ReadFileAsync(moduleName, fileName);

                        T obj = JsonSerializer.Deserialize <T>(cachedJson);
                        if (obj != null)
                        {
                            App.CurrentInstance.RunAsync(() =>
                            {
                                onCallback(obj);
                            });
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
                return;
            }

            //download new
            try
            {
                HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri(dataURL));
                request.Method = "GET";
                request.BeginGetResponse(GetData_Callback, request);

                Loaded = false;
                Busy   = true;
            }
            catch (WebException e)
            {
            }
            catch (Exception e)
            {
            }
        }
Exemplo n.º 6
0
        public static async Task <T> Deserialize <T>(string file)
        {
            T val;

            string content = await IsolatedStorageHelper.ReadFileAsync(file);

            using (StringReader sr = new StringReader(content))
            {
                XmlSerializer xs = new XmlSerializer(typeof(T));
                val = (T)xs.Deserialize(sr);
            }
            return(val);
        }
Exemplo n.º 7
0
        public static async Task CopyContentFileToLocalFolder(string path)
        {
            string[] arr      = path.Split('/');
            string   fileName = string.Empty;

            for (int i = arr.Length; i > 0; i--)
            {
                fileName = Path.Combine(arr[i - 1], fileName);
            }

            string uri  = "ms-appx:///" + path;
            var    rass = RandomAccessStreamReference.CreateFromUri(new Uri(uri, UriKind.RelativeOrAbsolute));
            IRandomAccessStream stream = await rass.OpenReadAsync();

            await IsolatedStorageHelper.WriteToFileAsync(fileName, stream);
        }
Exemplo n.º 8
0
        public static async Task FastIterate(string file, Action <string, string> actionOnEachNode)
        {
            string content = await IsolatedStorageHelper.ReadFileAsync(file);

            if (content.Contains("?>"))
            {
                int from = content.IndexOf("?>");
                content = content.Substring(from + 2);
            }

            string           nodeName  = string.Empty;
            string           nodeValue = string.Empty;
            int              maxIndex  = content.Length - 1;
            int              i         = 0;
            XmlParsingStatus status    = XmlParsingStatus.NodeEnded;

            while (i < maxIndex)
            {
                switch (status)
                {
                case XmlParsingStatus.BeginningOrEnd:
                    if (content[i] == '/')
                    {
                        status = XmlParsingStatus.EndOfNodeDetected;
                    }
                    else
                    {
                        status = XmlParsingStatus.BeginningOfNodeDetected;
                    }
                    break;

                case XmlParsingStatus.BeginningOfNodeDetected:
                    if (content[i] == '>')
                    {
                        status    = XmlParsingStatus.ValueCollecting;
                        nodeValue = string.Empty;
                    }
                    break;

                case XmlParsingStatus.ValueCollecting:
                    if (content[i] == '<')
                    {
                        status = XmlParsingStatus.BeginningOrEnd;
                    }
                    else
                    {
                        nodeValue += content[i];
                    }
                    break;

                case XmlParsingStatus.EndOfNodeDetected:
                    if (content[i] == '>')
                    {
                        status = XmlParsingStatus.NodeEnded;
                        actionOnEachNode(nodeName, nodeValue);
                        nodeName  = string.Empty;
                        nodeValue = string.Empty;
                    }
                    else
                    {
                        nodeName += content[i];
                    }
                    break;

                case XmlParsingStatus.NodeEnded:
                    if (content[i] == '<')
                    {
                        status = XmlParsingStatus.BeginningOrEnd;
                    }
                    break;

                default:
                    break;
                }

                i++;
            }
        }