public async Task <ActionResult> Get([FromQuery(Name = "user")] string user) { if (string.IsNullOrEmpty(user)) { return(BadRequest()); } if (_session.Authenticated) { // Check if signed user his avatars are cached. if (!await _cacheService.IsAvatarsCachedForSessionAsync()) { var avatars = await _hotelHttp.GetAvatarsAsync(); // Store looks cache for re-use. await _cacheService.CacheAvatarsAsync(avatars); await _cacheService.SetAvatarsCachedForSessionAsync(); } } // Check cache. if (_cacheService.TryGetAvatar(user, out var avatar)) { return(Redirect(_hotelSwfs.GetHabboImagingAvatar(avatar.Figure))); } return(NotFound("User could not be found.")); }
public async Task <ActionResult> ListAvatarsAsync() { var avatars = await _hotelHttp.GetAvatarsAsync(); await _cacheService.CacheAvatarsAsync(avatars); await _cacheService.SetAvatarsCachedForSessionAsync(); return(Ok(avatars.Select(item => new AvatarResponse { UniqueId = $"{item.AvatarId}", Name = item.Name, FigureString = item.Figure, Motto = item.Motto, BuildersClubMember = false, HabboClubMember = true, LastWebAccess = DateTimeOffset.UtcNow, CreationTime = DateTimeOffset.UtcNow, Banned = false }))); }
public async Task <ActionResult> Login([FromBody] LoginRequest request) { if (string.IsNullOrEmpty(request.Email) || string.IsNullOrEmpty(request.Password)) { return(StatusCode(401, new LoginErrorResponse { Message = LoginErrorCode.InvalidPassword, Captcha = false })); } // Fresh cookies. _hotelHttp.ClearCookies(); // Try to authenticate at sunnieday. var authResult = await _hotelHttp.AuthenticateAsync(request.Email, request.Password); if (authResult == false) { return(StatusCode(401, new LoginErrorResponse { Message = LoginErrorCode.InvalidPassword, Captcha = false })); } // Set to authenticated in session. _session.Authenticated = true; _session.SaveChanges = true; // Load avatars. var avatars = await _hotelHttp.GetAvatarsAsync(); // Cache avatars. await _cacheService.CacheAvatarsAsync(avatars); var avatar = avatars.First(); // Select first avatar. await _hotelHttp.SelectAvatarAsync(avatar.AvatarId); // Get avatar information. var me = await _hotelHttp.GetCurrentAvatarAsync(); // Fetch user data. return(StatusCode(200, new LoginResponse { UniqueId = $"{avatar.AvatarId}", Name = me.Name, FigureString = me.Figure, Motto = me.Motto, BuildersClubMember = false, // ??? HabboClubMember = true, LastWebAccess = DateTimeOffset.UtcNow, CreationTime = DateTimeOffset.UtcNow, SessionLogId = 1337, LoginLogId = 7331, Email = string.Empty, // TODO: Set? IdentityId = avatar.AvatarId, EmailVerified = true, IdentityVerified = true, IdentityType = "HABBO", Trusted = true, Force = new[] { "NONE" }, AccountId = 1, // ??? TODO Country = "nl", Traits = new[] { "USER" }, Partner = "NO_PARTNER" })); }