示例#1
0
        public async Task <User> SignUp(string username, string password, string email)
        {
            var user = new User
            {
                Username = username.ToLower(),
                Email    = email
            };

            var checkUsername = await _ctx.Users
                                .Where(u => u.Username == username.ToLower())
                                .FirstOrDefaultAsync();

            if (!(checkUsername == null))
            {
                return(null);
            }

            _ctx.Users.Add(user);
            await _ctx.SaveChangesAsync();

            var hasher = new PasswordHasher(user);

            user.Password = hasher.HashPassword(password);

            _ctx.Users.Update(user);
            _ctx.UserProfiles.Add(UserProfile.CreateUserProfile(user));
            await _ctx.SaveChangesAsync();

            return(user);
        }
示例#2
0
        public async Task Invoke(HttpContext httpContext, IUserAgentService userAgentService,
                                 WrinkMeDataContext context)
        {
            var uaHeader = StringValues.Empty;

            httpContext.Request.Headers.TryGetValue("User-Agent", out uaHeader);
            var parsedUserAgent = userAgentService.ParseUserAgent(uaHeader);

            if (httpContext.Request.Path.ToString().Length == 9)
            {
                var token    = httpContext.Request.Path.ToString().Substring(1);
                var shortUrl = context.ShortUrls
                               .Include(s => s.Requests)
                               .FirstOrDefault(su => su.Token == token);
                if (shortUrl != null)
                {
                    shortUrl.Requests.Add(parsedUserAgent);
                    await context.SaveChangesAsync();

                    httpContext.Response.Redirect(shortUrl.OriginalUrl.ToString());
                }

                else
                {
                    httpContext.Response.Redirect(httpContext.Request.Host.ToString());
                }
            }


            await _next(httpContext);
        }
示例#3
0
        public async Task Run([TimerTrigger("15 1 * * * *")] TimerInfo myTimer, ILogger log)
        {
            var requestNumber = await _ctx.Requests
                                .Where(r => r.Device.IsBot == true).CountAsync();

            var totalRequest = await _ctx.Requests.CountAsync();

            var requests = await _ctx.Requests
                           .Where(r => r.Device.IsBot == true).ToArrayAsync();

            _ctx.Requests.RemoveRange(requests);
            await _ctx.SaveChangesAsync();

            log.LogInformation($"Deleted {requestNumber} requests at {DateTime.UtcNow}");
            log.LogInformation($"{requestNumber * 100 / totalRequest}% of requests were bots");
        }