コード例 #1
0
 public SteamFriendListViewModel Load(SteamUserDetails user, List <SteamUser> friends, Dictionary <long, string> allApps)
 {
     User    = user;
     Friends = friends;
     AllApps = allApps;
     return(this);
 }
コード例 #2
0
        public SteamUserDetails GetByUserID(long id, bool reloadWishlistPrices = false)
        {
            DataCacheRepository repo  = _uow.GetRepo <DataCacheRepository>();
            DataCache           cache = repo.Get(id, CacheType.SteamUserDetails);

            if (cache != null && cache.StoredOn > DateTime.Now.AddHours(-1))
            {
                SteamUserDetails user = cache.Deserialize <SteamUserDetails>();
                if (reloadWishlistPrices)
                {
                    LoadWishlistPrices(user);
                    user.Wishlist = user.Wishlist.OrderByDescending(x => x.Pricing.IsOnSale).ToList();
                }
                return(user);
            }
            SteamUserDetails userDetails = new SteamUserDetails {
                User      = _steamApi.GetPlayerSummary(id),
                OwnedApps = _steamApi.GetOwnedApps(id)
            };

            SteamScraper scraper      = new SteamScraper();
            long?        lastPlayedID = scraper.GetLastPlayedGame(userDetails.User.ProfileUrl);

            if (lastPlayedID.HasValue)
            {
                userDetails.LastPlayedGame = _steamApi.GetAppStoreDetails(lastPlayedID.Value);
            }

            List <long> wishlistIDs = scraper.GetWishlist(userDetails.User.ProfileUrl);

            foreach (long wishlistID in wishlistIDs)
            {
                userDetails.Wishlist.Add(_steamApi.GetAppStoreDetails(wishlistID));
            }
            userDetails.Wishlist = userDetails.Wishlist.OrderByDescending(x => x.Pricing != null && x.Pricing.IsOnSale).ToList();

            userDetails.SteamLevel = _steamApi.GetSteamLevel(userDetails.User.ID);
            userDetails.Friends    = _steamApi.GetFriendList(userDetails.User.ID);

            bool isNew = cache == null;

            cache = new DataCache {
                EntityID    = userDetails.User.ID.ToString(),
                CacheTypeID = CacheType.SteamUserDetails,
                StoredOn    = DateTime.Now,
                JsonData    = JsonConvert.SerializeObject(userDetails)
            };

            if (isNew)
            {
                repo.Add(cache);
            }
            else
            {
                repo.Update(cache);
            }

            return(userDetails);
        }
コード例 #3
0
        public IActionResult Friends(long id)
        {
            SteamUserDetails user    = _logicService.SteamLogic.GetByUserID(id);
            List <SteamUser> friends = _logicService.SteamLogic.GetBasicDetailsByIDs(user.Friends.Select(x => x.FriendID));
            var allGames             = _logicService.SteamLogic.GetAllApps();

            return(View(new SteamFriendListViewModel().Load(user, friends, allGames)));
        }
コード例 #4
0
        private void LoadWishlistPrices(SteamUserDetails userDetails)
        {
            List <Pricing> prices = _steamApi.GetAppPrices(userDetails.Wishlist.Select(x => x.ID));

            foreach (StoreApp app in userDetails.Wishlist)
            {
                app.Pricing = prices.SingleOrDefault(x => x.AppID == app.ID);
            }
        }