/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListApiKeysResponse response = new ListApiKeysResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("apiKeys", targetDepth)) { var unmarshaller = new ListUnmarshaller <ApiKey, ApiKeyUnmarshaller>(ApiKeyUnmarshaller.Instance); response.ApiKeys = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("nextToken", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.NextToken = unmarshaller.Unmarshall(context); continue; } } return(response); }
public async Task TestApiKeys() { ApiKey apiKeyToSend = new ApiKey { Acl = new List <string> { "search" }, Description = "A description", Indexes = new List <string> { "indexes" }, MaxHitsPerQuery = 1000, MaxQueriesPerIPPerHour = 1000, QueryParameters = "typoTolerance=strict", Referers = new List <string> { "referer" }, Validity = 600 }; AddApiKeyResponse addKeyResponse = await BaseTest.SearchClient.AddApiKeyAsync(apiKeyToSend); _apiKey = addKeyResponse.Key; apiKeyToSend.Value = _apiKey; addKeyResponse.Wait(); var addedKey = await BaseTest.SearchClient.GetApiKeyAsync(_apiKey); Assert.IsTrue(TestHelper.AreObjectsEqual(apiKeyToSend, addedKey, "CreatedAt", "Validity", "GetApiKeyDelegate", "Key")); ListApiKeysResponse allKeys = await BaseTest.SearchClient.ListApiKeysAsync(); Assert.IsTrue(allKeys.Keys.Exists(x => x.Value.Equals(_apiKey))); apiKeyToSend.MaxHitsPerQuery = 42; var updateKey = await BaseTest.SearchClient.UpdateApiKeyAsync(apiKeyToSend); updateKey.Wait(); var getUpdatedKey = await BaseTest.SearchClient.GetApiKeyAsync(_apiKey); Assert.IsTrue(getUpdatedKey.MaxHitsPerQuery == 42); var deleteApiKey = await BaseTest.SearchClient.DeleteApiKeyAsync(_apiKey); deleteApiKey.Wait(); var restoreAPIKey = await BaseTest.SearchClient.RestoreApiKeyAsync(_apiKey); restoreAPIKey.Wait(); await BaseTest.SearchClient.GetApiKeyAsync(_apiKey); await BaseTest.SearchClient.DeleteApiKeyAsync(_apiKey); }
public async Task TestApiKeys() { ApiKey apiKeyToSend = new ApiKey { Acl = new List <string> { "search" }, Description = "A description", Indexes = new List <string> { "indexes" }, MaxHitsPerQuery = 1000, MaxQueriesPerIPPerHour = 1000, QueryParameters = "typoTolerance=strict", Referers = new List <string> { "referer" }, Validity = 600 }; AddApiKeyResponse addKeyResponse = await BaseTest.SearchClient.AddApiKeyAsync(apiKeyToSend); _apiKey = addKeyResponse.Key; apiKeyToSend.Value = _apiKey; addKeyResponse.Wait(); var addedKey = await BaseTest.SearchClient.GetApiKeyAsync(_apiKey); Assert.IsTrue(TestHelper.AreObjectsEqual(apiKeyToSend, addedKey, "CreatedAt", "Validity", "GetApiKeyDelegate", "Key")); ListApiKeysResponse allKeys = await BaseTest.SearchClient.ListApiKeysAsync(); Assert.IsTrue(allKeys.Keys.Exists(x => x.Value.Equals(_apiKey))); apiKeyToSend.MaxHitsPerQuery = 42; var updateKey = await BaseTest.SearchClient.UpdateApiKeyAsync(apiKeyToSend); updateKey.Wait(); var getUpdatedKey = await BaseTest.SearchClient.GetApiKeyAsync(_apiKey); Assert.That(getUpdatedKey.MaxHitsPerQuery, Is.EqualTo(42)); var deleteApiKey = await BaseTest.SearchClient.DeleteApiKeyAsync(_apiKey); deleteApiKey.Wait(); TestHelper.Retry(async() => { bool shouldRetry; try { var restoreAPIKey = await BaseTest.SearchClient.RestoreApiKeyAsync(_apiKey); restoreAPIKey.Wait(); shouldRetry = false; } catch (AlgoliaApiException e) { shouldRetry = e.HttpErrorCode == 404 && e.Message == "Key already exists"; } return(shouldRetry); }, TimeSpan.FromSeconds(1), 10); await BaseTest.SearchClient.GetApiKeyAsync(_apiKey); await BaseTest.SearchClient.DeleteApiKeyAsync(_apiKey); }