throw new HttpRequestException("Spiders are not allowed in Rakam Analytics.", FORBIDDEN);
EventCollectionHttpService.returnError(request, e.getMessage(), e.getStatusCode()); } catch (HttpRequestException e) { EventCollectionHttpService.returnError(request, e.getMessage(), e.getStatusCode()); } catch (Throwable t) { LOGGER.error(t);
public static void returnError(RakamHttpRequest request, HttpRequestException e) { byte[] bytes; try { bytes = DEFAULT_MAPPER.writeValueAsBytes(new ErrorMessage(e.getErrors(), e.getMeta())); } catch (JsonProcessingException ex) { throw new RuntimeException(); } request.response(bytes, e.getStatusCode()).headers().set("Content-Type", "application/json"); request.end(); }
response.headers().add("server-error", e.getMessage()); } catch (HttpRequestException e) { response.headers().add("server-error", e.getMessage()); } catch (IllegalArgumentException e) { LogUtil.logException(request, e);
void requestError(Throwable ex, RakamHttpRequest request) { uncaughtExceptionHandler.handle(request, ex); if (ex instanceof HttpRequestException) { HttpRequestException httpEx = (HttpRequestException) ex; HttpResponseStatus statusCode = httpEx.getStatusCode(); returnJsonResponse(mapper, request, statusCode, new ErrorMessage(httpEx.getErrors(), httpEx.getMeta())); } else { returnJsonResponse(mapper, request, INTERNAL_SERVER_ERROR, getErrorMessage(ex)); LOGGER.error(ex, "Error while processing request"); } }
void handleJsonRequest(ObjectMapper mapper, HttpService serviceInstance, RakamHttpRequest request, Function<HttpService, Object> function) { try { Object apply = function.apply(serviceInstance); returnJsonResponse(mapper, request, OK, apply); } catch (HttpRequestException ex) { uncaughtExceptionHandler.handle(request, ex); HttpResponseStatus statusCode = ex.getStatusCode(); returnJsonResponse(mapper, request, statusCode, new ErrorMessage(ex.getErrors(), ex.getMeta())); } catch (Throwable e) { uncaughtExceptionHandler.handle(request, e); LOGGER.error(e, "An uncaught exception raised while processing request."); returnJsonResponse(mapper, request, INTERNAL_SERVER_ERROR, getErrorMessage(e)); } }
return; } catch (HttpRequestException e) { returnError(request, e.getMessage(), e.getStatusCode()); return; } catch (IllegalArgumentException e) {
public Object extract(ObjectNode node, RakamHttpRequest request) { try { return mapper.convertValue(node, type); } catch (IllegalArgumentException e) { throw new HttpRequestException(e.getMessage(), BAD_REQUEST); } } }
void handleJsonRequest(ObjectMapper mapper, RakamHttpRequest request, MethodHandle methodHandle, Object[] arguments) { try { Object apply = methodHandle.invokeWithArguments(arguments); returnJsonResponse(mapper, request, OK, apply); } catch (HttpRequestException e) { uncaughtExceptionHandler.handle(request, e); HttpResponseStatus statusCode = e.getStatusCode(); returnJsonResponse(mapper, request, statusCode, new ErrorMessage(e.getErrors(), e.getMeta())); } catch (Throwable e) { uncaughtExceptionHandler.handle(request, e); LOGGER.error(e, "An uncaught exception raised while processing request."); returnJsonResponse(mapper, request, INTERNAL_SERVER_ERROR, getErrorMessage(e)); } }
return; } catch (HttpRequestException e) { returnError(request, e.getMessage(), e.getStatusCode()); return; } catch (IllegalArgumentException e) {
@Override public T extract(ObjectNode node, RakamHttpRequest request) { String value = request.headers().get(name); if (value == null && required) { throw new HttpRequestException("'" + name + "' header parameter is required.", BAD_REQUEST); } try { return mapper.apply(value); } catch (Exception e) { throw new HttpRequestException(String.format("Unable to parse header parameter %s", name), BAD_REQUEST); } } }
return; } catch (HttpRequestException e) { returnError(request, e.getMessage(), e.getStatusCode()); return; } catch (IllegalArgumentException e) {
@Override public T extract(ObjectNode node, RakamHttpRequest request) { List<String> strings = request.params().get(name); if ((strings == null || strings.isEmpty())) { if (required) { throw new HttpRequestException("'" + name + "' query parameter is required.", BAD_REQUEST); } else { return null; } } try { return mapper.apply(strings.get(0)); } catch (Exception e) { throw new HttpRequestException(String.format("Unable to parse query parameter %s", name), BAD_REQUEST); } } }
public Object extract(ObjectNode node, RakamHttpRequest request) { JsonNode value = node.get(name); Object o; if (value == null) { o = null; } else { try { o = mapper.convertValue(value, type); } catch (IllegalArgumentException e) { throw new HttpRequestException(name + " body parameter cannot be cast to " + type.toString() + ": "+e.getMessage(), BAD_REQUEST); } } if (required && (o == null || o == NullNode.getInstance())) { throw new HttpRequestException(name + " body parameter is required", BAD_REQUEST); } return o; } }
@Override public String extract(ObjectNode node, RakamHttpRequest request) { for (Cookie cookie : request.cookies()) { if (name.equals(cookie.name())) { // TODO fixme: the value of cookie parameter always must be String. return cookie.value(); } } if (required) { throw new HttpRequestException("'" + name + "' cookie is required.", BAD_REQUEST); } return null; } }
throw new HttpRequestException("Spiders are not allowed in Rakam Analytics.", HttpResponseStatus.FORBIDDEN);
server.uncaughtExceptionHandler.handle(request, new HttpRequestException(errorMessage, REQUEST_ENTITY_TOO_LARGE)); HttpServer.returnError(request, "Body is too large.", REQUEST_ENTITY_TOO_LARGE); ctx.close();