Esempio n. 1
0
        public override bool Handle(HttpListenerContext context)
        {
            if (base.Handle(context))
            {
                return(true);
            }

            string path = context.Request.Url.LocalPath.Substring(BaseUrl.Length);

            switch (path)
            {
            case "/login/video":
                HandleFile(context, loginVideo);
                return(true);

            case "/login/image":
                HandleFile(context, loginImage);
                return(true);
            }

            #region lol-game-data

            if (!lolGameData.IsCompleted)
            {
                context.Response.StatusCode = 500;
                return(true);
            }

            int index = path.EndOf("/game-data/");
            if (index < 0)
            {
                return(false);
            }

            index = path.IndexOf("/", index, StringComparison.Ordinal);
            if (index < 0)
            {
                return(false);
            }

            path = path.Substring(index);

            var split = path.Split(new[] { '/', '.' }, StringSplitOptions.RemoveEmptyEntries);

            int    id;
            string url = null;
            if (path.StartsWith("/champion/icon/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.ChampionIcon(id);
            }

            if (path.StartsWith("/champion/tile/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.ChampionTile(id);
            }

            if (path.StartsWith("/champion/card/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.ChampionCard(id);
            }

            if (path.StartsWith("/champion/splash/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.ChampionSplash(id);
            }

            if (path.StartsWith("/champion/quote/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.ChampionQuote(id);
            }

            if (path.StartsWith("/champion/sfx/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.ChampionSfx(id);
            }

            if (path.StartsWith("/masteries/icon/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.MasteryIcon(id);
            }

            if (path.StartsWith("/items/icon/") && int.TryParse(split[2], out id))
            {
                url = GameDataAssets.ItemIcon(id);
            }

            if (path.StartsWith("/profileicon/") && int.TryParse(split[1], out id))
            {
                url = GameDataAssets.ProfileIcon(id);
            }

            if (path.StartsWith("/summonerspell/") && int.TryParse(split[1], out id))
            {
                url = GameDataAssets.SummonerSpellIcon(id);
            }

            if (url == null)
            {
                return(false);
            }
            WADArchive.FileInfo fileInfo;
            if (!lolGameData.Result.TryGetFile(url, out fileInfo))
            {
                return(false);
            }

            context.Response.Headers.Add("Cache-Control", "max-age=31536000, public");
            context.Response.ContentType = GetMimeType(context.Request.Url.LocalPath);

            using (var stream = lolGameData.Result.File.OpenRead())
                HandleStream(context, stream, fileInfo.Offset, fileInfo.Size);

            #endregion

            return(false);
        }
Esempio n. 2
0
 public async Task <ChampionDetails> GetChampionDetails(int id)
 {
     return(ExtractJSON <ChampionDetails>(await lolGameData, locale => GameDataAssets.ChampionDetails(id, locale)));
 }