/// <summary> /// Uses input text to generate a valid Permlink /// </summary> /// <param name="text">Any text (usually a Title)</param> /// <returns>A formatted string with a postfix (used current date and time)</returns> public static string TitleToPermlink(string text) { text = text.Trim(); text = text.ToLower(); text = WordDelimiters.Replace(text, "-"); text = Transliteration.ToEng(text); text = PermlinkNotSupportedCharacters.Replace(text, string.Empty); return($"{text}-{DateTime.UtcNow:yyyy-MM-dd-HH-mm-ss}"); }
public static string TagToEn(this string tag) { tag = tag.Trim(); tag = tag.ToLower(); var translit = Transliteration.ToEng(tag); tag = translit.Equals(tag) ? translit : $"ru--{translit}"; tag = WordDelimiters.Replace(tag, "-"); tag = PermlinkNotSupportedCharacters.Replace(tag, string.Empty); return(tag); }
public void TranslateToEngTest(string exp, string value) { var rez = Transliteration.ToEng(value); if (rez != value) { rez = "ru--" + rez; } Assert.IsTrue(rez.Equals(exp), $"{rez} != {exp} ({exp} > {value})"); }
/// <summary> /// Generate a permlink for replay by User, author and permlink /// </summary> /// <param name="user">User</param> /// <param name="parentAuthor">Post author</param> /// <param name="permlink">Post permlink</param> /// <returns>A formatted string with a prefix (re-) and postfix (used current date and time)</returns> private static string CreateReplyPermlink(string user, string parentAuthor, string permlink) { var parentPermlink = $"re-{user}-re-{parentAuthor}-{permlink}"; parentPermlink = Transliteration.ToEng(parentPermlink); parentPermlink = WordDelimiters.Replace(parentPermlink, "-"); parentPermlink = PermlinkNotSupportedCharacters.Replace(parentPermlink, string.Empty); parentPermlink = TimePostfix.Replace(parentPermlink, string.Empty); parentPermlink = $"{parentPermlink}-{DateTime.UtcNow:yyyyMMddTHHmmssZ}".ToLower(); return(parentPermlink); }
/// <summary> /// Generate a valid tags /// </summary> /// <param name="tags"></param> public static void PrepareTags(string[] tags) { for (var index = 0; index < tags.Length; index++) { var tag = tags[index]; tag = tag.Trim(); tag = tag.ToLower(); var translit = Transliteration.ToEng(tag); tag = translit.Equals(tag) ? translit : $"ru--{translit}"; tag = WordDelimiters.Replace(tag, "-"); tag = PermlinkNotSupportedCharacters.Replace(tag, string.Empty); tags[index] = tag; } }
public async Task <OperationResult <ListResponse <SearchResult> > > SearchCategories(SearchWithQueryModel model, CancellationToken token) { if (!EnableRead) { return(null); } var results = Validate(model); if (results.Any()) { return(new OperationResult <ListResponse <SearchResult> >(new ValidationError(string.Join(Environment.NewLine, results.Select(i => i.ErrorMessage))))); } var query = Transliteration.ToEng(model.Query); if (query != model.Query) { query = $"ru--{query}"; } model.Query = query; var parameters = new Dictionary <string, object>(); AddOffsetLimitParameters(parameters, model.Offset, model.Limit); parameters.Add("query", model.Query); var endpoint = "categories/search"; var result = await Gateway.Get <ListResponse <SearchResult> >(GatewayVersion.V1, endpoint, parameters, token); if (result.IsSuccess) { foreach (var categories in result.Result.Results) { categories.Name = Transliteration.ToRus(categories.Name); } } return(result); }
public async Task <OperationResult <ListResponse <SearchResult> > > SearchCategories(SearchWithQueryModel model, CancellationToken token) { if (!EnableRead) { return(null); } var results = Validate(model); if (results != null) { return(new OperationResult <ListResponse <SearchResult> >(results)); } var query = Transliteration.ToEng(model.Query); if (query != model.Query) { query = $"ru--{query}"; } model.Query = query; var parameters = new Dictionary <string, object>(); AddOffsetLimitParameters(parameters, model.Offset, model.Limit); parameters.Add("query", model.Query); var endpoint = $"{BaseUrl}/{GatewayVersion.V1P1}/categories/search"; var result = await HttpClient.Get <ListResponse <SearchResult> >(endpoint, parameters, token); if (result.IsSuccess) { foreach (var categories in result.Result.Results) { categories.Name = Transliteration.ToRus(categories.Name); } } return(result); }