public DesiredPropertyUpdateCallback GetDesiredPropertyUpdateCallback()

in DeviceBridge/Services/SubscriptionCallbackFactory.cs [32:57]


        public DesiredPropertyUpdateCallback GetDesiredPropertyUpdateCallback(string deviceId, DeviceSubscription desiredPropertySubscription)
        {
            return async (desiredPopertyUpdate, _) =>
            {
                _logger.Info("Got desired property update for device {deviceId}. Callback URL: {callbackUrl}. Payload: {desiredPopertyUpdate}", deviceId, desiredPropertySubscription.CallbackUrl, desiredPopertyUpdate.ToJson());

                try
                {
                    var body = new DesiredPropertyUpdateEventBody()
                    {
                        DeviceId = deviceId,
                        DeviceReceivedAt = DateTime.UtcNow,
                        DesiredProperties = new JRaw(desiredPopertyUpdate.ToJson()),
                    };

                    var payload = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
                    using var httpResponse = await _httpClientFactory.CreateClient("RetryClient").PostAsync(desiredPropertySubscription.CallbackUrl, payload);
                    httpResponse.EnsureSuccessStatusCode();
                    _logger.Info("Successfully executed desired property update callback for device {deviceId}. Callback status code {statusCode}", deviceId, httpResponse.StatusCode);
                }
                catch (Exception e)
                {
                    _logger.Error(e, "Failed to execute desired property update callback for device {deviceId}", deviceId);
                }
            };
        }