public void V2CheckHashIndexStatus()
        {
            IModeratorServiceV2 moderatorService = new ModeratorServiceV2(this.serviceOptions);
            var actualResult = moderatorService.CheckImageIndexStatusAsync();
            var res          = actualResult.Result;

            Assert.IsTrue(res != null, "Expected valid result, Response: {0}", JsonConvert.SerializeObject(actualResult));
            Assert.IsTrue(res.StatusCode == System.Net.HttpStatusCode.OK, "Invalid Http Status Code, Response: {0}", JsonConvert.SerializeObject(actualResult));
            Assert.AreEqual("The index is ready for matching.", res.ReasonPhrase, "Response: {0}", JsonConvert.SerializeObject(actualResult));
        }
        public void V2AddImageV2Test()
        {
            IModeratorServiceV2 moderatorService = new ModeratorServiceV2(this.serviceOptions);

            // Add Image (with labels)
            // See label details in the response documentation: https://developer.microsoftmoderator.com/docs/services/54f7932727037412a0cda396/operations/54f793272703740c70627a24
            using (Stream stream = new FileStream(TestImageContent, FileMode.Open, FileAccess.Read))
            {
                ImageModeratableContent imageContent =
                    new ImageModeratableContent(new BinaryContent(stream, "image/jpeg"));
                var addResponse = moderatorService.ImageAddAsync(imageContent, TestTags, TestLabel);
                var addResult   = addResponse.Result;
                Assert.IsTrue(addResult != null, "Expected valid result, Response: {0}", JsonConvert.SerializeObject(addResult));
                Assert.IsTrue(string.IsNullOrWhiteSpace(addResult.ImageId) ||
                              string.Compare(addResult.Status.Description, "Error occurred while processing request :: Failure Adding a valid image  :: Image already exists") == 0,
                              "Image Id can be null only if the Image already exists, Response: {0}", JsonConvert.SerializeObject(addResult));



                // Refresh index
                var refreshResponse = moderatorService.RefreshImageIndexAsync();
                var refreshResult   = refreshResponse.Result;
                Assert.IsTrue(refreshResult.IsUpdateSuccess, "Expected update Success on refresh");
            }

            //Wait for Index to be Ready
            while (true)
            {
                var res      = moderatorService.CheckImageIndexStatusAsync();
                var response = res.Result;
                if (response.IsSuccessStatusCode && response.ReasonPhrase == "The index is ready for matching.")
                {
                    break;
                }
                else
                {
                    Thread.Sleep(5000);
                }
            }


            using (Stream stream = new FileStream(TestImageContent, FileMode.Open, FileAccess.Read))
            {
                ImageModeratableContent imageContent =
                    new ImageModeratableContent(new BinaryContent(stream, "image/jpeg"));

                // Match
                var matchResponse = moderatorService.MatchImageAsync(imageContent, true);
                var matchResult   = matchResponse.Result;
                Assert.IsTrue(matchResult.IsMatch, "Expected match, Response: {0}", JsonConvert.SerializeObject(matchResult));
            }
        }