This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/endpoints/bitbuckettrigger.py

48 lines
1.5 KiB
Python
Raw Normal View History

2015-04-24 19:13:08 +00:00
import logging
from flask import request, redirect, url_for, Blueprint
from flask_login import current_user
2015-04-24 19:13:08 +00:00
from app import app
from auth.process import require_session_login
from buildtrigger.basehandler import BuildTriggerHandler
from buildtrigger.bitbuckethandler import BitbucketBuildTrigger
2015-04-24 19:13:08 +00:00
from data import model
from endpoints.common import route_show_if
2015-04-24 19:13:08 +00:00
from util.http import abort
import features
logger = logging.getLogger(__name__)
client = app.config['HTTPCLIENT']
bitbuckettrigger = Blueprint('bitbuckettrigger', __name__)
@bitbuckettrigger.route('/bitbucket/callback/trigger/<trigger_uuid>', methods=['GET'])
@route_show_if(features.BITBUCKET_BUILD)
@require_session_login
def attach_bitbucket_build_trigger(trigger_uuid):
trigger = model.build.get_build_trigger(trigger_uuid)
2015-04-24 19:13:08 +00:00
if not trigger or trigger.service.name != BitbucketBuildTrigger.service_name():
abort(404)
if trigger.connected_user != current_user.db_user():
abort(404)
verifier = request.args.get('oauth_verifier')
2015-04-24 22:36:48 +00:00
handler = BuildTriggerHandler.get_handler(trigger)
result = handler.exchange_verifier(verifier)
if not result:
trigger.delete_instance()
return 'Token has expired'
namespace = trigger.repository.namespace_user.username
repository = trigger.repository.name
2015-04-24 19:13:08 +00:00
repo_path = '%s/%s' % (namespace, repository)
full_url = '%s%s%s' % (url_for('web.repository', path=repo_path), '?tab=builds&newtrigger=',
trigger.uuid)
logger.debug('Redirecting to full url: %s', full_url)
return redirect(full_url)