# This file defines all application routes (Higher priority routes first)
# ~~~~

# TODO: Do we need the Builder ABI version in the URL?

# Templates
GET         /api/templates/list                          controllers.api.Templates.list
POST        /api/templates/clone                         controllers.api.Templates.cloneTemplate
GET         /api/templates/:name/meta                    controllers.api.Templates.meta(name)
GET         /api/templates/:id/tutorial/*location        controllers.api.Templates.tutorial(id, location)

# Operations on an app
GET         /api/app/history                             controllers.Application.getHistory
DELETE      /api/app/history/*appId                      controllers.Application.forgetApp(appId)
GET         /api/app/connect/*socketId                   controllers.Application.connectApp(socketId)

# Local system operations
GET         /api/local/env                               controllers.api.Local.getEnv
GET         /api/local/browse                            controllers.api.Local.browse(location)
GET         /api/local/browseRoots                       controllers.api.Local.browseRoots
GET         /api/local/show                              controllers.api.Local.show(location)
PUT         /api/local/save                              controllers.api.Local.save
GET         /api/local/open                              controllers.api.Local.open(location)
PUT         /api/local/create                            controllers.api.Local.createFile
PUT         /api/local/rename                            controllers.api.Local.renameFile
PUT         /api/local/delete                            controllers.api.Local.deleteFile

# Proxy to typesafe.com
GET         /api/proxy/*path                             controllers.api.Proxy.getTypesafe(path)

# Base flow ->  Select Template -> Running Application.
GET         /                                            controllers.Application.index
GET         /home                                        controllers.Application.forceHome
GET         /test                                        controllers.Application.test
GET         /app/:id                                     controllers.Application.redirectToApp(id)
GET         /app/:id/                                    controllers.Application.app(id)
GET         /app/:id/search/*query                       controllers.Application.search(id, query)
GET         /app/:id/tutorial/*location                  controllers.Application.appTutorialFile(id, location)
GET         /home/stream                                 controllers.Application.homeStream

# Console
GET         /api/console/:id                             controllers.ConsoleController.connectConsole(id)

# Map static resources from the /public folder to the /assets URL path
GET         /public/*file                                controllers.Assets.at(path="/public", file)
GET         /assets/*file                                controllers.Assets.at(path="/public", file)
