package sample.http.processor;
import io.netty.handler.codec.http.HttpHeaders;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
import rfx.server.configs.ContentTypePool;
import rfx.server.http.HttpProcessor;
import rfx.server.http.HttpProcessorConfig;
import rfx.server.http.data.HttpRequestEvent;
import rfx.server.http.data.service.DataService;
/**
* @author trieu
*
* simple sample processor
*
*/
@HttpProcessorConfig(uriPath= "/analytics", contentType = ContentTypePool.JSON)
public class RealtimeAnalyticsHttpProcessor extends HttpProcessor {
@Override
protected DataService process(HttpRequestEvent requestEvent) {
String cmd = requestEvent.param("cmd", "show-all");
System.out.println("cmd: " + cmd);
return new AnalyticData(cmd).processCommand();
}
static class AnalyticData implements DataService{
static final String classpath = AnalyticData.class.getName();
String cmd = "Hello ";
Set<String> hotKeywords = new HashSet<>();
public AnalyticData(String cmd) {
super();
this.cmd = cmd;
}
public AnalyticData processCommand(){
//String minuteStr = DateTimeUtil.formatDateHourMinute(new Date());
switch (cmd) {
case "hotKeywords":
Jedis jedis = new Jedis("127.0.0.1");
Set<String> keys = jedis.keys("trending-keywords:*");
for (String key : keys) {
Set<String> keywords = jedis.zrange(key , 0, -1);
hotKeywords.addAll(keywords);
}
//String key = "trending-keywords:"+minuteStr;
break;
default:
break;
}
return this;
}
@Override
public void freeResource() {
}
@Override
public String getClasspath() {
return DataService.getClasspath(this);
}
@Override
public boolean isRenderedByTemplate() {
return false;
}
@Override
public List<HttpHeaders> getHttpHeaders() {
return null;
}
}
}