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