public async Task <string> CreateWebPageTranscript(WebPageTranscript webPageTranscript) { webPageTranscript.Transcript = webPageTranscript.Transcript ?? string.Empty; webPageTranscript.Host = new Uri(webPageTranscript.Url).Host; if (!this._appConfig.PermittedDomains.Contains(webPageTranscript.Host)) { throw new Exception("Not allowed"); } TableQuery <WebPageTranscriptEntity> getByPartition = new TableQuery <WebPageTranscriptEntity>().Where( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, webPageTranscript.Host)); var results = await this._cloudTable.ExecuteQuerySegmentedAsync(getByPartition, null); var highestIdSoFar = results.Count() > 0 ? results.Max(x => x.ReferenceNumber) : 0; webPageTranscript.ReferenceNumber = highestIdSoFar + 1; webPageTranscript.PhoneNumber = this._appConfig.PhoneNumber; using (SHA256 sha256Hash = SHA256.Create()) { webPageTranscript.UrlHash = GetHash(sha256Hash, webPageTranscript.Url); } var entity = WebPageTranscriptMapper.mapToEntity(webPageTranscript); TableOperation insertOrMergeOperation = TableOperation.InsertOrReplace(entity); await this._cloudTable.ExecuteAsync(insertOrMergeOperation); return(entity.UrlHash); }
public static WebPageTranscriptEntity mapToEntity(WebPageTranscript webPageTranscript) => new WebPageTranscriptEntity() { Transcript = webPageTranscript.Transcript, ReferenceNumber = webPageTranscript.ReferenceNumber, PhoneNumber = webPageTranscript.PhoneNumber, Url = webPageTranscript.Url, UrlHash = webPageTranscript.UrlHash, Host = webPageTranscript.Host, RowKey = webPageTranscript.UrlHash.ToString(), PartitionKey = webPageTranscript.Host };
public async Task <WebPageTranscript> Get(string urlHash) { TableQuery <WebPageTranscriptEntity> getByUrlHash = new TableQuery <WebPageTranscriptEntity>() .Where( TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, urlHash) ); WebPageTranscript webPageTranscript = null; foreach (WebPageTranscriptEntity webPageTranscriptEntity in await this._cloudTable.ExecuteQuerySegmentedAsync(getByUrlHash, null)) { webPageTranscript = WebPageTranscriptMapper.mapFromEntity(webPageTranscriptEntity); } return(webPageTranscript); }