Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Creative commons Attribution-NonCommercial license. http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
  
  package base.jee.servlet;
  
 import java.util.List;
 import java.util.Map;
 
 
 import base.Command;
 import base.KeyValue;
 import base.Query;
 
 public class ApiServlet extends HttpServlet {
 
 	private static final long serialVersionUID = 1L;
 
 	protected Settings settings;
 	protected JeeBase jee;
 
 	public ApiServlet(JeeBase jeethrows IOException {
 		this. = jee.getSettings();
 		this. = jee;
 	}
 
 	public void doGet(HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
 		String command = request.getPathInfo();
 		if(command.startsWith("/")) {
 			command = command.substring(1);
 		}
 
 		response.setContentType("text/plain; charset=utf8");
 
 		String token = (String)request.getAttribute(.);
 		if(token == null) {
 			for (Cookie cookie : request.getCookies()) {
 					token = cookie.getValue();
 					break;
 				}
 			}
 		}
 
 		User u = .getAPI().getSession(token, BaseServlet.getIp(request)).get(0);
 
 		String queryString = request.getQueryString();
 
 		if (queryString == null) {
 			.log("DEBUG""Accessing url: " + request.getRequestURI(), u);
 		} else {
 			.log("DEBUG""Accessing url: " + request.getRequestURI() + "?" + queryStringu);
 		}
 
 		for(Query i : .getApiQueries()) {
 			if(i.getClass().getSimpleName().equalsIgnoreCase(command)) {
 				List<QueryResultresults = null;
 				try {
 					Map<StringObjectparameters = requestToParameters(requestu);
 					if(command.equals("InvalidateToken")) {
 						AuthorisationFilter.attachCookieToResponse(response, StringHelper.randomString(.));
 						parameters.put("token"token);
 					}
 					if(command.equals("GetSession")) {
 						parameters.put("token"token);
 						parameters.put("ip"u.getIp());
 					}
 					results = i.newWithParameters(parameters).run();
 				} catch(IllegalArgumentException e) {
 					PrintWriter out = response.getWriter();
 					out.println("{\"error\":\"" + e.getMessage() + "\"}");
 					return;
 				} catch(Exception e) {
 					PrintWriter out = response.getWriter();
 					out.println("{\"error\":\"" + e.toString() + "\"}");
 					return;
 				}
 				if(command.equals("Authenticate") && results.size() > 0 && ((KeyValue)results.get(0)).getKey().equals("token")) {
 					AuthorisationFilter.attachCookieToResponse(response, ((KeyValue)results.get(0)).getValue());
 				}
				PrintWriter out = response.getWriter();
				out.print("[");
				boolean first = true;
				for(QueryResult r : results) {
					if(first) {
						first = !first;
						out.print("\n\t" + r.toJson());
else {
						out.print(",\n\t" + r.toJson());
					}
				}
				out.print("\n]");
				return;
			}
		}
		PrintWriter out = response.getWriter();
		for(Command i : .getApiCommands()) {
				try {
					Map<StringObjectparameters = requestToParameters(requestu);
					i.newWithParameters(parameters).run();
					out.println("{\"error\":\"" + e.getMessage() + "\"}");
					return;
catch(Exception e) {
					out.println("{\"error\":\"" + e.toString() + "\"}");
					return;
				}
				out.println("{\"success\":\"ok\"}");
				return;
			}
		}
		out.println("{\"error\":\"Unknown command\"}");
	}
		Map<StringObjectparameters = new Hashtable<>();
		parameters.put("jee");
		parameters.put("user"u);
		parameters.put("api".getAPI());
		for(Entry<StringString[]> p : request.getParameterMap().entrySet()) {
			if(p.getValue().length == 1) {
				parameters.put(p.getKey(), p.getValue()[0]);
else if(p.getValue().length > 1) {
				parameters.put(p.getKey(), p.getValue());
			}
		}
		return parameters;
	}
New to GrepCode? Check out our FAQ X