Source code for officiumdivinum.api.bible

from flask import Blueprint
from flask import abort
from flask import current_app
from flask import request
from flask_api.decorators import set_renderers
from flask_api.renderers import BrowsableAPIRenderer
from flask_api.renderers import JSONRenderer

from ..bible import Vulgate
from .renderers import objectHTMLRenderer

bible = Blueprint("bible", __name__, url_prefix="/bible")

# from .errors import InvalidInput

versions = {"vulgate": Vulgate("Sixto-Clementine Vulgate")}


[docs]@bible.route("/", methods=["Get"]) @set_renderers(JSONRenderer, objectHTMLRenderer, BrowsableAPIRenderer) def get_verses(): query = request.get_json() if not query: args = request.args bible = versions[args["version"]] if not bible.content: bible.load(current_app) try: start = args["start"] end = args["end"] if "end" in args.keys() else None verses = bible.get_range(start, end) return verses except Exception: abort(400) else: print(query) bible = versions[query["version"]] if not bible.content: bible.load(current_app) verses = [] try: for book, chapter, verse in query["verses"]: verses.append(bible.content[book][chapter][verse]) except KeyError: pass try: start = query["start"] end = query["end"] if "end" in query.keys() else None verses += bible.get_range(start, end) except KeyError: pass if not verses: abort(400) return verses