Search in sources :

Example 16 with OrchidResource

use of com.eden.orchid.api.resources.resource.OrchidResource in project Orchid by JavaEden.

the class AssetsGenerator method startIndexing.

@Override
public List<? extends OrchidPage> startIndexing() {
    List<OrchidResource> resourcesList = resources.getResourceEntries("assets", null, true);
    List<OrchidPage> assets = new ArrayList<>();
    for (OrchidResource entry : resourcesList) {
        //            entry.getReference().setBasePath("assets");
        assets.add(new OrchidPage(entry));
    }
    return assets;
}
Also used : OrchidPage(com.eden.orchid.api.theme.pages.OrchidPage) OrchidResource(com.eden.orchid.api.resources.resource.OrchidResource) ArrayList(java.util.ArrayList)

Example 17 with OrchidResource

use of com.eden.orchid.api.resources.resource.OrchidResource in project Orchid by JavaEden.

the class GeneratorServiceTest method setUp.

@BeforeEach
public void setUp() {
    context = mock(OrchidContext.class);
    extractor = mock(OptionsExtractor.class);
    theme = mock(Theme.class);
    buildMetrics = new BuildMetrics(context);
    internalIndex = new OrchidRootIndex(context, "internal");
    when(context.resolve(OptionsExtractor.class)).thenReturn(extractor);
    when(context.findTheme(any())).thenReturn(theme);
    when(context.getIndex()).thenReturn(internalIndex);
    when(context.includeDrafts()).thenReturn(false);
    when(context.getEmbeddedData(anyString(), anyString())).thenReturn(new EdenPair<>("", new HashMap<>()));
    generators = new HashSet<>();
    mockPage1Reference = new OrchidReference(context, "page1.html");
    mockPage1Resource = new StringResource(mockPage1Reference, "");
    mockPage1 = spy(new OrchidPage(mockPage1Resource, RenderService.RenderMode.TEMPLATE, "mockPage1", ""));
    pages1 = new ArrayList<>();
    pages1.add(mockPage1);
    generator1 = spy(new MockGenerator("gen1", OrchidGenerator.Stage.COLLECTION, pages1));
    generators.add(generator1);
    mockPage2Reference = new OrchidReference(context, "page2.html");
    mockFreeableResource = spy(new OrchidResource(mockPage2Reference) {

        @Nonnull
        @Override
        public InputStream getContentStream() {
            return OrchidExtensionsKt.asInputStream("");
        }
    });
    mockPage2 = spy(new OrchidPage(mockFreeableResource, RenderService.RenderMode.TEMPLATE, "mockPage2", ""));
    pages2 = new ArrayList<>();
    pages2.add(mockPage2);
    generator2 = spy(new MockGenerator("gen2", OrchidGenerator.Stage.CONTENT, pages2));
    generators.add(generator2);
    pages3 = new ArrayList<>();
    generator3 = new MockGenerator("gen3", OrchidGenerator.Stage.WARM_UP, pages3);
    generator3 = spy(generator3);
    generators.add(generator3);
    when(context.resolveSet(OrchidGenerator.class)).thenReturn(generators);
    // test the service directly
    service = new GeneratorServiceImpl();
    service.initialize(context);
    // test that the default implementation is identical to the real implementation
    underTest = new GeneratorService() {

        public void initialize(OrchidContext context) {
        }

        public <T extends OrchidService> T getService(Class<T> serviceClass) {
            return (T) service;
        }
    };
}
Also used : OrchidPage(com.eden.orchid.api.theme.pages.OrchidPage) OrchidContext(com.eden.orchid.api.OrchidContext) HashMap(java.util.HashMap) OptionsExtractor(com.eden.orchid.api.options.OptionsExtractor) StringResource(com.eden.orchid.api.resources.resource.StringResource) OrchidReference(com.eden.orchid.api.theme.pages.OrchidReference) OrchidRootIndex(com.eden.orchid.api.indexing.OrchidRootIndex) OrchidResource(com.eden.orchid.api.resources.resource.OrchidResource) Theme(com.eden.orchid.api.theme.Theme) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 18 with OrchidResource

use of com.eden.orchid.api.resources.resource.OrchidResource in project Orchid by JavaEden.

the class IndexFileResponse method getResponse.

