Exemple #1
0
        protected internal Uri createUri(int i)
        {
            var uri = CreateUrl.ToString();

            uri += $"&switchOfCreate={i}";

            return(new Uri(uri, UriKind.Relative));
        }
        public Result Validate(CreateUrl commandFixture)
        {
            var validationResult = Validator.Validate(commandFixture);

            return(validationResult.Succeeded
                ? Result.Ok()
                : Result.Fail(string.Join(Environment.NewLine, validationResult.ErrorMessages)));
        }
Exemple #3
0
        public void Validate_CorrectUrlPath_ReturnsOk(string path)
        {
            var commandFixture = new CreateUrl(path);
            var sut            = new CreateUrlValidator();
            var result         = sut.Validate(commandFixture);

            result.IsSuccess.Should().BeTrue();
        }
Exemple #4
0
        public void Validate_InCorrectUrlPath_ReturnsFail(string path)
        {
            var commandFixture = new CreateUrl(path);
            var sut            = new CreateUrlValidator();
            var result         = sut.Validate(commandFixture);

            result.IsFailure.Should().BeTrue();
            result.Error.Should().NotBeNullOrEmpty();
        }
        public async Task <IActionResult> ShortenUrl([FromBody] CreateUrl model)
        {
            var result = await this.urlService.ShortenUrl(model.LongUrl, model.ExpireDate);

            var response = this.mapper.Map <ResponseUrl>(result);

            response.ShortUrl = this.FormatShortUrlResponse(response.ShortUrl);

            return(this.Ok(response));
        }
        public Task <Result <string> > Handle(
            CreateUrl request, CancellationToken cancellationToken)
        {
            var url = new Url(request.Id, request.Path);

            return(_createUrlValidator
                   .Validate(request)
                   .OnSuccess(() => _urlDao
                              .Save(url)
                              .OnSuccess(() => url.ShortPath), false));
        }
Exemple #7
0
        public async Task Handle_ValidatorReturnsFailure_ReturnsFailure(CreateUrl commandFixture, string errorMessageFixture)
        {
            var urlDaoMock = A.Fake <IUrlDao>();

            var createUrlValidatorMock = A.Fake <ICreateUrlValidator>();

            A.CallTo(() => createUrlValidatorMock
                     .Validate(commandFixture))
            .Returns(Result.Fail <CreateUrl>(errorMessageFixture));
            var sut = new CreateUrlHandler(urlDaoMock, createUrlValidatorMock);

            var result = await sut.Handle(commandFixture, CancellationToken.None);

            result.IsFailure.Should().BeTrue();
            result.Error.Should().Be(errorMessageFixture);
        }
Exemple #8
0
        /// <summary>
        /// Returns a new url that will replace, or add a parameter
        /// to the one that is currently being used.
        /// </summary>
        /// <param name="absoluteUrl">The root url to add parameters too.</param>
        /// <param name="parameters">Existing list of parameters to be altered.</param>
        /// <param name="key">A parameter key not to be removed from the list of parameters.</param>
        /// <returns>A new url containing the parameters provided and the new key and value.</returns>
        protected virtual string GetNewUrl(string absoluteUrl, NameValueCollection parameters, string key)
        {
            List <string> list = new List <string>();

            // keys beginning with an _ will not be added to links, unless it was in the parameter.
            if (parameters != null)
            {
                foreach (string index in parameters.Keys)
                {
                    if (index != null &&
                        (index.StartsWith("_") == false || index.Equals(key)))
                    {
                        if (parameters[index] != null)
                        {
                            list.Add(String.Format("{0}={1}", index, HttpUtility.UrlEncode(parameters[index])));
                        }
                        else
                        {
                            list.Add(index);
                        }
                    }
                }
            }

            if (CreateUrl != null)
            {
                try
                {
                    // This is an external method. Trap for exceptions and
                    // use default behavior if there is a failure.
                    return(CreateUrl(list));
                }
                catch (Exception ex)
                {
                    EventLog.Debug(ex);
                    EventLog.Warn("Exception calling CreateUrl method '{0}' with list '{1}'.",
                                  CreateUrl.ToString(),
                                  String.Join(", ", list));
                }
            }

            return(String.Format("{0}?{1}",
                                 absoluteUrl,
                                 String.Join("&", list.ToArray())));
        }
