예제 #1
0
 /// <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}");
 }
예제 #2
0
        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);
        }
예제 #3
0
        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})");
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
 /// <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;
     }
 }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }