@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { CharSequence pathInfo = request.getPathInfo(); if (pathInfo == null) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No path"); return; } Iterator<String> pathComponents = SLASH.split(pathInfo).iterator(); String userID; List<String> itemIDsList; try { userID = pathComponents.next(); itemIDsList = Lists.newArrayList(); while (pathComponents.hasNext()) { itemIDsList.add(pathComponents.next()); } } catch (NoSuchElementException nsee) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, nsee.toString()); return; } String[] itemIDs = itemIDsList.toArray(new String[itemIDsList.size()]); unescapeSlashHack(itemIDs); OryxRecommender recommender = getRecommender(); try { float[] estimates = recommender.estimatePreferences(userID, itemIDs); output(request, response, estimates); } catch (NotReadyException nre) { response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, nre.toString()); } }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { CharSequence pathInfo = request.getPathInfo(); if (pathInfo == null) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No path"); return; } Iterator<String> pathComponents = SLASH.split(pathInfo).iterator(); long toItemID; List<Long> itemIDsList = Lists.newArrayList(); try { toItemID = Long.parseLong(pathComponents.next()); while (pathComponents.hasNext()) { itemIDsList.add(Long.parseLong(pathComponents.next())); } } catch (NoSuchElementException nsee) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, nsee.toString()); return; } catch (NumberFormatException nfe) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, nfe.toString()); return; } if (itemIDsList.isEmpty()) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No items"); return; } long[] itemIDs = new long[itemIDsList.size()]; for (int i = 0; i < itemIDs.length; i++) { itemIDs[i] = itemIDsList.get(i); } MyrrixRecommender recommender = getRecommender(); try { float[] similarities = recommender.similarityToItem(toItemID, itemIDs); Writer out = response.getWriter(); for (float similarity : similarities) { out.write(Float.toString(similarity)); out.write('\n'); } } catch (NoSuchItemException nsie) { response.sendError(HttpServletResponse.SC_NOT_FOUND, nsie.toString()); } catch (NotReadyException nre) { response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, nre.toString()); } catch (TasteException te) { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, te.toString()); getServletContext().log("Unexpected error in " + getClass().getSimpleName(), te); } }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { CharSequence pathInfo = request.getPathInfo(); if (pathInfo == null) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No path"); return; } Iterator<String> pathComponents = SLASH.split(pathInfo).iterator(); String userID; String itemID; try { userID = pathComponents.next(); itemID = pathComponents.next(); } catch (NoSuchElementException nsee) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, nsee.toString()); return; } if (pathComponents.hasNext()) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Path too long"); return; } userID = unescapeSlashHack(userID); itemID = unescapeSlashHack(itemID); OryxRecommender recommender = getRecommender(); try { output( request, response, recommender.recommendedBecause(userID, itemID, getNumResultsToFetch(request))); } catch (NoSuchUserException nsue) { response.sendError(HttpServletResponse.SC_NOT_FOUND, nsue.toString()); } catch (NoSuchItemException nsie) { response.sendError(HttpServletResponse.SC_NOT_FOUND, nsie.toString()); } catch (NotReadyException nre) { response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, nre.toString()); } catch (IllegalArgumentException iae) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, iae.toString()); } catch (UnsupportedOperationException uoe) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, uoe.toString()); } }