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>());
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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));
        }