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;
}
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;
}
};
}
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("");
}
Aggregations