DeviceBridge/Controllers/RegistrationController.cs (29 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
using System.Threading;
using System.Threading.Tasks;
using DeviceBridge.Models;
using DeviceBridge.Services;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace DeviceBridge.Controllers
{
[Route("devices/{deviceId}/[controller]")]
[ApiController]
public class RegistrationController : BaseController
{
private readonly IConnectionManager _connectionManager;
public RegistrationController(NLog.Logger logger, IConnectionManager connectionManager)
: base(logger)
{
_connectionManager = connectionManager;
}
/// <summary>
/// Performs DPS registration for a device, optionally assigning it to a model.
/// </summary>
/// <remarks>
/// The registration result is internally cached to be used in future connections.
/// This route is only intended for ahead-of-time registration of devices with the bridge and assignment to a specific model. To access all DPS registration features,
/// including sending custom registration payload and getting the assigned hub, please use the DPS REST API (https://docs.microsoft.com/en-us/rest/api/iot-dps/).
///
/// <b>NOTE:</b> DPS registration is a long-running operation, so calls to this route may take a long time to return. If this is a concern, use the DPS REST API directly, which provides
/// support for long-running operation status lookup.
/// </remarks>
/// <response code="200">Registration successful.</response>
[HttpPost]
[Route("")]
[ProducesResponseType(StatusCodes.Status200OK)]
public async Task<ActionResult> Register(string deviceId, RegistrationBody body, CancellationToken cancellationToken = default)
{
await _connectionManager.StandaloneDpsRegistrationAsync(Logger, deviceId, body.ModelId, cancellationToken);
return Ok();
}
}
}