Пример #1
0
    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
 };
Пример #3
0
    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);
    }