From ba7cd1dec7f7812d2585d8530957af338b35eabe Mon Sep 17 00:00:00 2001 From: foo Date: Tue, 3 Jan 2017 14:29:34 +0000 Subject: [PATCH] api created --- war/WEB-INF/lib/json-simple-1.1.1.jar | Bin 0 -> 37093 bytes war/api-error.jsp | 4 +++ war/api.jsp | 46 ++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 war/WEB-INF/lib/json-simple-1.1.1.jar create mode 100755 war/api-error.jsp create mode 100644 war/api.jsp diff --git a/war/WEB-INF/lib/json-simple-1.1.1.jar b/war/WEB-INF/lib/json-simple-1.1.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..ab6a87ec857ecf4e9a270ab74c6cc57a1276a420 GIT binary patch literal 37093 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

Q!=$3jhxfDX4>}M&Xqg$X0H2>sLYWUMNmwh<) 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

E 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 +<%@ page isErrorPage="true" %> +<%= exception %> diff --git a/war/api.jsp b/war/api.jsp new file mode 100644 index 0000000..84aa79e --- /dev/null +++ b/war/api.jsp @@ -0,0 +1,46 @@ +<%@ page language="java" contentType="application/json; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ page trimDirectiveWhitespaces="true" %> +<%@ page import="uk.org.mafoo.wordsearch.*" %> +<%@ page import="java.util.*" %> +<%@ page import="org.apache.commons.lang.StringUtils" %> +<%@ page import="org.apache.commons.lang.StringEscapeUtils" %> +<%@ page import="org.json.simple.JSONObject" %> +<%@ page errorPage="api-error.jsp" %> +<% + + int height = Integer.parseInt(request.getParameter("height")); + int width = Integer.parseInt(request.getParameter("width")); + boolean simple = request.getParameter("simple") != null; + String name = StringEscapeUtils.escapeHtml(request.getParameter("name")); + + if (request.getParameter("words").length() > 2048) { throw new Exception("Input too large"); } + if (height > 100 || width > 100) { throw new Exception("Dimentions too large"); } + + List words = new ArrayList(); + for ( String line : request.getParameter("words").split(",")) { + words.add(line.trim()); + } + Collections.sort(words); + + char[][] grid = GridFactory.makeGrid(words, height, width, simple); + + List> grid_ar = new ArrayList>(); + for ( char[] row : grid ) { + ArrayList row_ar = new ArrayList(); + for ( char cell : row ) { + row_ar.add("" + cell); + } + grid_ar.add(row_ar); + } + + JSONObject resp = new JSONObject(); + + resp.put("grid", grid_ar); + resp.put("words", words); + resp.put("height", height); + resp.put("width", width); + resp.put("isSimple", simple); + +%> +<%= resp %>