/// <summary>
 /// Get Options from API
 /// </summary>
 /// <param name="table"></param>
 /// <returns></returns>
 public static List<Option> GetOptions(QueryBuilder.Table table)
 {
     try
     {
         List<Option> values = new List<Option>();
         QueryBuilder query = new QueryBuilder();
         query.Build(QueryBuilder.QueryType.Select, 500, table);
         string json = LoadData(query.QueryString);
         values = JsonConvert.DeserializeObject<List<Option>>(json);
         if (values[0].Error != null)
         {
             switch (values[0].Error)
             {
                 case "Incorrect API - key":
                     throw new IncorrectAPIKeyException("VehicleAPI: Incorrect API-key" + query.QueryString);
                 case "Query was empty":
                     throw new QueryEmptyException("VehicleAPI: Query was empty");
                 case "0 results from query":
                     throw new ZeroResultsFromQueryException("VehicleAPI: 0 results from query");
                 default:
                     throw new MySQLErrorException($"VehicleAPI: MySQL Error: {values[0].Error}");
             }
         }
         return values;
     }catch
     {
         throw;
     }
 }
 /// <summary>
 /// Get Options from API asynchronously
 /// </summary>
 /// <param name="table"></param>
 /// <returns></returns>
 public static Task<List<Option>> GetOptionsAsync(QueryBuilder.Table table)
 {
     try
     {
         return Task.Run(() => GetOptions(table));
     }
     catch
     {
         throw;
     }
 }
 /// <summary>
 /// Get ChartData from API asynchronously
 /// </summary>
 /// <param name="table"></param>
 /// <param name="customQuery"></param>
 /// <returns></returns>
 public static Task<List<ChartItem>> GetChartDataAsync(QueryBuilder.Table table, string customQuery = null)
 {
     try
     {
         return Task.Run(() => GetChartData(table, customQuery));
     }
     catch
     {
         throw;
     }
 }