view scid/pageutil.h @ 85:cf49ab595e2e default tip @

sciworkerd: avoid spawning several tasks
author David Demelier <markand@malikania.fr>
date Thu, 09 Mar 2023 10:43:48 +0100
parents 71cd8447e3a4
children
line wrap: on
line source

/*
 * pageutil.h -- page utilities
 *
 * Copyright (c) 2021-2023 David Demelier <markand@malikania.fr>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef SCI_PAGE_H
#define SCI_PAGE_H

/**
 * \file pageutil.h
 * \brief Page utilities.
 *
 * This module provides convenient helpers to generate pages, it will call the
 * current theme so make sure to initialize before using this module.
 *
 * This module does not log messages.
 */

#include <sys/types.h>
#include <stdarg.h>
#include <stdint.h>

#include <kcgi.h>

#include <jansson.h>

/**
 * Render a page using the given content.
 *
 * \pre r != NULL
 * \param r the request
 * \param status the HTTP status code
 * \param mime the MIME type
 * \param body the body content (maybe NULL)
 */
void
pageutil_render(struct kreq *r, enum khttp status, enum kmime mime, const char *body);

/**
 * Render a status code page (e.g. 400).
 *
 * \pre r != NULL
 * \param r the request
 * \param status the HTTP status code
 */
void
pageutil_status(struct kreq *r, enum khttp status);

/**
 * Render a page with a JSON as MIME type.
 *
 * \pre r != NULL
 * \param r != NULL
 * \param status the HTTP status code
 * \param doc the JSON document (may be NULL)
 * \warning The document will be destroyed using json_decref.
 */
void
pageutil_json(struct kreq *r, enum khttp status, json_t *doc);

#endif /* !SCI_PAGE_H */