/* * InfluxDB OSS API Service * * The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. * * OpenAPI spec version: 2.0.0 * * Generated by: https://github.com/openapitools/openapi-generator.git */ using System; using System.Linq; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using OpenAPIDateConverter = InfluxDB.Client.Api.Client.OpenAPIDateConverter; namespace InfluxDB.Client.Api.Domain { /// /// Represents a source from a single file /// [DataContract] public partial class File : IEquatable { /// /// Initializes a new instance of the class. /// /// Type of AST node. /// The name of the file.. /// package. /// A list of package imports. /// List of Flux statements. public File(string type = default, string name = default, PackageClause package = default, List imports = default, List body = default) { Type = type; Name = name; Package = package; Imports = imports; Body = body; } /// /// Type of AST node /// /// Type of AST node [DataMember(Name = "type", EmitDefaultValue = false)] public string Type { get; set; } /// /// The name of the file. /// /// The name of the file. [DataMember(Name = "name", EmitDefaultValue = false)] public string Name { get; set; } /// /// Gets or Sets Package /// [DataMember(Name = "package", EmitDefaultValue = false)] public PackageClause Package { get; set; } /// /// A list of package imports /// /// A list of package imports [DataMember(Name = "imports", EmitDefaultValue = false)] public List Imports { get; set; } /// /// List of Flux statements /// /// List of Flux statements [DataMember(Name = "body", EmitDefaultValue = false)] [JsonConverter(typeof(FileBodyAdapter))] public List Body { get; set; } /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { var sb = new StringBuilder(); sb.Append("class File {\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Package: ").Append(Package).Append("\n"); sb.Append(" Imports: ").Append(Imports).Append("\n"); sb.Append(" Body: ").Append(Body).Append("\n"); sb.Append("}\n"); return sb.ToString(); } /// /// Returns the JSON string presentation of the object /// /// JSON string presentation of the object public virtual string ToJson() { return JsonConvert.SerializeObject(this, Formatting.Indented); } /// /// Returns true if objects are equal /// /// Object to be compared /// Boolean public override bool Equals(object input) { return Equals(input as File); } /// /// Returns true if File instances are equal /// /// Instance of File to be compared /// Boolean public bool Equals(File input) { if (input == null) { return false; } return ( Type == input.Type || Type != null && Type.Equals(input.Type) ) && ( Name == input.Name || Name != null && Name.Equals(input.Name) ) && Package != null && Package.Equals(input.Package) && ( Imports == input.Imports || Imports != null && Imports.SequenceEqual(input.Imports) ) && ( Body == input.Body || Body != null && Body.SequenceEqual(input.Body) ); } /// /// Gets the hash code /// /// Hash code public override int GetHashCode() { unchecked // Overflow is fine, just wrap { var hashCode = 41; if (Type != null) { hashCode = hashCode * 59 + Type.GetHashCode(); } if (Name != null) { hashCode = hashCode * 59 + Name.GetHashCode(); } if (Package != null) { hashCode = hashCode * 59 + Package.GetHashCode(); } if (Imports != null) { hashCode = hashCode * 59 + Imports.GetHashCode(); } if (Body != null) { hashCode = hashCode * 59 + Body.GetHashCode(); } return hashCode; } } public class FileBodyAdapter : JsonConverter { private static readonly Dictionary Types = new Dictionary(new Client.DiscriminatorComparer()) { { new[] { "BadStatement" }, typeof(BadStatement) }, { new[] { "VariableAssignment" }, typeof(VariableAssignment) }, { new[] { "MemberAssignment" }, typeof(MemberAssignment) }, { new[] { "ExpressionStatement" }, typeof(ExpressionStatement) }, { new[] { "ReturnStatement" }, typeof(ReturnStatement) }, { new[] { "OptionStatement" }, typeof(OptionStatement) }, { new[] { "BuiltinStatement" }, typeof(BuiltinStatement) }, { new[] { "TestStatement" }, typeof(TestStatement) } }; public override bool CanConvert(Type objectType) { return false; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { serializer.Serialize(writer, value); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return Deserialize(reader, objectType, serializer); } private object Deserialize(JsonReader reader, Type objectType, JsonSerializer serializer) { switch (reader.TokenType) { case JsonToken.StartObject: var jObject = Newtonsoft.Json.Linq.JObject.Load(reader); var discriminator = new[] { "type" }.Select(key => jObject[key].ToString()).ToArray(); Types.TryGetValue(discriminator, out var type); return serializer.Deserialize(jObject.CreateReader(), type); case JsonToken.StartArray: return DeserializeArray(reader, objectType, serializer); default: return serializer.Deserialize(reader, objectType); } } private IList DeserializeArray(JsonReader reader, Type targetType, JsonSerializer serializer) { var elementType = targetType.GenericTypeArguments.FirstOrDefault(); var list = (IList)Activator.CreateInstance(targetType); while (reader.Read() && reader.TokenType != JsonToken.EndArray) list.Add(Deserialize(reader, elementType, serializer)); return list; } } } }