@ApiOperation(value = "Batch operation on a single user properties",
request = SingleUserBatchOperationRequest.class, response = Integer.class,
authorizations = {@Authorization(value = "write_key")})
@ApiResponses(value = {@ApiResponse(code = 404, message = "User does not exist.")})
@Path("/batch")
@JsonRequest
public void batchSingleUserOperations(RakamHttpRequest request) {
request.bodyHandler(s -> {
SingleUserBatchOperationRequest req;
try {
req = JsonHelper.read(s, SingleUserBatchOperationRequest.class);
} catch (Exception e) {
returnError(request, e.getMessage(), BAD_REQUEST);
return;
}
String project = apiKeyService.getProjectOfApiKey(req.api.apiKey, WRITE_KEY);
InetAddress socketAddress = ((InetSocketAddress) request.context().channel()
.remoteAddress()).getAddress();
DefaultFullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK, wrappedBuffer(OK_MESSAGE));
List<Cookie> cookies = mapEvent(mapper ->
mapper.map(project, req.data, new HttpRequestParams(request), socketAddress));
service.batch(project, req.data);
setBrowser(request, response);
if (cookies != null && !cookies.isEmpty()) {
response.headers().add(SET_COOKIE, STRICT.encode(cookies));
}
request.response(response).end();
});
}