Exemple #9
0
        public async Task Handle_DaoReturnsFailure_ReturnsFailure(CreateUrl commandFixture, string errorMessageFixture)
        {
            var urlDaoMock = A.Fake <IUrlDao>();

            A.CallTo(() => urlDaoMock
                     .Save(A <Url> .That
                           .Matches(url => url.Path.Equals(commandFixture.Path) &&
                                    url.Id.Equals(commandFixture.Id))))
            .Returns(Task.FromResult(Result.Fail(errorMessageFixture)));
            var createUrlValidatorMock = A.Fake <ICreateUrlValidator>();

            A.CallTo(() => createUrlValidatorMock
                     .Validate(commandFixture))
            .Returns(Result.Ok(commandFixture));
            var sut = new CreateUrlHandler(urlDaoMock, createUrlValidatorMock);

            var result = await sut.Handle(commandFixture, CancellationToken.None);

            result.IsFailure.Should().BeTrue();
            result.Error.Should().Be(errorMessageFixture);
        }
Exemple #10
0
        public async Task Handle_DaoReturnsOk_ReturnOk(CreateUrl commandFixture)
        {
            var urlDaoMock = A.Fake <IUrlDao>();

            A.CallTo(() => urlDaoMock
                     .Save(A <Url> .That
                           .Matches(url => url.Path.Equals(commandFixture.Path) &&
                                    url.Id.Equals(commandFixture.Id))))
            .Returns(Task.FromResult(Result.Ok()));
            var createUrlValidatorMock = A.Fake <ICreateUrlValidator>();

            A.CallTo(() => createUrlValidatorMock
                     .Validate(commandFixture))
            .Returns(Result.Ok(commandFixture));

            var sut = new CreateUrlHandler(urlDaoMock, createUrlValidatorMock);

            var result = await sut.Handle(commandFixture, CancellationToken.None);

            result.IsSuccess.Should().BeTrue();
            string expectedValue = commandFixture.Id.ToString("N");

            result.Value.Should().Be(expectedValue);
        }
        private static HttpResponseMessage HttpResponseMessage(PlatformLoyaltyServiceRequestType requestType,
                                                               PlatformLoyaltyServiceRequest request, string method)
        {
            UriBuilder    uri;
            StringContent content = null;

            switch (requestType)
            {
            case PlatformLoyaltyServiceRequestType.AllLoyalties:
                uri = CreateUrl.GetUrl(requestType);
                break;

            case PlatformLoyaltyServiceRequestType.GetLoyaltyById:
                uri = CreateUrl.GetUrl(requestType, request.Loyalty.Id);
                break;

            case PlatformLoyaltyServiceRequestType.CreateLoyalty:
                uri     = CreateUrl.GetUrl(requestType);
                content = HttpClientFactory.JsonContentFactory.CreateJsonContent(request.Loyalty);
                break;

            case PlatformLoyaltyServiceRequestType.UpdateLoyaltyById:
                uri     = CreateUrl.GetUrl(requestType, request.Loyalty.Id);
                content = HttpClientFactory.JsonContentFactory.CreateJsonContent(request.Loyalty);
                break;

            case PlatformLoyaltyServiceRequestType.AllTiers:
                uri = CreateUrl.GetUrl(requestType, request.Loyalty.Id);
                break;

            case PlatformLoyaltyServiceRequestType.GetTierById:
                uri = CreateUrl.GetUrl(requestType, request.Tier.ProgramId, request.Tier.Id);
                break;

            case PlatformLoyaltyServiceRequestType.CreateTier:
                uri     = CreateUrl.GetUrl(requestType, request.Tier.ProgramId);
                content = HttpClientFactory.JsonContentFactory.CreateJsonContent(request.Tier);
                break;

            case PlatformLoyaltyServiceRequestType.UpdateTierById:
                uri     = CreateUrl.GetUrl(requestType, request.Tier.ProgramId, request.Tier.Id);
                content = HttpClientFactory.JsonContentFactory.CreateJsonContent(request.Tier);
                break;

            case PlatformLoyaltyServiceRequestType.AllRewards:
                uri = CreateUrl.GetUrl(requestType, request.Loyalty.Id);
                break;

            case PlatformLoyaltyServiceRequestType.GetRewardById:
                uri = CreateUrl.GetUrl(requestType, request.Reward.ProgramId, request.Reward.Id);
                break;

            case PlatformLoyaltyServiceRequestType.CreateReward:
                uri     = CreateUrl.GetUrl(requestType, request.Reward.ProgramId);
                content = HttpClientFactory.JsonContentFactory.CreateJsonContent(request.Reward);
                break;

            case PlatformLoyaltyServiceRequestType.UpdateRewardById:
                uri     = CreateUrl.GetUrl(requestType, request.Reward.ProgramId, request.Reward.Id);
                content = HttpClientFactory.JsonContentFactory.CreateJsonContent(request.Reward);
                break;

            case PlatformLoyaltyServiceRequestType.AllUsers:
                uri = CreateUrl.GetUrl(requestType);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(requestType), requestType, null);
            }

            var responseMessage = HttpClientFactory.PerformRequest(method, uri, content, GetHttpClient());

            return(responseMessage);
        }