public async Task <AbstractDownloadState> GetDownloaderState(dynamic archiveINI)
        {
            var id      = archiveINI?.General?.itemID;
            var steamID = archiveINI?.General?.steamID;
            var size    = archiveINI?.General?.itemSize;

            _item = new SteamWorkshopItem
            {
                ItemID                                                        = id != null?int.Parse(id) : 0,
                                                   Size                       = size != null?int.Parse(size) : 0,
                                                                         Game = steamID != null?GameRegistry.GetBySteamID(int.Parse(steamID)) : null
            };
            return(new State {
                Item = _item
            });
        }
        public async Task <AbstractDownloadState?> GetDownloaderState(dynamic archiveINI, bool quickMode)
        {
            var id      = archiveINI?.General?.itemID;
            var steamID = archiveINI?.General?.steamID;
            var size    = archiveINI?.General?.itemSize;

            if (steamID == null)
            {
                throw new ArgumentException("Steam workshop item had no steam ID.");
            }
            var item = new SteamWorkshopItem(GameRegistry.GetBySteamID(int.Parse(steamID)))
            {
                ItemID                       = id != null?int.Parse(id) : 0,
                                        Size = size != null?int.Parse(size) : 0,
            };

            return(new State(item));
        }
        public override async ValueTask <Directive> Run(RawSourceFile source)
        {
            if (!_regex.IsMatch(source.Path))
            {
                return(null);
            }

            try
            {
                var lines = File.ReadAllLines(source.AbsolutePath);
                var id    = 0;
                lines.Where(l => l.StartsWith("itemID=")).Do(l => int.TryParse(l.Replace("itemID=", ""), out id));
                if (id == 0)
                {
                    return(null);
                }

                SteamWorkshopItem item = null;
                _game.WorkshopItems.Where(i => i.ItemID == id).Do(i => item = i);
                if (item == null)
                {
                    return(null);
                }

                var fromSteam = source.EvolveTo <SteamMeta>();
                fromSteam.SourceDataID = _compiler.IncludeFile(source.AbsolutePath);
                fromSteam.ItemID       = item.ItemID;
                fromSteam.Size         = item.Size;
                return(fromSteam);
            }
            catch (Exception e)
            {
                Utils.Error(e, $"Exception while trying to evolve source to FromSteam");
                return(null);
            }
        }
 public State(SteamWorkshopItem item)
 {
     Item = item;
 }