Skip to content

Instantly share code, notes, and snippets.

@elbosso
Created January 6, 2019 16:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elbosso/6637702612991bb454d205d936dd04dc to your computer and use it in GitHub Desktop.
Save elbosso/6637702612991bb454d205d936dd04dc to your computer and use it in GitHub Desktop.
This is yet another followup re: dynamic badges in gitlab - its predecessor is here: https://gist.github.com/elbosso/cbce113805735478e926c28a9079cede This time we use flask to be more flexible with more deployment options - also it's fun!
from flask import Flask
from flask import make_response
import requests
from anybadge import Badge
from flask import request
app = Flask(__name__)
@app.route("/open/<int:projid>")
def openIssues(projid):
lbl=request.args.get('lbl', '')
url = 'http://<gitlab-host>/api/v4/projects/'+str(projid)+'/issues?state=opened&scope=all&per_page=1'
headers = {'Private-Token': 'xxxx-xxxx-xxxxxx'}
r = requests.get(url, headers=headers)
v=r.headers['X-Total']
thresh={5: 'green',
10: 'jellowgreen',
15: 'yellow',
20: 'orange',
25: 'red'}
vfmt="%d"
badge = Badge(label=lbl, value=v, value_format=vfmt,thresholds=thresh)
resp = make_response(badge.badge_svg_text, 200)
resp.headers['Content-Type'] = 'image/svg+xml;charset=utf-8'
resp.headers['Content-Disposition'] = 'attachment; filename=badge.svg'
return resp
@app.route("/closed/<int:projid>")
def closedIssues(projid):
lbl=request.args.get('lbl', '')
url = 'http://<gitlab-host>/api/v4/projects/'+str(projid)+'/issues?state=closed&scope=all&per_page=1'
headers = {'Private-Token': 'xxxx-xxxx-xxxxxx'}
r = requests.get(url, headers=headers)
v=r.headers['X-Total']
thresh={0: 'green'}
vfmt="%d"
badge = Badge(label=lbl, value=v, value_format=vfmt,thresholds=thresh)
resp = make_response(badge.badge_svg_text, 200)
resp.headers['Content-Type'] = 'image/svg+xml;charset=utf-8'
resp.headers['Content-Disposition'] = 'attachment; filename=badge.svg'
return resp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment