/// <summary>
 /// Initializes a new instance of the IndexerExecutionInfo class.
 /// </summary>
 /// <param name="status">Overall indexer status. Possible values
 /// include: 'unknown', 'error', 'running'</param>
 /// <param name="lastResult">The result of the most recent or an
 /// in-progress indexer execution.</param>
 /// <param name="executionHistory">History of the recent indexer
 /// executions, sorted in reverse chronological order.</param>
 public IndexerExecutionInfo(IndexerStatus status = default(IndexerStatus), IndexerExecutionResult lastResult = default(IndexerExecutionResult), IList <IndexerExecutionResult> executionHistory = default(IList <IndexerExecutionResult>))
 {
     Status           = status;
     LastResult       = lastResult;
     ExecutionHistory = executionHistory;
     CustomInit();
 }
 internal IndexerExecutionInfo(IndexerStatus status, IndexerExecutionResult lastResult, IReadOnlyList <IndexerExecutionResult> executionHistory, IndexerLimits limits)
 {
     Status           = status;
     LastResult       = lastResult;
     ExecutionHistory = executionHistory;
     Limits           = limits;
 }
 internal SearchIndexerStatus(IndexerStatus status, IndexerExecutionResult lastResult, IReadOnlyList <IndexerExecutionResult> executionHistory, SearchIndexerLimits limits)
 {
     Status           = status;
     LastResult       = lastResult;
     ExecutionHistory = executionHistory ?? new List <IndexerExecutionResult>();
     Limits           = limits;
 }
        private void WithStatus(IndexerStatus status)
        {
            Mocker.GetMock <IIndexerStatusRepository>()
            .Setup(v => v.FindByProviderId(1))
            .Returns(status);

            Mocker.GetMock <IIndexerStatusRepository>()
            .Setup(v => v.All())
            .Returns(new[] { status });
        }
        public static IndexerStatusResource ToResource(this IndexerStatus model)
        {
            if (model == null)
            {
                return(null);
            }

            return(new IndexerStatusResource
            {
                IndexerId = model.ProviderId,
                DisabledTill = model.DisabledTill
            });
        }
        internal IndexerExecutionInfo(IndexerStatus status, IEnumerable <IndexerExecutionResult> executionHistory, IndexerLimits limits)
        {
            if (executionHistory == null)
            {
                throw new ArgumentNullException(nameof(executionHistory));
            }
            if (limits == null)
            {
                throw new ArgumentNullException(nameof(limits));
            }

            Status           = status;
            ExecutionHistory = executionHistory.ToArray();
            Limits           = limits;
        }
Example #7
0
        internal static string ToSerializedValue(this IndexerStatus value)
        {
            switch (value)
            {
            case IndexerStatus.Unknown:
                return("unknown");

            case IndexerStatus.Error:
                return("error");

            case IndexerStatus.Running:
                return("running");
            }
            return(null);
        }
        internal static IndexerExecutionInfo DeserializeIndexerExecutionInfo(JsonElement element)
        {
            IndexerStatus          status     = default;
            IndexerExecutionResult lastResult = default;
            IReadOnlyList <IndexerExecutionResult> executionHistory = default;
            IndexerLimits limits = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("status"))
                {
                    status = property.Value.GetString().ToIndexerStatus();
                    continue;
                }
                if (property.NameEquals("lastResult"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    lastResult = IndexerExecutionResult.DeserializeIndexerExecutionResult(property.Value);
                    continue;
                }
                if (property.NameEquals("executionHistory"))
                {
                    List <IndexerExecutionResult> array = new List <IndexerExecutionResult>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        if (item.ValueKind == JsonValueKind.Null)
                        {
                            array.Add(null);
                        }
                        else
                        {
                            array.Add(IndexerExecutionResult.DeserializeIndexerExecutionResult(item));
                        }
                    }
                    executionHistory = array;
                    continue;
                }
                if (property.NameEquals("limits"))
                {
                    limits = IndexerLimits.DeserializeIndexerLimits(property.Value);
                    continue;
                }
            }
            return(new IndexerExecutionInfo(status, lastResult, executionHistory, limits));
        }
 /// <summary>
 /// Convert an enum of type IndexerStatus to a string.
 /// </summary>
 /// <param name='value'>
 /// The value to convert to a string.
 /// </param>
 /// <returns>
 /// The enum value as a string.
 /// </returns>
 internal static string IndexerStatusToString(IndexerStatus value)
 {
     if (value == IndexerStatus.Unknown)
     {
         return("unknown");
     }
     if (value == IndexerStatus.Error)
     {
         return("error");
     }
     if (value == IndexerStatus.Running)
     {
         return("running");
     }
     throw new ArgumentOutOfRangeException("value");
 }
