package org.weiboad.ragnar.server.controller.ragnarlog; import com.google.gson.Gson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.weiboad.ragnar.server.data.MetaLog; import org.weiboad.ragnar.server.data.ResponseJson; import org.weiboad.ragnar.server.processor.MetaLogProcessor; import org.weiboad.ragnar.server.search.IndexService; @RestController public class PutMetalog { @Autowired IndexService indexHelper; @Autowired MetaLogProcessor metaLogProcessor; Logger log = LoggerFactory.getLogger(PutMetalog.class); @RequestMapping(value = "/log/metalog/put", method = RequestMethod.POST) @ResponseBody public ResponseJson appendindex(@RequestParam(value = "contents", required = false) String contents) { Gson gsonHelper = new Gson(); ResponseJson result = new ResponseJson(); if (contents == null || contents.length() == 0) { result.setCode(400); result.setMsg("Plasee set the contents paramter!"); return result; } //url decode the contents try { contents = java.net.URLDecoder.decode(contents, "utf-8"); } catch (Exception e) { //e.printStackTrace(); result.setCode(402); result.setMsg("contents decode wrong!:" + e.getMessage()); return result; } //split the json to by \r\n String[] contentslist = contents.split("\n"); if (contentslist.length > 0) { for (int i = 0; i < contentslist.length; i++) { String jsonstr = contentslist[i].trim(); //base64 decode try { sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder(); jsonstr = new String(decoder.decodeBuffer(jsonstr)); String[] metalogPack = jsonstr.trim().split("\n"); //remove the es info if (metalogPack.length == 2) { jsonstr = metalogPack[1]; //log.info("jsonStr:"+jsonstr); MetaLog metalog = gsonHelper.fromJson(jsonstr, MetaLog.class); indexHelper.insertProcessQueue(metalog); metaLogProcessor.insertDataQueue(metalog); } else { jsonstr = ""; } } catch (Exception e) { log.error(e.getMessage()); e.printStackTrace(); } } } else { result.setCode(401); result.setMsg("contents paramter format Wrong!"); return result; } return result; } }