public async void QueryInstanceEventsOnEventTypes() { // Assign int expectedNoEvents = 1; // Act await CleanDB(); await PopulateDatabase(); InstanceEventList instanceEvents = await _instanceClient.GetInstanceEvents(testInstanceId, new string[] { "deleted" }, null, null); // Assert Assert.Equal(expectedNoEvents, instanceEvents.InstanceEvents.Count()); }
public async void QueryInstanceEventsOnTimeFrame() { // Assign int expectedNoEvents = 3; // Act await CleanDB(); string from = DateTime.UtcNow.AddMinutes(-1.5).ToString("s", CultureInfo.InvariantCulture); await PopulateDatabase(); string to = DateTime.UtcNow.AddMinutes(1.5).ToString("s", CultureInfo.InvariantCulture); InstanceEventList instanceEvents = await _instanceClient.GetInstanceEvents(testInstanceId, null, from, to); // Assert Assert.Equal(expectedNoEvents, instanceEvents.InstanceEvents.Count()); }
public async Task <ActionResult <InstanceEventList> > Get( [FromRoute] int instanceOwnerPartyId, [FromRoute] Guid instanceGuid, [FromQuery] string[] eventTypes, [FromQuery] string from, [FromQuery] string to) { string instanceId = $"{instanceOwnerPartyId}/{instanceGuid}"; if (string.IsNullOrEmpty(instanceId)) { return(BadRequest("Unable to perform query.")); } DateTime?fromDateTime = null, toDateTime = null; if (!(string.IsNullOrEmpty(from) || string.IsNullOrEmpty(to))) { try { fromDateTime = DateTimeHelper.ParseAndConvertToUniversalTime(from); toDateTime = DateTimeHelper.ParseAndConvertToUniversalTime(to); } catch { return(BadRequest("Unable to perform query. Invalid format for time span. Use string format of UTC.")); } } List <InstanceEvent> instanceEvents = await _repository.ListInstanceEvents(instanceId, eventTypes, fromDateTime, toDateTime); InstanceEventList instanceEventList = new InstanceEventList { InstanceEvents = instanceEvents }; return(Ok(instanceEventList)); }
/// <summary> /// Retrieves all instance events related to given instance, listed event types and given time frame from instanceEvent collection. /// </summary> /// <param name="instanceId"> Id of instance to retrieve events for. </param> /// <param name="eventTypes">List of event types to filter the events by.</param> /// <param name="from"> Lower bound for DateTime span to filter events by. Utc format and invariantCulture. </param> /// <param name="to"> Upper bound for DateTime span to filter events by. Utc format and invariantCulture. </param> /// <returns>List of intance events.</returns> public async Task <InstanceEventList> GetInstanceEvents(string instanceId, string[] eventTypes, string from, string to) { string requestUri = $"{_versionPrefix}/instances/{instanceId}/events?"; if (eventTypes != null) { StringBuilder eventTypeList = new StringBuilder(); foreach (string type in eventTypes) { if (eventTypeList.Length >= 1) { eventTypeList.Append(","); } eventTypeList.Append(type); } requestUri += $"&eventTypes={eventTypeList.ToString()}"; } if (!(string.IsNullOrEmpty(from) || string.IsNullOrEmpty(to))) { requestUri += $"&from={from}&to={to}"; } HttpResponseMessage response = await _client.GetAsync(_hostName + requestUri); if (response.IsSuccessStatusCode) { string eventData = await response.Content.ReadAsStringAsync(); InstanceEventList instanceEvents = JsonConvert.DeserializeObject <InstanceEventList>(eventData); return(instanceEvents); } throw new StorageClientException($"GET error: {response.Content?.ReadAsStringAsync()}"); }