from flask import jsonify

from auth.registry_jwt_auth import process_registry_jwt_auth, get_granted_entity
from endpoints.decorators import anon_protect
from endpoints.v2 import v2_bp, paginate
from data.interfaces.v2 import pre_oci_model as model

@v2_bp.route('/_catalog', methods=['GET'])
@process_registry_jwt_auth()
@anon_protect
@paginate()
def catalog_search(limit, offset, pagination_callback):
  username = None
  entity = get_granted_entity()
  if entity:
    username = entity.user.username

  visible_repositories = model.get_visible_repositories(username, limit+1, offset)
  response = jsonify({
    'repositories': ['%s/%s' % (repo.namespace_name, repo.name)
                     for repo in visible_repositories][0:limit],
  })

  pagination_callback(len(visible_repositories), response)
  return response