serposcope.filters.GoogleGroupFilter Maven / Gradle / Ivy
The newest version!
/*
* Serposcope - SEO rank checker https://serposcope.serphacker.com/
*
* Copyright (c) 2016 SERP Hacker
* @author Pierre Nogues
* @license https://opensource.org/licenses/MIT MIT License
*/
package serposcope.filters;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.serphacker.serposcope.db.base.BaseDB;
import com.serphacker.serposcope.db.google.GoogleDB;
import com.serphacker.serposcope.models.base.Group;
import com.serphacker.serposcope.models.base.Group.Module;
import com.serphacker.serposcope.models.base.User;
import com.serphacker.serposcope.models.google.GoogleSearch;
import com.serphacker.serposcope.models.google.GoogleTarget;
import freemarker.template.utility.StringUtil;
import java.util.Arrays;
import java.util.List;
import ninja.Context;
import ninja.Filter;
import ninja.FilterChain;
import ninja.Result;
import ninja.Results;
import ninja.Router;
import ninja.session.FlashScope;
import org.apache.commons.lang3.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import serposcope.controllers.HomeController;
@Singleton
public class GoogleGroupFilter extends AbstractFilter {
private static final Logger LOG = LoggerFactory.getLogger(GoogleGroupFilter.class);
@Inject
ObjectMapper objectMapper;
@Inject
GoogleDB googleDB;
@Inject
BaseDB baseDB;
@Inject
Router router;
@Override
public Result filter(FilterChain filterChain, Context context) {
// LOG.trace("filter");
FlashScope flash = context.getFlashScope();
Group group = context.getAttribute("group", Group.class);
if(!Module.GOOGLE.equals(group.getModule())){
flash.error("error.unauthorizedAccess");
return Results.redirect(router.getReverseRoute(HomeController.class, "home"));
}
List targets = googleDB.target.list(Arrays.asList(group.getId()));
context.setAttribute("targets", targets);
List searches = googleDB.search.listByGroup(Arrays.asList(group.getId()));
context.setAttribute("searches", searches);
Result result = filterChain.next(context);
return result;
}
public String serializeTargets(Group group, List targets){
if(targets == null || targets.isEmpty()){
return "[]";
}
StringBuilder builder = new StringBuilder("[");
for (GoogleTarget target : targets) {
builder.append("{\"id\":").append(target.getId()).append(",");
builder.append("\"group\":").append(group.getId()).append(",");
builder.append("\"name\":\"").append(StringEscapeUtils.escapeJson(target.getName())).append("\"},");
}
builder.setCharAt(builder.length()-1, ']');
return builder.toString();
}
public String serializeSearches(Group group, List searches){
if(searches == null || searches.isEmpty()){
return "[]";
}
StringBuilder builder = new StringBuilder("[");
for (GoogleSearch search : searches) {
builder.append("{\"id\":").append(search.getId()).append(",");
builder.append("\"group\":").append(group.getId()).append(",");
builder.append("\"name\":\"").append(StringEscapeUtils.escapeJson(search.getKeyword())).append("\"},");
}
builder.setCharAt(builder.length()-1, ']');
return builder.toString();
}
}