public async Task <JourneyStatusResponse> PostAsync(PostJourneyStatusRequest postJourneyStatusRequest, CancellationToken cancellationToken) { var uri = new Uri($"JourneyStatuses", UriKind.Relative); using (var client = new HttpClient()) { client.BaseAddress = _baseUri; using (var request = new HttpRequestMessage(HttpMethod.Post, uri)) { var settings = new JsonSerializerSettings { Formatting = Formatting.Indented, ContractResolver = new JsonContractResolver(), NullValueHandling = NullValueHandling.Ignore }; settings.Converters.Add(new StringEnumConverter()); var serializedObject = JsonConvert.SerializeObject(postJourneyStatusRequest, settings); request.Content = new StringContent(serializedObject, Encoding.UTF8, "application/json"); using (var response = await client.SendAsync(request, cancellationToken).ConfigureAwait(false)) { if (!response.IsSuccessStatusCode) { throw new Exception(); } using (var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) { return(stream.ToObject <JourneyStatusResponse>()); } } } } }
public async Task <IActionResult> PostAsync([FromBody] PostJourneyStatusRequest request, CancellationToken cancellationToken) { async Task SendMessage(string topic, JourneyStatusResponse reponse) { await _vehicleNotificationHubContext.Clients.Group(topic).SendCoreAsync("journeyStatus", new[] { reponse }, cancellationToken); } var result = await _journeyStatusService.PostAsync(request, SendMessage, cancellationToken); return(result.GetActionResult(ActionResultFactory)); }