/** * Creates a new instance of an HTTP protocol handler for Hono's <em>Device Registration</em> API. * * @return The handler. */ @Bean @Scope("prototype") public RegistrationHttpEndpoint registrationHttpEndpoint() { return new RegistrationHttpEndpoint(vertx()); }
private void updateRegistration(final String deviceId, final JsonObject payload, final RoutingContext ctx) { if (payload != null) { payload.remove(RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID); } final String tenantId = getTenantParam(ctx); logger.debug("updating registration data for device [tenant: {}, device: {}, payload: {}]", tenantId, deviceId, payload); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_UPDATE) .setTenant(tenantId) .setDeviceId(deviceId) .setJsonPayload(payload) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx)); }
private void doUnregisterDevice(final RoutingContext ctx) { final String deviceId = getDeviceIdParam(ctx); final String tenantId = getTenantParam(ctx); logger.debug("removing registration information for device [tenant: {}, device: {}]", tenantId, deviceId); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_DEREGISTER) .setTenant(tenantId) .setDeviceId(deviceId) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx)); }
private void doGetDevice(final RoutingContext ctx) { final String deviceId = getDeviceIdParam(ctx); final String tenantId = getTenantParam(ctx); final HttpServerResponse response = ctx.response(); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_GET) .setTenant(tenantId) .setDeviceId(deviceId) .toJson(); sendAction(ctx, requestMsg, (status, registrationResult) -> { response.setStatusCode(status); switch (status) { case HttpURLConnection.HTTP_OK: HttpUtils.setResponseBody(ctx.response(), registrationResult); default: response.end(); } }); }
private void doUpdateRegistrationJson(final RoutingContext ctx) { try { JsonObject payload = null; if (ctx.getBody().length() > 0) { payload = ctx.getBodyAsJson(); } updateRegistration(getDeviceIdParam(ctx), payload, ctx); } catch (final DecodeException e) { HttpUtils.badRequest(ctx, "body does not contain a valid JSON object"); } }
private void doRegisterDeviceJson(final RoutingContext ctx) { try { JsonObject payload = null; if (ctx.getBody().length() > 0) { payload = ctx.getBodyAsJson(); } registerDevice(ctx, payload); } catch (final DecodeException e) { HttpUtils.badRequest(ctx, "body does not contain a valid JSON object"); } }
private void doGetDevice(final RoutingContext ctx) { final String deviceId = getDeviceIdParam(ctx); final String tenantId = getTenantParam(ctx); final HttpServerResponse response = ctx.response(); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_GET) .setTenant(tenantId) .setDeviceId(deviceId) .toJson(); sendAction(ctx, requestMsg, (status, registrationResult) -> { response.setStatusCode(status); switch (status) { case HttpURLConnection.HTTP_OK: HttpUtils.setResponseBody(ctx.response(), registrationResult); default: response.end(); } }); }
private void doUpdateRegistrationJson(final RoutingContext ctx) { try { JsonObject payload = null; if (ctx.getBody().length() > 0) { payload = ctx.getBodyAsJson(); } updateRegistration(getDeviceIdParam(ctx), payload, ctx); } catch (final DecodeException e) { HttpUtils.badRequest(ctx, "body does not contain a valid JSON object"); } }
private void doRegisterDeviceJson(final RoutingContext ctx) { try { JsonObject payload = null; if (ctx.getBody().length() > 0) { payload = ctx.getBodyAsJson(); } registerDevice(ctx, payload); } catch (final DecodeException e) { HttpUtils.badRequest(ctx, "body does not contain a valid JSON object"); } }
private void updateRegistration(final String deviceId, final JsonObject payload, final RoutingContext ctx) { if (payload != null) { payload.remove(RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID); } final String tenantId = getTenantParam(ctx); logger.debug("updating registration data for device [tenant: {}, device: {}, payload: {}]", tenantId, deviceId, payload); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_UPDATE) .setTenant(tenantId) .setDeviceId(deviceId) .setJsonPayload(payload) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx)); }
private void doUnregisterDevice(final RoutingContext ctx) { final String deviceId = getDeviceIdParam(ctx); final String tenantId = getTenantParam(ctx); logger.debug("removing registration information for device [tenant: {}, device: {}]", tenantId, deviceId); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_DEREGISTER) .setTenant(tenantId) .setDeviceId(deviceId) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx)); }
/** * Creates a new instance of an HTTP protocol handler for Hono's <em>Device Registration</em> API. * * @return The handler. */ @Bean @Scope("prototype") public RegistrationHttpEndpoint registrationHttpEndpoint() { return new RegistrationHttpEndpoint(vertx()); }
private void registerDevice(final RoutingContext ctx, final JsonObject payload) { if (payload == null) { HttpUtils.badRequest(ctx, "missing body"); } else { final Object deviceId = payload.remove(RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID); if (deviceId == null) { HttpUtils.badRequest(ctx, String.format("'%s' param is required", RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID)); } else if (!(deviceId instanceof String)) { HttpUtils.badRequest(ctx, String.format("'%s' must be a string", RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID)); } else { final String tenantId = getTenantParam(ctx); logger.debug("registering data for device [tenant: {}, device: {}, payload: {}]", tenantId, deviceId, payload); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_REGISTER) .setTenant(tenantId) .setDeviceId((String) deviceId) .setJsonPayload(payload) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx, status -> status == HttpURLConnection.HTTP_CREATED, response -> response.putHeader( HttpHeaders.LOCATION, String.format("/%s/%s/%s", RegistrationConstants.REGISTRATION_ENDPOINT, tenantId, deviceId)))); } } }
private void registerDevice(final RoutingContext ctx, final JsonObject payload) { if (payload == null) { HttpUtils.badRequest(ctx, "missing body"); } else { final Object deviceId = payload.remove(RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID); if (deviceId == null) { HttpUtils.badRequest(ctx, String.format("'%s' param is required", RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID)); } else if (!(deviceId instanceof String)) { HttpUtils.badRequest(ctx, String.format("'%s' must be a string", RegistrationConstants.FIELD_PAYLOAD_DEVICE_ID)); } else { final String tenantId = getTenantParam(ctx); logger.debug("registering data for device [tenant: {}, device: {}, payload: {}]", tenantId, deviceId, payload); final JsonObject requestMsg = EventBusMessage.forOperation(RegistrationConstants.ACTION_REGISTER) .setTenant(tenantId) .setDeviceId((String) deviceId) .setJsonPayload(payload) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx, status -> status == HttpURLConnection.HTTP_CREATED, response -> response.putHeader( HttpHeaders.LOCATION, String.format("/%s/%s/%s", RegistrationConstants.REGISTRATION_ENDPOINT, tenantId, deviceId)))); } } }