static async Task WaitForIngestionCompletion()

in src/AIHub/Controllers/VideoAnalyzerController.cs [79:108]


    static async Task<bool> WaitForIngestionCompletion(string visionApiEndpoint, string visionApiKey, string indexName, int maxRetries = 30)
    {
        using var client = new HttpClient();
        string url = $"{visionApiEndpoint}/retrieval/indexes/{indexName}/ingestions?api-version=2023-05-01-preview";
        client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", visionApiKey);
        int retries = 0;
        while (retries < maxRetries)
        {
            await Task.Delay(10000);
            var response = await client.GetAsync(url);
            if (response.IsSuccessStatusCode)
            {
                var stateData = JsonSerializer.Deserialize<dynamic>(await response.Content.ReadAsStringAsync());
                if (stateData?.GetProperty("value").GetArrayLength() > 0 && stateData?.GetProperty("value")[0].GetProperty("state").GetString() == "Completed")
                {
                    Console.WriteLine(stateData);
                    Console.WriteLine("Ingestion completed.");
                    return true;
                }
                else if (stateData?.GetProperty("value").GetArrayLength() > 0 && stateData?.GetProperty("value")[0].GetProperty("state").GetString() == "Failed")
                {
                    Console.WriteLine(stateData);
                    Console.WriteLine("Ingestion failed.");
                    return false;
                }
            }
            retries++;
        }
        return false;
    }