public async Task <IDataFetchResult> GetNewItemsAsPlainTextAsync(ILoggerFactory loggerFactory,
                                                                         IConfigurationRoot configurationRoot,
                                                                         string endpointOptionsString,
                                                                         string stateString,
                                                                         CancellationToken cancellationToken)
        {
            var providerSettings = configurationRoot.GetSection(GetType().Name).Get <ProviderSettings>();
            var endpointOptions  = JsonConvert.DeserializeObject <EndpointOptions>(endpointOptionsString);
            var state            = JsonConvert.DeserializeObject <State>(stateString) ?? new State();
            var dataExtractor    = new DataExtractor(loggerFactory);
            var renderer         = new Renderer();

            var extractedItems = await dataExtractor.ExtractAsync(providerSettings, state, endpointOptions);

            var filteredItems = dataExtractor.Filter(extractedItems, state, endpointOptions);
            var renderedItems = renderer.RenderAsPlainText(filteredItems);

            var lastItem = extractedItems.LastOrDefault();

            if (lastItem != null)
            {
                state.LastRecordId = lastItem.Id;
            }

            var result = new DataFetchResult
            {
                Items = renderedItems,
                State = JsonConvert.SerializeObject(state),
            };

            return(result);
        }
コード例 #2
0
        public async Task <IDataFetchResult> GetNewItemsAsPlainTextAsync(ILoggerFactory loggerFactory,
                                                                         IConfigurationRoot configurationRoot,
                                                                         string endpointOptionsString,
                                                                         string stateString,
                                                                         CancellationToken cancellationToken)
        {
            var providerSettings = configurationRoot.GetSection(GetType().Name).Get <ProviderSettings>();
            var endpointOptions  = JsonConvert.DeserializeObject <EndpointOptions>(endpointOptionsString);
            var state            = JsonConvert.DeserializeObject <State>(stateString) ?? new State();
            var dataExtractor    = new DataExtractor(loggerFactory);
            var renderer         = new Renderer();

            var siteUri = new Uri("https://" + providerSettings.Hostname);
            var api     = RestService.For <IDvachApi>(siteUri.ToString());

            var extractedItems = await dataExtractor.ExtractAsync(api, state, endpointOptions, cancellationToken);

            var filteredItems = dataExtractor.Filter(extractedItems, state, endpointOptions);
            var renderedItems = renderer.RenderAsPlainText(filteredItems, siteUri, endpointOptions);

            var lastItem = extractedItems.LastOrDefault();

            if (lastItem != null)
            {
                state.LastRecordCreatedUtc = DateTimeUtils.TimestampToUtcDateTime(lastItem.Timestamp);
            }

            var result = new DataFetchResult()
            {
                Items = renderedItems,
                State = JsonConvert.SerializeObject(state),
            };

            return(result);
        }