1.1.1.1.1.3. book_server_api.routers.books module¶
1.1.1.1.1.3.1. Overview¶
This module contains the router for serving pages from a book. It also contains the code for serving the library page.
The following routes are defined:
/published/<book_name>/<page_name>- Serve a page from a book/index/<book_name>/- Serve the library page
1.1.1.1.1.3.2. Detailed Module Description¶
- book_server_api.routers.books.URL(*argv)¶
- book_server_api.routers.books.XML(arg)¶
- async book_server_api.routers.books.crashme()¶
- async book_server_api.routers.books.fetch_subchaptoc(course: str, chap: str)¶
- async book_server_api.routers.books.get_downloads(course: str, filepath: str)¶
- async book_server_api.routers.books.get_external(course: str, filepath: str)¶
- async book_server_api.routers.books.get_generated(course: str, filepath: str)¶
- async book_server_api.routers.books.get_image(course: str, filepath: str)¶
- async book_server_api.routers.books.get_jlite(course: str, filepath: str)¶
- async book_server_api.routers.books.get_ptximages(course: str, filepath: str)¶
- async book_server_api.routers.books.get_static(course: str, filepath: str)¶
- async book_server_api.routers.books.library(request: ~starlette.requests.Request, response_class=<class 'starlette.responses.HTMLResponse'>)¶
Create the library page from the Library database table.
- Parameters:
request (Request) – The FastAPI request object.
response_class (_type_, optional) – defaults to HTMLResponse
- Returns:
HTMLResponse
- Return type:
HTMLResponse
- async book_server_api.routers.books.return_static_asset(course: str, kind: str, filepath: str)¶
Return a static asset from a book. These are typically images, css, or js files. they do not require any special processing or use of templates.
- Parameters:
course (str) – The name of the course
kind (str) – What kind of assset is it?
filepath (str) – The path to the file
- Raises:
HTTPException –
- Returns:
Response object
- async book_server_api.routers.books.serve_page(request: Request, course_name: str, pagepath: str, RS_info: Optional[str] = Cookie(None), mode: Optional[str] = None)¶
Serve a page from a book.
Book pages are not static, they are generated on the fly. When you build a book, ptx or runestone bulds the pages of the book as Jinja2 templates. This endpoint serves those pages by gathering data from the database and passing it to the template. Some key parts of the template include:
course attributes
user information
whether to serve an ad or not
whether to ask for a donation or not
the subchapter navigation menu
the page content
Note
Caution Anyone modifying this function should exercise caution. It is the core of the Runestone server and is used by all books. It is called hundreds of thousands of times a day so performance is critical.
- Parameters:
request (Request) – A FastAPI request object
course_name (constr, optional) – The name of the course (part of the URL)
pagepath (constr, optional) – The path to the page (part of the URL)
RS_info (Optional[str], optional) – An RS_info cookie, defaults to None
mode (Optional[str], optional) – _description_, defaults to None
- Raises:
HTTPException – _description_
- Returns:
response object
- Return type:
Response