diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2019-03-18 16:09:13 -0700 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2019-03-18 16:12:02 -0700 | 
| commit | 81a82573dc78a8cbf2f86100043f74f1305f4c56 (patch) | |
| tree | a515d387d68361594275e31771da4e7f108fbe57 | |
| parent | 3d82671bd350681c62b53125b887b01543e8ad7c (diff) | |
| download | fatcat-81a82573dc78a8cbf2f86100043f74f1305f4c56.tar.gz fatcat-81a82573dc78a8cbf2f86100043f74f1305f4c56.zip | |
expose bibtex and citeproc; revert /unstable/ prefixes
| -rw-r--r-- | python/fatcat_tools/transforms/csl.py | 2 | ||||
| -rw-r--r-- | python/fatcat_web/routes.py | 35 | ||||
| -rw-r--r-- | python/fatcat_web/templates/stats.html | 2 | 
3 files changed, 34 insertions, 5 deletions
| diff --git a/python/fatcat_tools/transforms/csl.py b/python/fatcat_tools/transforms/csl.py index 3509f350..7bc026ed 100644 --- a/python/fatcat_tools/transforms/csl.py +++ b/python/fatcat_tools/transforms/csl.py @@ -208,7 +208,7 @@ def citeproc_csl(csl_json, style, html=False):      bib.register(Citation([CitationItem(csl_json['id'])]))      lines = bib.bibliography()[0]      if style == "bibtex": -        out = "\n" +        out = ""          for l in lines:              if l.startswith(" @"):                  out += "@" diff --git a/python/fatcat_web/routes.py b/python/fatcat_web/routes.py index d660da86..e2c5fc3a 100644 --- a/python/fatcat_web/routes.py +++ b/python/fatcat_web/routes.py @@ -2,7 +2,7 @@  import os  import json  from flask import Flask, render_template, send_from_directory, request, \ -    url_for, abort, g, redirect, jsonify, session, flash +    url_for, abort, g, redirect, jsonify, session, flash, Response  from flask_login import login_required  from fatcat_client.rest import ApiException @@ -507,7 +507,7 @@ def stats_page():  ### Pseudo-APIs ############################################################# -@app.route('/unstable/stats.json', methods=['GET', 'OPTIONS']) +@app.route('/stats.json', methods=['GET', 'OPTIONS'])  @crossdomain(origin='*',headers=['access-control-allow-origin','Content-Type'])  def stats_json():      try: @@ -518,7 +518,6 @@ def stats_json():          abort(503)      return jsonify(stats) -@app.route('/unstable/container/issnl/<issnl>/stats.json', methods=['GET', 'OPTIONS'])  @app.route('/container/issnl/<issnl>/stats.json', methods=['GET', 'OPTIONS'])  @crossdomain(origin='*',headers=['access-control-allow-origin','Content-Type'])  def container_issnl_stats(issnl): @@ -529,6 +528,36 @@ def container_issnl_stats(issnl):          abort(503)      return jsonify(stats) +@app.route('/release/<ident>.bib', methods=['GET']) +def release_bibtex(ident): +    try: +        entity = api.get_release(ident) +    except ApiException as ae: +        abort(ae.status) +    csl = release_to_csl(entity) +    bibtex = citeproc_csl(csl, 'bibtex') +    return Response(bibtex, mimetype="text/plain") + +@app.route('/release/<ident>/citeproc', methods=['GET']) +def release_citeproc(ident): +    style = request.args.get('style', 'harvard1') +    is_html = request.args.get('html', False) +    if is_html and is_html.lower() in ('yes', '1', 'true', 'y', 't'): +        is_html = True +    else: +        is_html = False + +    try: +        entity = api.get_release(ident) +    except ApiException as ae: +        abort(ae.status) +    csl = release_to_csl(entity) +    cite = citeproc_csl(csl, style, is_html) +    if is_html: +        return Response(cite) +    else: +        return Response(cite, mimetype="text/plain") +  ### Auth #################################################################### diff --git a/python/fatcat_web/templates/stats.html b/python/fatcat_web/templates/stats.html index 7f56248f..f11ca820 100644 --- a/python/fatcat_web/templates/stats.html +++ b/python/fatcat_web/templates/stats.html @@ -3,7 +3,7 @@  <h1>Stats</h1> -You can also fetch these numbers <a href="./unstable/stats.json">as JSON</a>. +You can also fetch these numbers <a href="./stats.json">as JSON</a>.  <h3>Changelog</h3> | 
