mirror of
https://github.com/ohwgiles/laminar.git
synced 2024-10-27 20:34:20 +00:00
Reuse MappedFileImpl for reading custom css
This is nicer than slurping and removes a whole function. A further improvement could be to retain the mapping permanently open. Part of #49 refactor
This commit is contained in:
parent
758b5f2e46
commit
d29715c0ec
@ -130,8 +130,8 @@ struct LaminarInterface {
|
||||
virtual kj::Own<MappedFile> getArtefact(std::string path) = 0;
|
||||
|
||||
// Fetches the content of $LAMINAR_HOME/custom/style.css or an empty
|
||||
// string. This shouldn't be used, because the sysadmin should have
|
||||
// configured a real webserver to serve these things.
|
||||
// string. Ideally, this would instead be served by a proper web server
|
||||
// which handles this url.
|
||||
virtual std::string getCustomCss() = 0;
|
||||
|
||||
// Abort all running jobs
|
||||
|
@ -825,25 +825,6 @@ void Laminar::runFinished(Run * r) {
|
||||
}
|
||||
}
|
||||
|
||||
// Small helper function to return the full contents of a file given its path.
|
||||
// It reads in the whole file into the given string reference.
|
||||
// This is a terrible way to serve files (especially large ones). Hopefully
|
||||
// no-one uses this function and configures their webservers appropriately.
|
||||
static bool slurp(fs::path path, std::string& output) {
|
||||
if(!fs::is_regular_file(path))
|
||||
return false;
|
||||
std::ifstream fstr(path.string());
|
||||
fstr.seekg(0, std::ios::end);
|
||||
ssize_t sz = fstr.tellg();
|
||||
if(fstr.good()) {
|
||||
output.resize(static_cast<size_t>(sz));
|
||||
fstr.seekg(0);
|
||||
fstr.read(&output[0], sz);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
class MappedFileImpl : public MappedFile {
|
||||
public:
|
||||
MappedFileImpl(const char* path) :
|
||||
@ -877,10 +858,10 @@ kj::Own<MappedFile> Laminar::getArtefact(std::string path) {
|
||||
return kj::heap<MappedFileImpl>(fs::path(fs::path(homeDir)/"archive"/path).c_str());
|
||||
}
|
||||
|
||||
std::string Laminar::getCustomCss()
|
||||
{
|
||||
fs::path file(fs::path(homeDir)/"custom"/"style.css");
|
||||
std::string result;
|
||||
slurp(file, result);
|
||||
return result;
|
||||
std::string Laminar::getCustomCss() {
|
||||
MappedFileImpl cssFile(fs::path(fs::path(homeDir)/"custom"/"style.css").c_str());
|
||||
if(cssFile.address()) {
|
||||
return std::string(static_cast<const char*>(cssFile.address()), cssFile.size());
|
||||
}
|
||||
return std::string();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user