Ejemplo n.º 1
0
 private static void Log(ErrorEntity errorEntity)
 {
     System.Diagnostics.Debug.WriteLine(errorEntity.ToString());
     if (RGHSettings.LogLevel >= errorEntity.ErrorLevel)
     {
         LiteDBHelper.Save(errorEntity);
     }
 }
        public async static void init()
        {
            try
            {
                Mac = GetMACAddress();

                #region Platforms

                var dataEntity = LiteDBHelper.Load <DataModel>().FirstOrDefault() ?? new DataModel()
                {
                    Id = 1, ScrapGuid = "", ScrapEmail = ""
                };
                //var burl = await GetGame("¤", 1, false, dataEntity.ScrapGuid);
                //BaseUrls = burl.BaseUrls;

                var tmp = await LiteDBHelper.LoadAsync <PlatformResponse>();

                platforms = tmp.FirstOrDefault()?.data.Platforms.Select(p => p) ?? null;
                platforms = null;
                Dictionary <int, List <string> > extensions;
                extensions = await Task.Run(() => JsonHandler.DownloadSerializedJsonData <EmuExtensionsEntity>("http://timeonline.se/RGHandler/EmulatorSupportList.json").Extensions.ToDictionary(em => em.id, em => em.extensoins));

                if (platforms == null)
                {
                    PlatformResponse p = null;
                    var headers        = new Dictionary <string, string>();

                    headers.Add("secret", RGHSettings.ProgGuid);
                    headers.Add("version", RGHSettings.Version);
                    await Task.Run(() => p = JsonHandler.DownloadSerializedJsonData <PlatformResponse>(PlatformApiPath, headers));

                    if (p != null)
                    {
                        await Task.Run(() =>
                        {
                            platforms = p.data?.Platforms;/*?.Select(i => i.Value);*/

                            foreach (var pl in platforms)
                            {
                                pl.Extensions = extensions.ContainsKey(pl.Id) && !extensions[pl.Id].Any(s => s == "?") ? extensions[pl.Id] : new List <string>();
                                var icon      = pl.Icon;
                                var url       = PlatformImagePath + icon;
                                if (LiteDBHelper.FileExists("platform/images", icon))
                                {
                                    continue;
                                }
                                using (WebClient client = new WebClient())
                                {
                                    byte[] data = client.DownloadData(url);
                                    using (MemoryStream mem = new MemoryStream(data))
                                    {
                                        LiteDBHelper.SaveFile("platform/images", icon, mem);
                                    }
                                }
                            }
                        });

                        LiteDBHelper.Save(p);
                    }
                }
                else
                {
                    foreach (var pl in platforms)
                    {
                        pl.Extensions = extensions.ContainsKey(pl.Id) && !extensions[pl.Id].Any(s => s == "?") ? extensions[pl.Id] : new List <string>();
                    }
                }

                foreach (var pl in platforms)
                {
                    using (MemoryStream mem = new MemoryStream())
                    {
                        LiteDBHelper.LoadFile("platform/images", pl.Icon, mem);
                        PlatformModels.Add(new PlatformModel(pl, LoadImage(mem)));
                    }
                }

                #endregion Platforms
            }
            catch (Exception ex)
            {
                ErrorHandler.Error(ex);
                throw;
            }
        }