/** * Copyright (C) 2013 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 conf; import com.google.inject.Inject; import ninja.AssetsController; import ninja.Router; import ninja.application.ApplicationRoutes; import ninja.utils.NinjaProperties; import controllers.ApiController; import controllers.ApplicationController; import controllers.ArticleController; import controllers.LoginLogoutController; public class Routes implements ApplicationRoutes { @Inject NinjaProperties ninjaProperties; /** * Using a (almost) nice DSL we can configure the router. * * The second argument NinjaModuleDemoRouter contains all routes of a * submodule. By simply injecting it we activate the routes. * * @param router * The default router of this application */ @Override public void init(Router router) { // puts test data into db: if (!ninjaProperties.isProd()) { router.GET().route("/setup").with(ApplicationController.class, "setup"); } /////////////////////////////////////////////////////////////////////// // Login / Logout /////////////////////////////////////////////////////////////////////// router.GET().route("/login").with(LoginLogoutController.class, "login"); router.POST().route("/login").with(LoginLogoutController.class, "loginPost"); router.GET().route("/logout").with(LoginLogoutController.class, "logout"); /////////////////////////////////////////////////////////////////////// // Create new article /////////////////////////////////////////////////////////////////////// router.GET().route("/article/new").with(ArticleController.class, "articleNew"); router.POST().route("/article/new").with(ArticleController.class, "articleNewPost"); /////////////////////////////////////////////////////////////////////// // Create new article /////////////////////////////////////////////////////////////////////// router.GET().route("/article/{id}").with(ArticleController.class, "articleShow"); /////////////////////////////////////////////////////////////////////// // Api for management of software /////////////////////////////////////////////////////////////////////// router.GET().route("/api/{username}/articles.json").with(ApiController.class, "getArticlesJson"); router.GET().route("/api/{username}/articles.xml").with(ApiController.class, "getArticlesXml"); router.POST().route("/api/{username}/article.json").with(ApiController.class, "postArticleJson"); router.POST().route("/api/{username}/article.xml").with(ApiController.class, "postArticleXml"); router.DELETE().route("/api/article/{id}").with(ApiController.class, "deleteArticle"); /////////////////////////////////////////////////////////////////////// // Assets (pictures / javascript) /////////////////////////////////////////////////////////////////////// router.GET().route("/assets/.*").with(AssetsController.class, "serve"); /////////////////////////////////////////////////////////////////////// // Index / Catchall shows index page /////////////////////////////////////////////////////////////////////// router.GET().route("/.*").with(ApplicationController.class, "index"); } }