1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2024-10-27 20:34:20 +00:00
ohwgiles_laminar/src/resources.h
Cameron Eagans 2e54773e83
Add the ability to customize index.html (#113)
User may provide a custom index.html template file to be used instead
of the built-in version. Changes to this file are watched by laminard
using inotify in order to load and compress the custom file for gzip
delivery, reusing the existing method for serving static assets.

This feature obviates the custom css feature, so remove references from
the manual and add a deprecation warning if it is used.

Add a section to the UserManual describing how to use this feature and
including a link to an example using Semantic UI.
2020-03-10 19:40:14 +02:00

51 lines
1.7 KiB
C++

///
/// Copyright 2015-2019 Oliver Giles
///
/// This file is part of Laminar
///
/// Laminar is free software: you can redistribute it and/or modify
/// it under the terms of the GNU General Public License as published by
/// the Free Software Foundation, either version 3 of the License, or
/// (at your option) any later version.
///
/// Laminar is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
/// GNU General Public License for more details.
///
/// You should have received a copy of the GNU General Public License
/// along with Laminar. If not, see <http://www.gnu.org/licenses/>
///
#ifndef LAMINAR_RESOURCES_H_
#define LAMINAR_RESOURCES_H_
#include <unordered_map>
#include <utility>
#include <string>
// Simple class to abstract away the mapping of HTTP requests for
// resources to their data.
class Resources {
public:
Resources();
// If a resource is known for the given path, set start and end to the
// binary data to send to the client, and content_type to its MIME
// type. Function returns false if no resource for the given path exists
bool handleRequest(std::string path, const char** start, const char** end, const char** content_type);
// Allows providing a custom HTML template. Pass an empty string to use the default.
void setHtmlTemplate(std::string templ = std::string());
private:
struct Resource {
const char* start;
const char* end;
const char* content_type;
};
std::unordered_map<std::string, Resource> resources;
std::string index_html;
};
#endif // LAMINAR_RESOURCES_H_