@JsonRequest
@ApiOperation(value = "Merge user with anonymous id", authorizations = @Authorization(value = "write_key"))
@ApiResponses(value = {@ApiResponse(code = 404, message = "User does not exist.")})
@Path("/merge")
@IgnoreApi
@AllowCookie
public void mergeUser(RakamHttpRequest request,
@BodyParam MergeRequest mergeRequest) {
if (!config.getEnableUserMapping()) {
throw new RakamException("The feature is not supported", PRECONDITION_FAILED);
}
Object anonymousId = mergeRequest.anonymousId;
DefaultFullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK, wrappedBuffer(OK_MESSAGE));
setBrowser(request, response);
if (anonymousId == null) {
throw new RakamException("Anonymous id is required", BAD_REQUEST);
}
String project = apiKeyService.getProjectOfApiKey(mergeRequest.api.apiKey, WRITE_KEY);
service.merge(project, mergeRequest.id, anonymousId,
Instant.ofEpochMilli(mergeRequest.createdAt),
Instant.ofEpochMilli(mergeRequest.mergedAt));
request.response(response).end();
}