import json
import logging

from app import get_app_url
from flask import Blueprint, make_response

logger = logging.getLogger(__name__)
wellknown = Blueprint('wellknown', __name__)

@wellknown.route('/app-capabilities', methods=['GET'])
def app_capabilities():
  view_image_tmpl = '%s/{namespace}/{reponame}:{tag}' % get_app_url()

  image_security = '%s/api/v1/repository/{namespace}/{reponame}/image/{imageid}/security'
  image_security_tmpl = image_security % get_app_url()

  manifest_security = '%s/api/v1/repository/{namespace}/{reponame}/manifest/{digest}/security'
  manifest_security_tmpl = manifest_security % get_app_url()

  metadata = {
    'appName': 'io.quay',
    'capabilities': {
      'io.quay.view-image': {
        'url-template': view_image_tmpl,
      },

      'io.quay.image-security': {
        'rest-api-template': image_security_tmpl,
      },

      'io.quay.manifest-security': {
        'rest-api-template': manifest_security_tmpl,
      },
    },
  }

  resp = make_response(json.dumps(metadata))
  resp.headers['Content-Type'] = 'application/json'
  return resp