示例#1
0
        public CreateUrlViewModel(ShortUrlDTO shortUrl)
        {
            Check.Argument.IsNotNull(shortUrl, "shortUrl");

            Title      = shortUrl.Title;
            Url        = shortUrl.Url;
            Alias      = shortUrl.Alias;
            VisitUrl   = shortUrl.VisitUrl;
            PreviewUrl = shortUrl.PreviewUrl;
        }
示例#2
0
        public ShortUrlDTOTests()
        {
            alias = new Alias {
                Name = "dtntshtt", ShortUrl = new ShortUrl {
                    Title = "Daily .NET News", Url = "http://dotnetshoutout.com", SpamStatus = SpamStatus.Clean
                }
            };
            alias.Visits.AddRange(new[] { new Visit(), new Visit(), new Visit() });

            dto = new ShortUrlDTO(alias, 3, "http://shrinkr.com/1", "http://shrinkr.com/Preview/1");
        }
示例#3
0
        public ShortUrlResultTests()
        {
            var alias = new Alias {
                Name = "dtntshtt", ShortUrl = new ShortUrl {
                    Title = "Daily .NET News", Url = "http://dotnetshoutout.com"
                }
            };

            dto = new ShortUrlDTO(alias, 3, "http://shrinkr.com/1", "http://shrinkr.com/Preview/1");

            result = new ShortUrlResult(dto);
        }
        public void ShortUrl_should_return_view_result_with_short_url_as_model()
        {
            var alias = new Alias {
                ShortUrl = new ShortUrl()
            };
            var shortUrl = new ShortUrlDTO(alias, 3, "http://visiturl.com", "http://previewurl.com");

            adminService.Setup(svc => svc.GetShortUrl(It.IsAny <string>())).Returns(shortUrl);

            var view = (ViewResult)controller.ShortUrl(It.IsAny <string>());

            Assert.Same(shortUrl, view.ViewData.Model);
        }
 public ActionResult GetStats(string code)
 {
     try
     {
         string   host = ApplicationEnv.GetApiUrl(HttpContext);
         ShortUrl url  = ShortUrlBusiness.Stats(code);
         var      dto  = new ShortUrlDTO(url, host, fullData: true);
         dto.countClick = ClickBusiness.CountClicksByCode(code);
         return(Ok(dto));
     }
     catch (ShortUrlException e)
     {
         return(BadRequest(e.Message));
     }
 }
        public ShortUrlListResultTests()
        {
            var alias = new Alias {
                Name = "dtntshtt", ShortUrl = new ShortUrl {
                    Title = "Daily .NET News", Url = "http://dotnetshoutout.com"
                }
            };

            dto = new ShortUrlDTO(alias, 3, "http://shrinkr.com/1", "http://shrinkr.com/Preview/1");

            var pagedResult = new PagedResult <ShortUrlDTO>(new List <ShortUrlDTO> {
                dto
            }, 1);

            result = new ShortUrlListResult(pagedResult);
        }
示例#7
0
        public void Create_should_return_api_result_with_create_url_view_model()
        {
            controller.MockHttpContext("/", "~/Create", "GET");

            var shortUrl = new ShortUrl {
                Url = "http://shirnkr.com/someurl"
            };
            var shortUrlDto = new ShortUrlDTO(new Alias {
                ShortUrl = shortUrl
            }, 3, "http://shirnkr.com/visit", "http://shirnkr.com/preview");
            var result = new ShortUrlResult(shortUrlDto);

            shortUrlService.Setup(svc => svc.CreateWithApiKey(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(result);

            Assert.IsType <ApiResult>(controller.Create(new CreateShortUrlApiCommand()));
            Assert.Equal(shortUrl.Url, ((CreateUrlViewModel)controller.ViewData.Model).Url);
        }
 public ActionResult Post([FromBody] SaveShortUrlRequestDTO payload)
 {
     try
     {
         ShortUrl    shortUrl = ShortUrlBusiness.MakeShortUrl(payload.url, payload.userId);
         ShortUrlDTO dto      = new ShortUrlDTO(shortUrl, ApplicationEnv.GetApiUrl(HttpContext));
         return(Ok(dto));
     }
     catch (InvalidUrlException e)
     {
         e.Ship();
         return(StatusCode((int)HttpStatusCode.NotAcceptable));
     }
     catch (ShortUrlException e)
     {
         return(BadRequest(e.Message));
     }
 }
示例#9
0
        public void ExecuteResult_should_write_correct_content_to_response(ApiResponseFormat responseFormat, string content)
        {
            var alias = new Alias {
                Name = "MSDN", ShortUrl = new ShortUrl {
                    Title = "MSDN", Url = "http://msdn.microsoft.com/"
                }
            };
            var shortUrlDto = new ShortUrlDTO(alias, 3, "http://shrinkr.com/msdn", "http://shrinkr.com/Preview/msdn");
            var viewModel   = new CreateUrlViewModel(shortUrlDto);

            controllerContext.Controller.ViewData = new ViewDataDictionary(viewModel);

            var result = new ApiResult(responseFormat);

            result.ExecuteResult(controllerContext);

            httpContext.Verify(c => c.Response.Write(content));
        }
示例#10
0
        public ActionResult Visit(ShortUrlVisitCommand command)
        {
            Check.Argument.IsNotNull(command, "command");

            bool sameDomain = !string.IsNullOrWhiteSpace(command.Referrer) && command.Referrer.StartsWith(Url.ApplicationRoot(), StringComparison.OrdinalIgnoreCase);

            if (!sameDomain)
            {
                ShortUrlResult shortUrlResult = shortUrlService.GetByAlias(command.Alias);
                ShortUrlDTO    shortUrl       = shortUrlResult.ShortUrl;

                if (shortUrl == null)
                {
                    return(new NotFoundResult());
                }

                if (shortUrl.SpamStatus.IsSpam())
                {
                    return(RedirectToAction("Preview", new { alias = shortUrl.Alias }));
                }
            }

            if (sameDomain)
            {
                command.Referrer = null;
            }

            VisitResult visitResult = shortUrlService.Visit(command.Alias, command.IPAddress, command.Browser, command.Referrer);

            ModelState.Merge(visitResult.RuleViolations);

            if (visitResult.Visit == null)
            {
                return(new NotFoundResult());
            }

            string url = visitResult.Visit.Url;

            return(settings.RedirectPermanently ? new PermanentRedirectResult(url) : Redirect(url));
        }
示例#11
0
        public ActionResult ShortUrl(string alias)
        {
            ShortUrlDTO model = administrativeService.GetShortUrl(alias);

            return(View(model));
        }
示例#12
0
        public ShortUrlResult(ShortUrlDTO shortUrl) : this()
        {
            Check.Argument.IsNotNull(shortUrl, "shortUrl");

            ShortUrl = shortUrl;
        }