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);
}
};
}