using System.Collections.Generic;
using System.Threading;
using InfluxDB.Client.Core.Flux.Domain;
using InfluxDB.Client.Core.Flux.Internal;
namespace InfluxDB.Client.Core.Flux.Serialization
{
public interface IAnnotatedCsvParser
{
///
/// Parsing query results in annotated CSV format into list of .
///
/// Query results in annotated CSV format
/// To cancel the parsing
/// Parsed Annotated CSV into list of
List Parse(string annotatedCsv, CancellationToken cancellationToken = default);
}
///
/// Parser for processing Annotated CSV.
///
public class AnnotatedCsvParser : IAnnotatedCsvParser
{
private readonly FluxCsvParser _parser;
///
/// Public constructor.
///
public AnnotatedCsvParser()
{
_parser = new FluxCsvParser();
}
///
/// Parsing query results in annotated CSV format into list of .
///
/// Query results in annotated CSV format
/// To cancel the parsing
/// Parsed Annotated CSV into list of
public List Parse(string annotatedCsv, CancellationToken cancellationToken = default)
{
var consumer = new FluxCsvParser.FluxResponseConsumerTable();
_parser.ParseFluxResponse(annotatedCsv, cancellationToken, consumer);
return consumer.Tables;
}
}
}