ninja.Results Maven / Gradle / Ivy
/**
* Copyright (C) the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ninja;
import java.util.Optional;
import ninja.utils.NoHttpBody;
/**
* Convenience methods for the generation of Results.
*
* {@link Results#forbidden() generates a results and sets it to forbidden.
*
* A range of shortcuts are available from here.
*
* @author rbauer
*
*/
public class Results {
public static Result status(int statusCode) {
Result result = new Result(statusCode);
return result;
}
public static Result ok() {
return status(Result.SC_200_OK);
}
public static Result created(Optional url) {
Result result = status(Result.SC_201_CREATED);
if (url.isPresent()) {
result.addHeader(Result.LOCATION, url.get());
}
return result;
}
public static Result notFound() {
return status(Result.SC_404_NOT_FOUND);
}
public static Result forbidden() {
return status(Result.SC_403_FORBIDDEN);
}
public static Result unauthorized() {
return status(Result.SC_401_UNAUTHORIZED);
}
public static Result badRequest() {
return status(Result.SC_400_BAD_REQUEST);
}
public static Result noContent() {
return status(Result.SC_204_NO_CONTENT)
.render(Result.NO_HTTP_BODY);
}
public static Result internalServerError() {
return status(Result.SC_500_INTERNAL_SERVER_ERROR);
}
/**
* A redirect that uses 303 see other.
*
* The redirect does NOT need a template and does NOT
* render a text in the Http body by default.
*
* If you wish to do so please
* remove the {@link NoHttpBody} that is set as renderable of
* the Result.
*
* @param url
* The url used as redirect target.
* @return A nicely configured result with status code 303 and the url set
* as Location header. Renders no Http body by default.
*/
public static Result redirect(String url) {
Result result = status(Result.SC_303_SEE_OTHER);
result.addHeader(Result.LOCATION, url);
result.render(Result.NO_HTTP_BODY);
return result;
}
/**
* A redirect that uses 307 see other.
*
* The redirect does NOT need a template and does NOT
* render a text in the Http body by default.
*
* If you wish to do so please
* remove the {@link NoHttpBody} that is set as renderable of
* the Result.
*
* @param url
* The url used as redirect target.
* @return A nicely configured result with status code 307 and the url set
* as Location header. Renders no Http body by default.
*/
public static Result redirectTemporary(String url) {
Result result = status(Result.SC_307_TEMPORARY_REDIRECT);
result.addHeader(Result.LOCATION, url);
result.render(Result.NO_HTTP_BODY);
return result;
}
public static Result contentType(String contentType) {
Result result = status(Result.SC_200_OK);
result.contentType(contentType);
return result;
}
public static Result html() {
Result result = status(Result.SC_200_OK);
result.contentType(Result.TEXT_HTML);
return result;
}
public static Result text() {
Result result = status(Result.SC_200_OK);
result.contentType(Result.TEXT_PLAIN);
return result;
}
public static Result json() {
Result result = status(Result.SC_200_OK).json();
return result;
}
public static Result jsonp() {
Result result = status(Result.SC_200_OK).jsonp();
return result;
}
public static Result xml() {
Result result = status(Result.SC_200_OK).xml();
return result;
}
public static Result TODO() {
Result result = status(Result.SC_501_NOT_IMPLEMENTED);
result.contentType(Result.APPLICATION_JSON);
return result;
}
/**
* Instructs ninja (and the http container) that it is okay to continue with
* the websocket handshake. This sets the HTTP status code to
* 101 Switching Protocols
. Do not include any result via
* a render() as writing it out will not be possible if you intend on
* switching protocols (e.g. upgrade to a websocket).
*/
public static Result webSocketContinue() {
return status(Result.SC_101_SWITCHING_PROTOCOLS);
}
public static AsyncResult async() {
return new AsyncResult();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy