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)); } }
/// <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 }); }