Ejemplo n.º 1
0
        public async Task <ActionResult> CreateSlugCollection(IEnumerable <SlugForCreationDto> slugsToAdd)
        {
            _logger.LogInformation($"bulk add new slugs");

            if (slugsToAdd == null || slugsToAdd.Count() == 0)
            {
                return(BadRequest());
            }

            List <SlugEntity> slugsToReturn = new List <SlugEntity>();
            int slugLength = _configuration.GetValue <short>("SlugLength", 5);

            foreach (var slug in slugsToAdd)
            {
                if (string.IsNullOrWhiteSpace(slug.Slug))
                {
                    slug.Slug = NanoidService.Create(slugLength);
                }

                SlugEntity newSlug = new SlugEntity
                {
                    Slug = slug.Slug,
                    Url  = slug.Url
                };
                _murlRepository.AddSlug(newSlug);
                slugsToReturn.Add(newSlug);
            }

            await _murlRepository.SaveChangesAsync();

            string slugs = string.Join(",", slugsToAdd.Select(s => s.Slug));

            return(CreatedAtRoute(nameof(GetSlugCollection), new { slugs }, slugsToAdd));
        }
Ejemplo n.º 2
0
        public void AddSlug(SlugEntity newSlug)
        {
            if (newSlug == null)
            {
                throw new ArgumentNullException(nameof(newSlug));
            }

            _murlContext.Slugs.Add(newSlug);
        }
Ejemplo n.º 3
0
        public async Task <ActionResult <SlugDto> > DeleteSlug(string slug)
        {
            SlugEntity slugToDelete = await _murlRepository.GetSlugAsync(slug);

            if (slugToDelete == null)
            {
                return(NotFound(slug));
            }

            _murlRepository.DeleteSlug(slugToDelete);
            await _murlRepository.SaveChangesAsync();

            return(Ok());
        }
Ejemplo n.º 4
0
        public async Task <ActionResult <SlugDto> > GetSlug(string slug)
        {
            _logger.LogInformation(string.Format($"getting URL values for {slug}"));

            // check if slug exists
            SlugEntity existingSlug = await _murlRepository.GetSlugAsync(slug);

            if (existingSlug == null)
            {
                string fullUrl = string.Format($"{Request.GetEncodedUrl()}");
                return(new NotFoundObjectResult(new { message = "URL not found.", body = new { slug, url = fullUrl } }));
            }
            else
            {
                return(new OkObjectResult(existingSlug.Url));
            }
        }
Ejemplo n.º 5
0
        public async Task <ActionResult <SlugDto> > CreateSlug([FromBody] SlugForCreationDto slugForCreation)
        {
            _logger.LogInformation(string.Format($"creating new slug for URL: {slugForCreation.Url}"));

            // map to entity
            SlugEntity slugToAdd = new SlugEntity()
            {
                Url = slugForCreation.Url
            };

            int slugLength = _configuration.GetValue <short>("SlugLength", 5);

            slugToAdd.Slug = NanoidService.Create(slugLength);
            _murlRepository.AddSlug(slugToAdd);
            await _murlRepository.SaveChangesAsync();

            return(CreatedAtRoute(nameof(GetSlug), new { slug = slugToAdd.Slug }, slugToAdd));
        }
Ejemplo n.º 6
0
        public async Task <ActionResult> CreateSlugCollection(IEnumerable <SlugForCreationDto> slugsToAdd)
        {
            List <SlugEntity> slugsToReturn = new List <SlugEntity>();

            foreach (var slug in slugsToAdd)
            {
                SlugEntity newSlug = new SlugEntity()
                {
                    Slug = slug.Slug,
                    Url  = slug.Url
                };
                _murlRepository.AddSlug(newSlug);
                slugsToReturn.Add(newSlug);
            }

            await _murlRepository.SaveChangesAsync();

            string slugs = string.Join(",", slugsToAdd.Select(s => s.Slug));

            return(CreatedAtRoute(nameof(GetSlugCollection), new { slugs }, slugsToAdd));
        }
Ejemplo n.º 7
0
 public void DeleteSlug(SlugEntity slug)
 {
     _murlContext.Slugs.Remove(slug);
 }