/// <summary>
        /// Generate a paragraph with a specific number of sentences
        /// </summary>
        /// <param name="sentencesCount">an integer to specify the number of sentences</param>
        /// <param name="captain">The captain of your choice</param>
        /// <returns>A string representing a paragrah with the number of sentences specified by sentencesCount</returns>
        public async Task <string> ParagraphGenerator(int sentencesCount, StarTrekCaptain captain)
        {
            StarTrekIpsumText ??= await SetSeriesText(captain);

            var availableSentences = Regex.Split(StarTrekIpsumText, @"(?<=[\.!\?])\s+");

            var    availableSentencesCount = availableSentences.Length;
            string paragraph = null;

            var usedIndex = GetDuplicateSentenceArrayCheck(sentencesCount);

            for (var i = 0; i < sentencesCount; i++)
            {
                int index;
                do
                {
                    index = Random.Next(availableSentencesCount);
                } while (usedIndex.Contains(index) || availableSentencesCount < sentencesCount);
                paragraph += $"{availableSentences[index]} ";
                paragraph.TrimEnd();
                usedIndex[i] = index;
            }

            return(paragraph);
        }
Ejemplo n.º 2
0
        public async Task <string> GetStarTrekText(StarTrekCaptain captain)
        {
            _log.LogDebug($"Get text for Captain {captain}");
            var containerName = _blobStorageSettings.ContainerName;

            return(await GetBlob(captain, containerName));
        }
        /// <summary>
        /// Generate multiple Paragraphs
        /// </summary>
        /// <param name="paragraphCount"></param>
        /// <param name="captain">The captain of your choice</param>
        /// <returns></returns>
        public async Task <string[]> MultiParagraphGenerator(int paragraphCount, StarTrekCaptain captain)
        {
            var paragraphs = new string[paragraphCount];

            for (var i = 0; i < paragraphCount; i++)
            {
                paragraphs[i] = await ParagraphGenerator(captain);
            }
            return(paragraphs);
        }
Ejemplo n.º 4
0
        private async Task <string> GetBlob(StarTrekCaptain captain, string containerName)
        {
            _log.LogInformation($"get text for {captain} from container {containerName}");

            await CreateContainerIfNotExistsAsync(containerName);

            var cloudBlobContainer = _cloudBlobClient.GetContainerReference(containerName);
            var cloudBlockBlob     = cloudBlobContainer.GetBlockBlobReference($"StarTrek_{captain}.txt");

            var content = await cloudBlockBlob.DownloadTextAsync();

            return(content);
        }
        /// <summary>
        /// Generate a paragraph with a random number of sentences up to a maximum of 10
        /// </summary>
        /// <param name="captain">The captain of your choice</param>
        /// <returns>A string representing a paragrah with a random number of sentences</returns>
        public async Task <string> ParagraphGenerator(StarTrekCaptain captain)
        {
            var sentenceCount = Random.Next(1, 10);

            return(await ParagraphGenerator(sentenceCount, captain));
        }
 private async Task <string> SetSeriesText(StarTrekCaptain captain)
 {
     return(await _blobStorageClient.GetStarTrekText(captain));
 }
Ejemplo n.º 7
0
 public async Task <IEnumerable <string> > Get([FromQuery(Name = "Paragraphs")] int paragraphCount = 5, [FromQuery(Name = "Captain")] StarTrekCaptain captain = StarTrekCaptain.Picard)
 {
     return(await _starTrekIpsumGenerator.MultiParagraphGenerator(paragraphCount, captain));
 }