Example #1
0
        public async Task <JsonResult> ConvertOrignUrl(UserUrlData data)
        {
            try
            {
                if (data == null || string.IsNullOrWhiteSpace(data.OriginUrl))
                {
                    Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    return(Json(null));
                }
                var compactUrl = CompactUrl.GenerateCompactUrl();
                //todo compactUrl не уникальный, надо добавить проверку что такого еще не было в БД
                data.CompactUrl = compactUrl;
                //todo можно создать несколько разных компактных ссылок на один и тот же уникальный
                var result = await _urlShortenerManager.AddUserUrlAsync(data);

                if (result == null)
                {
                    Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    return(Json(null));
                }
                result.CompactUrl = GetDomain() + result.CompactUrl;
                return(Json(result));
            }
            catch
            {
                //записать в лог ошибку
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return(Json(null));
            }
        }
Example #2
0
        /// <summary>
        /// Создание сжатой ссылки
        /// </summary>
        /// <param name="userUrl">Описание добавляемой ссылки<seealso cref="UserUrlData"/></param>
        /// <returns></returns>
        public async Task <UserUrlResult> AddUserUrlAsync(UserUrlData userUrl)
        {
            if (userUrl.UserGuid == null || userUrl.UserGuid == Guid.Empty)
            {
                userUrl.UserGuid = Guid.NewGuid();
            }
            var data = new UserUrl
            {
                CreateOn      = DateTime.Now,
                CompactUrl    = userUrl.CompactUrl,
                NumberOfViews = 0,
                OriginUrl     = userUrl.OriginUrl
            };
            var compactUrl = await _urlShortenerRep.AddUserUrlAsync(data, (Guid)userUrl.UserGuid);

            return(new UserUrlResult {
                CompactUrl = compactUrl, UserGuid = (Guid)userUrl.UserGuid
            });
        }