package net.pechorina.kontempl.rest;
import net.pechorina.kontempl.data.Page;
import net.pechorina.kontempl.data.PageNode;
import net.pechorina.kontempl.data.Site;
import net.pechorina.kontempl.service.PageService;
import net.pechorina.kontempl.service.PageTreeService;
import net.pechorina.kontempl.service.SiteService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class SiteBrowseResource {
static final Logger logger = LoggerFactory.getLogger(SiteBrowseResource.class);
@Autowired
private SiteService siteService;
@Autowired
private PageService pageService;
@Autowired
private PageTreeService pageTreeService;
@Autowired
private Environment env;
@RequestMapping(method = RequestMethod.GET, value="/api/browse/sites/{siteName}")
public ResponseEntity<Site> getSiteByName(@PathVariable("siteName") String siteName) {
Site s = siteService.findByNameCached(siteName);
return new ResponseEntity<>(s, HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.GET, value="/api/browse/sites/{siteName}/pages/{pageName}")
public ResponseEntity<Page> getPageByName(@PathVariable("siteName") String siteName,
@PathVariable("pageName") String pageName) {
Site s = siteService.findByNameCached(siteName);
Page p = pageService.getPageCached(s, pageName);
return new ResponseEntity<>(p, HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.GET, value="/api/browse/sites/{siteName}/pages/{pageName}/children")
public List<Page> getPageChildrenByName(@PathVariable("siteName") String siteName,
@PathVariable("pageName") String pageName) {
Site s = siteService.findByNameCached(siteName);
Page p = pageService.getPageCached(s, pageName);
return pageService.listPageChildren(p);
}
@RequestMapping(method = RequestMethod.GET, value="/api/browse/sites/{siteName}/tree")
public List<PageNode> getPageTree(@PathVariable("siteName") String siteName,
@RequestParam(value="files", required=false) boolean includeFiles,
@RequestParam(value="images", required=false) boolean includeImages) {
logger.debug("Site tree: " + siteName + ", images:" + includeImages + ", files:" + includeFiles);
Site s = siteService.findByNameCached(siteName);
return pageTreeService.getPageNodeTreePublic(s, includeImages, includeFiles);
}
}