~edwargix/git.sr.ht

540c859740345452aa708de5930d23984073cf9c — Drew DeVault 7 years ago f00557d
Add anonymous /api/repos/~username
1 files changed, 25 insertions(+), 2 deletions(-)

M gitsrht/blueprints/api.py
M gitsrht/blueprints/api.py => gitsrht/blueprints/api.py +25 -2
@@ 1,5 1,5 @@
from flask import Blueprint, request
from gitsrht.types import Repository, RepoVisibility
from flask import Blueprint, request, abort
from gitsrht.types import Repository, RepoVisibility, User
from gitsrht.access import UserAccess, has_access, get_repo
from srht.oauth import oauth



@@ 31,3 31,26 @@ def repos_GET(oauth_token):
        "next": next_id,
        "results": [repo_json(r) for r in repos]
    }

@api.route("/api/repos/~<owner>")
def repos_username_GET(owner):
    user = User.query.filter(User.username == owner).first()
    if not user:
        abort(404)
    start = request.args.get('start') or -1
    repos = (Repository.query
        .filter(Repository.owner_id == user.id)
        .filter(Repository.visibility == RepoVisibility.public)
    )
    if start != -1:
        repos = repos.filter(Repository.id <= start)
    repos = repos.order_by(Repository.id.desc()).limit(11).all()
    if len(repos) != 11:
        next_id = -1
    else:
        next_id = repos[-1].id
        repos = repos[:10]
    return {
        "next": next_id,
        "results": [repo_json(r) for r in repos]
    }