// TODO: convert this to a component
static OrchidResponse getResponse(OrchidContext context, File targetFile, String targetPath) {
    if (targetFile.isDirectory()) {
        Clog.i("Rendering directory index: {}", targetPath);
        File[] files = targetFile.listFiles();
        if (files != null) {
            List<FileRow> jsonDirs = new ArrayList<>();
            List<FileRow> jsonFiles = new ArrayList<>();
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd-hh:mm:ss z", Locale.getDefault());
            jsonDirs.add(new FileRow(OrchidUtils.applyBaseUrl(context, StringUtils.strip(targetPath, "/")) + "/..", StringUtils.strip(targetPath, "/") + "/..", ".. (Go up)", "", "", "assets/svg/folder.svg"));
            for (File file : files) {
                FileRow newFile = new FileRow();
                newFile.url = OrchidUtils.applyBaseUrl(context, StringUtils.strip(targetPath, "/") + "/" + file.getName());
                newFile.path = StringUtils.strip(targetPath, "/") + "/" + file.getName();
                newFile.name = file.getName();
                newFile.date = formatter.format(new Date(file.lastModified()));
                String icon;
                if (file.isDirectory()) {
                    icon = "folder";
                    newFile.size = file.listFiles().length + " entries";
                    jsonDirs.add(newFile);
                } else {
                    icon = FilenameUtils.getExtension(file.getName());
                    newFile.size = humanReadableByteCount(file.length(), true);
                    jsonFiles.add(newFile);
                }
                newFile.icon = "assets/svg/" + icon + ".svg";
            }
            jsonDirs.sort(Comparator.comparing(fileRow -> fileRow.name));
            jsonFiles.sort(Comparator.comparing(fileRow -> fileRow.name));
            OrchidResource resource = context.getDefaultResourceSource(null, context.getTheme()).getResourceEntry(context, "templates/server/directoryListing.peb");
            Map<String, Object> indexPageVars = new HashMap<>();
            indexPageVars.put("title", "List of files/dirs under " + targetPath);
            indexPageVars.put("path", targetPath);
            indexPageVars.put("dirs", jsonDirs);
            indexPageVars.put("files", jsonFiles);
            Map<String, Object> object = new HashMap<>(context.getConfig());
            object.put("page", indexPageVars);
            object.put("theme", context.getTheme());
            String directoryListingContent;
            if (resource != null) {
                directoryListingContent = context.compile(resource, resource.getReference().getExtension(), resource.getContent(), object);
            } else {
                directoryListingContent = context.serialize("json", object);
            }
            OrchidPage page = new OrchidPage(new StringResource(new OrchidReference(context, "directoryListing.txt"), directoryListingContent), RenderService.RenderMode.TEMPLATE, "directoryListing", "Index");
            return new OrchidResponse(context).page(page).status(404);
        }
    }
    return new OrchidResponse(context).content("");
}
Also used : OrchidResponse(com.eden.orchid.api.server.OrchidResponse) OrchidResource(com.eden.orchid.api.resources.resource.OrchidResource) Date(java.util.Date) SimpleDateFormat(java.text.SimpleDateFormat) HashMap(java.util.HashMap) RenderService(com.eden.orchid.api.render.RenderService) OrchidReference(com.eden.orchid.api.theme.pages.OrchidReference) StringUtils(org.apache.commons.lang3.StringUtils) OrchidContext(com.eden.orchid.api.OrchidContext) File(java.io.File) ArrayList(java.util.ArrayList) List(java.util.List) AssetPage(com.eden.orchid.api.theme.assets.AssetPage) Locale(java.util.Locale) Map(java.util.Map) AssetHolder(com.eden.orchid.api.theme.assets.AssetHolder) OrchidUtils(com.eden.orchid.utilities.OrchidUtils) Clog(com.caseyjbrooks.clog.Clog) AssetManagerDelegate(com.eden.orchid.api.theme.assets.AssetManagerDelegate) Comparator(java.util.Comparator) StringResource(com.eden.orchid.api.resources.resource.StringResource) FilenameUtils(org.apache.commons.io.FilenameUtils) OrchidPage(com.eden.orchid.api.theme.pages.OrchidPage) OrchidPage(com.eden.orchid.api.theme.pages.OrchidPage) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Date(java.util.Date) StringResource(com.eden.orchid.api.resources.resource.StringResource) OrchidReference(com.eden.orchid.api.theme.pages.OrchidReference) OrchidResponse(com.eden.orchid.api.server.OrchidResponse) OrchidResource(com.eden.orchid.api.resources.resource.OrchidResource) File(java.io.File) SimpleDateFormat(java.text.SimpleDateFormat)

Aggregations

OrchidResource (com.eden.orchid.api.resources.resource.OrchidResource)18 OrchidPage (com.eden.orchid.api.theme.pages.OrchidPage)7 ArrayList (java.util.ArrayList)7 StringResource (com.eden.orchid.api.resources.resource.StringResource)6 JSONObject (org.json.JSONObject)6 OrchidReference (com.eden.orchid.api.theme.pages.OrchidReference)4 OrchidResponse (com.eden.orchid.api.server.OrchidResponse)3 File (java.io.File)3 SimpleDateFormat (java.text.SimpleDateFormat)3 Date (java.util.Date)3 HashMap (java.util.HashMap)3 OrchidContext (com.eden.orchid.api.OrchidContext)2 OrchidResponse (com.eden.orchid.server.api.OrchidResponse)2 Get (com.eden.orchid.server.api.methods.Get)2 Document (org.jsoup.nodes.Document)2 Element (org.jsoup.nodes.Element)2 Clog (com.caseyjbrooks.clog.Clog)1 JSONElement (com.eden.common.json.JSONElement)1 OrchidIndex (com.eden.orchid.api.indexing.OrchidIndex)1 OrchidRootIndex (com.eden.orchid.api.indexing.OrchidRootIndex)1