protected void notFound(RestxResponse resp, String relativePath) throws IOException { resp.setStatus(HttpStatus.NOT_FOUND); resp.setContentType("text/plain"); resp.getWriter().println("Resource route matched '" + this + "', but resource " + relativePath + " not found in " + baseResourcePath + "."); }
public RestxResponse addCookie(String cookie, String value, RestxSessionCookieDescriptor cookieDescriptor, Duration expires) { restxResponse.addCookie(cookie, value, cookieDescriptor, expires); return this; }
public RestxResponse clearCookie(String cookie, RestxSessionCookieDescriptor cookieDescriptor) { restxResponse.clearCookie(cookie, cookieDescriptor); return this; }
protected void serveResource(RestxResponse resp, URL resource, String contentType, Map<String, String> headers) throws IOException { resp.setLogLevel(RestxLogLevel.QUIET); resp.setStatus(HttpStatus.OK); for(Map.Entry<String,String> headerEntry: headers.entrySet()) { resp.setHeader(headerEntry.getKey(), headerEntry.getValue()); } resp.setContentType(contentType); Resources.asByteSource(resource).copyTo(resp.getOutputStream()); }
@Override public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { securityManager.check(req, match, permissionFactory.hasRole(AdminModule.RESTX_ADMIN_ROLE)); resp.setContentType("text/plain"); resp.getWriter().println(factory.dump()); } }
restxResponse.setStatus(HttpStatus.NOT_FOUND); restxResponse.setContentType("text/plain"); PrintWriter out = restxResponse.getWriter(); out.print(sb.toString()); } else { restxResponse.setStatus(HttpStatus.BAD_REQUEST); restxResponse.setContentType("text/plain"); PrintWriter out = restxResponse.getWriter(); if (restxRequest.getContentStream() instanceof BufferedInputStream) { try { restxResponse.setStatus(ex.getErrorStatus()); restxResponse.setContentType("application/json"); PrintWriter out = restxResponse.getWriter(); out.println(ex.toJSON()); } catch (WebException ex) { } catch (IllegalArgumentException | IllegalStateException ex) { logger.warn("request raised " + ex.getClass().getSimpleName() + ": " + ex.getMessage(), ex); restxResponse.setStatus(HttpStatus.BAD_REQUEST); restxResponse.setContentType("text/plain"); PrintWriter out = restxResponse.getWriter(); out.println("UNEXPECTED CLIENT ERROR:"); out.print(ex.getMessage()); Throwable ex = wrappedException.getCause(); logger.error("request raised " + ex.getClass().getSimpleName() + ": " + ex.getMessage(), ex); restxResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
@Override public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { String path = match.getPathParam("path"); File file = root.resolve(path).toFile(); if (!file.exists()) { notFound(match, resp); return; } if (file.isFile()) { resp.setStatus(HttpStatus.OK); resp.setContentType(HTTP.getContentTypeFromExtension(file.getName()).or("application/binary")); Files.asByteSource(file).copyTo(resp.getOutputStream()); } else if (file.isDirectory() && allowDirectoryListing) { resp.setStatus(HttpStatus.OK); resp.setContentType("application/json"); PrintWriter writer = resp.getWriter(); writer.println("["); Path dir = file.toPath(); for (Iterator<Path> iterator = java.nio.file.Files.newDirectoryStream(dir).iterator(); iterator.hasNext(); ) { Path s = iterator.next(); boolean isDirectory = s.toFile().isDirectory(); writer.println("\"" + dir.relativize(s) + (isDirectory ? "/" : "") + "\"" + (iterator.hasNext() ? "," : "") +""); } writer.println("]"); } else { throw new WebException(HttpStatus.UNAUTHORIZED); } }
@Override public void sendResponse(HttpStatus status, T value, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { resp.setStatus(status); resp.setContentType(contentType); writeHeaders(value, req, resp, ctx); ctx.getLifecycleListener().onBeforeWriteContent(req, resp); write(value, req, resp, ctx); ctx.getLifecycleListener().onAfterWriteContent(req, resp); }
@Override public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { resp.setStatus(HttpStatus.FORBIDDEN); } };
public RestxResponse setContentType(String s) { restxResponse.setContentType(s); return this; }
@Override protected void write(T value, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { writer.writeValue(resp.getWriter(), value); } }
private void updateSessionInClient(RestxResponse resp, RestxSession session) { ImmutableMap<String, String> cookiesMap = toCookiesMap(session); if (cookiesMap.isEmpty()) { resp.clearCookie(restxSessionCookieDescriptor.getCookieName(), restxSessionCookieDescriptor); resp.clearCookie(restxSessionCookieDescriptor.getCookieSignatureName(), restxSessionCookieDescriptor); } else { for (Map.Entry<String, String> cookie : cookiesMap.entrySet()) { logger.debug("setting cookie: {} {}", cookie.getKey(), cookie.getValue()); resp.addCookie(cookie.getKey(), cookie.getValue(), restxSessionCookieDescriptor, session.getExpires()); } } }
public void close() throws Exception { if (writer != null) { try { writer.close(); } finally { writer = null; } } restxResponse.close(); }
@Override public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { securityManager.check(req, match, permissionFactory.hasRole(AdminModule.RESTX_ADMIN_ROLE)); resp.setContentType("application/json"); List<String> data = Lists.newArrayList(); for (RestxSpecRecorder.RecordedSpec spec : recordedSpecsRepository.getRecordedSpecs()) { data.add(String.format("{ \"id\": \"%03d\", \"method\": \"%s\", \"path\": \"%s\", \"recordTime\": \"%s\", \"duration\":" + " %d, " + "\"capturedItems\": %d, \"capturedRequestSize\": %d, \"capturedResponseSize\": %d }", spec.getId(), spec.getMethod(), spec.getPath(), spec.getRecordTime(), spec.getDuration().getMillis(), spec.getCapturedItems(), spec.getCapturedRequestSize(), spec.getCapturedResponseSize())); } resp.getWriter().print("[\n"); Joiner.on(",\n").appendTo(resp.getWriter(), data); resp.getWriter().print("\n]"); } },
restxResponse.setStatus(HttpStatus.NOT_FOUND); restxResponse.setContentType("text/plain"); PrintWriter out = restxResponse.getWriter(); out.print(sb.toString()); } else { restxResponse.setStatus(HttpStatus.BAD_REQUEST); restxResponse.setContentType("text/plain"); PrintWriter out = restxResponse.getWriter(); if (restxRequest.getContentStream() instanceof BufferedInputStream) { try { restxResponse.setStatus(ex.getErrorStatus()); restxResponse.setContentType("application/json"); PrintWriter out = restxResponse.getWriter(); out.println(ex.toJSON()); } catch (WebException ex) { } catch (IllegalArgumentException | IllegalStateException ex) { logger.warn("request raised " + ex.getClass().getSimpleName() + ": " + ex.getMessage(), ex); restxResponse.setStatus(HttpStatus.BAD_REQUEST); restxResponse.setContentType("text/plain"); PrintWriter out = restxResponse.getWriter(); out.println("UNEXPECTED CLIENT ERROR:"); out.print(ex.getMessage()); Throwable ex = wrappedException.getCause(); logger.error("request raised " + ex.getClass().getSimpleName() + ": " + ex.getMessage(), ex); restxResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
@Override public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { String path = match.getPathParam("path"); File file = root.resolve(path).toFile(); if (!file.exists()) { notFound(match, resp); return; } if (file.isFile()) { resp.setStatus(HttpStatus.OK); resp.setContentType(HTTP.getContentTypeFromExtension(file.getName()).or("application/binary")); Files.asByteSource(file).copyTo(resp.getOutputStream()); } else if (file.isDirectory() && allowDirectoryListing) { resp.setStatus(HttpStatus.OK); resp.setContentType("application/json"); PrintWriter writer = resp.getWriter(); writer.println("["); Path dir = file.toPath(); for (Iterator<Path> iterator = java.nio.file.Files.newDirectoryStream(dir).iterator(); iterator.hasNext(); ) { Path s = iterator.next(); boolean isDirectory = s.toFile().isDirectory(); writer.println("\"" + dir.relativize(s) + (isDirectory ? "/" : "") + "\"" + (iterator.hasNext() ? "," : "") +""); } writer.println("]"); } else { throw new WebException(HttpStatus.UNAUTHORIZED); } }
protected void serveResource(RestxResponse resp, URL resource, String contentType, Map<String, String> headers) throws IOException { resp.setLogLevel(RestxLogLevel.QUIET); resp.setStatus(HttpStatus.OK); for(Map.Entry<String,String> headerEntry: headers.entrySet()) { resp.setHeader(headerEntry.getKey(), headerEntry.getValue()); } resp.setContentType(contentType); Resources.asByteSource(resource).copyTo(resp.getOutputStream()); }
@Override public void sendResponse(HttpStatus status, T value, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { resp.setStatus(status); resp.setContentType(contentType); writeHeaders(value, req, resp, ctx); ctx.getLifecycleListener().onBeforeWriteContent(req, resp); write(value, req, resp, ctx); ctx.getLifecycleListener().onAfterWriteContent(req, resp); }