/// <summary>
        /// ایجاد کننده موجودیت جدید از کلاس لینک
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        private Link LinkGenerator(CreateLinkDto dto)
        {
            Guid             linkId       = Guid.NewGuid();
            LinkFullAddress  fullAddress  = new LinkFullAddress(dto.FullAddress);
            LinkShortAddress shortAddress = new LinkShortAddress(ShortAddressGenerator());

            Link link = new Link(linkId, fullAddress, shortAddress);

            return(link);
        }
Esempio n. 2
0
        private async Task <HttpResponseMessage> PostLink(HttpClient client, string fullUrl)
        {
            var createLinkDto = new CreateLinkDto {
                FullUrl = fullUrl
            };
            string json = JsonHelper.Serialize(createLinkDto);
            var    data = new StringContent(json, Encoding.UTF8, "application/json");

            return(await client.PostAsync($"/api/v1/links", data));
        }
        /// <summary>
        /// اعتبار سنجی آدرس اصلی
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        private ServiceResult FullAddressValidation(CreateLinkDto dto)
        {
            string urlPattern       = "http[s]?://";
            bool   IsValidUrlFormat = Regex.Match(dto.FullAddress.ToLower(), urlPattern).Success;

            if (IsValidUrlFormat)
            {
                return(ServiceResult.Ok());
            }
            return(ServiceResult.Fail(message: "فرمت لینک ارسالی اشتباه است" + " - " + "فرمت مورد قبول : http[s]://..."));
        }
        public HttpResponseMessage Create([FromBody] CreateLinkDto link)
        {
            var result = _createCommand.Execute(new CreateLinkArgument()
            {
                Link = Mapper.Map <LinkModel>(link),
                MusicDestinations  = link.MusicDestinations?.GroupBy(x => x.IsoCode.ToUpper()).ToDictionary(x => x.Key, x => x.Select(Mapper.Map <Service.Models.Link.Music.DestinationModel>).ToList()),
                TicketDestinations = link.TicketDestinations?.GroupBy(x => x.IsoCode.ToUpper()).ToDictionary(x => x.Key, x => x.Select(Mapper.Map <Service.Models.Link.Ticket.DestinationModel>).ToList())
            });
            var mapped = Mapper.Map <LinkDto>(result);

            return(Request.CreateResponse(HttpStatusCode.OK, mapped));
        }
Esempio n. 5
0
        public IActionResult Shortener(CreateLinkViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(JsonFail($"متاسفانه لینک برای کوتاه سازی یافت نشد ...!"));
            }

            CreateLinkDto createLinkDto = new CreateLinkDto(model.FullAddress);

            var result = linkService.AddLink(createLinkDto);

            if (result.IsSuccess)
            {
                return(JsonSuccess(message: result.Message));
            }
            return(JsonFail(message: result.Message));
        }
        /// <summary>
        /// افزودن لینک جدید
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public ServiceResult AddLink(CreateLinkDto dto)
        {
            ///اقدام به اعتبار سنجی آدرس اصلی
            var fullAddressValidationResult = FullAddressValidation(dto);

            if (fullAddressValidationResult.IsFailure)
            {
                return(ServiceResult.Fail(message: fullAddressValidationResult.Message));
            }

            ///اقدام به ایجاد لینک جدید در دیتابیس
            Link link   = LinkGenerator(dto);
            var  result = linkCommandRepository.Add(link);

            ///ارسال نتیجه
            if (result)
            {
                //برای این که در سواگر درست نمایش داده شود انگلیسی نوشتم
                return(ServiceResult.Ok(message: $"Short Link : {link.ShortAddress.Value}"));
            }
            //برای این که در سواگر درست نمایش داده شود انگلیسی نوشتم
            return(ServiceResult.Fail(message: $"Bad Format : {link.FullAddress.Value}"));
        }