Example #10
0
        private async Task <DateTime> GetLastIndexUpdateDateTime()
        {
            DateTime   lastUpdateDateTime = DateTime.MinValue;
            HttpClient httpClient         = new HttpClient();
            string     url = $"{_configuration.GetValue<string>("AZURE_SEARCH_URI")}/indexers/{_configuration.GetValue<string>("AZURE_SEARCH_INDEXER")}/status?api-version=2020-06-30";

            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            httpClient.DefaultRequestHeaders.Add("api-key", _configuration.GetValue <string>("AZURE_SEARCH_KEY"));
            HttpResponseMessage response = await httpClient.GetAsync(url);

            if (response.IsSuccessStatusCode)
            {
                string indexerStatusString = await response.Content.ReadAsStringAsync();

                IndexerStatus indexerStatus = JsonConvert.DeserializeObject <IndexerStatus>(indexerStatusString);
                if (indexerStatus.lastResult.status == "success")
                {
                    lastUpdateDateTime = indexerStatus.lastResult.endTime;
                }
            }

            return(lastUpdateDateTime);
        }
        internal static SearchIndexerStatus DeserializeSearchIndexerStatus(JsonElement element)
        {
            IndexerStatus status = default;
            Optional <IndexerExecutionResult>      lastResult       = default;
            IReadOnlyList <IndexerExecutionResult> executionHistory = default;
            SearchIndexerLimits limits = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("status"))
                {
                    status = property.Value.GetString().ToIndexerStatus();
                    continue;
                }
                if (property.NameEquals("lastResult"))
                {
                    lastResult = IndexerExecutionResult.DeserializeIndexerExecutionResult(property.Value);
                    continue;
                }
                if (property.NameEquals("executionHistory"))
                {
                    List <IndexerExecutionResult> array = new List <IndexerExecutionResult>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(IndexerExecutionResult.DeserializeIndexerExecutionResult(item));
                    }
                    executionHistory = array;
                    continue;
                }
                if (property.NameEquals("limits"))
                {
                    limits = SearchIndexerLimits.DeserializeSearchIndexerLimits(property.Value);
                    continue;
                }
            }
            return(new SearchIndexerStatus(status, lastResult.Value, executionHistory, limits));
        }
 public static SearchIndexerStatus SearchIndexerStatus(
     IndexerStatus status,
     IndexerExecutionResult lastResult,
     IReadOnlyList <IndexerExecutionResult> executionHistory,
     SearchIndexerLimits limits) =>
 new SearchIndexerStatus(status, lastResult, executionHistory, limits);
Example #13
0
        public static SearchIndexerStatus SearchIndexerStatus(IndexerStatus status = default, IndexerExecutionResult lastResult = null, IEnumerable <IndexerExecutionResult> executionHistory = null, SearchIndexerLimits limits = null)
        {
            executionHistory ??= new List <IndexerExecutionResult>();

            return(new SearchIndexerStatus(status, lastResult, executionHistory?.ToList(), limits));
        }
Example #14
0
 public static string ToSerialString(this IndexerStatus value) => value switch
 {
Example #15
0
 public static SearchIndexerStatus SearchIndexerStatus(IndexerStatus status = default, IndexerExecutionResult lastResult = default, IReadOnlyList <IndexerExecutionResult> executionHistory = default, SearchIndexerLimits limits = default)
 {
     executionHistory ??= new List <IndexerExecutionResult>();
     return(new SearchIndexerStatus(status, lastResult, executionHistory, limits));
 }