Write triggers are successfully installing on GitHub, noice!
This commit is contained in:
parent
a6400171b3
commit
86e93a2c0f
7 changed files with 76 additions and 32 deletions
|
@ -9,6 +9,7 @@ from flask.ext.login import current_user, logout_user
|
|||
from flask.ext.principal import identity_changed, AnonymousIdentity
|
||||
from functools import wraps
|
||||
from collections import defaultdict
|
||||
from urllib import quote
|
||||
|
||||
from data import model
|
||||
from data.queue import dockerfile_build_queue
|
||||
|
@ -1363,6 +1364,11 @@ def get_build_trigger(namespace, repository, trigger_uuid):
|
|||
abort(403) # Permission denied
|
||||
|
||||
|
||||
def _prepare_webhook_url(scheme, username, password, hostname, path):
|
||||
auth_hostname = '%s:%s@%s' % (quote(username), quote(password), hostname)
|
||||
return urlparse.urlunparse((scheme, auth_hostname, path, '', '', ''))
|
||||
|
||||
|
||||
@api.route('/repository/<path:repository>/trigger/<trigger_uuid>/activate',
|
||||
methods=['POST'])
|
||||
@api_login_required
|
||||
|
@ -1386,20 +1392,29 @@ def activate_build_trigger(namespace, repository, trigger_uuid):
|
|||
if user_permission.can():
|
||||
new_config_dict = request.get_json()
|
||||
|
||||
token_name = 'Build Trigger: %s' % trigger.service.name
|
||||
token = model.create_delegate_token(namespace, repository, token_name,
|
||||
'write')
|
||||
|
||||
try:
|
||||
repository = '%s/%s' % (trigger.repository.namespace,
|
||||
trigger.repository.name)
|
||||
webhook_url = url_for('webhooks.build_trigger_webhook',
|
||||
repository=repository, trigger_uuid=trigger.uuid,
|
||||
_external=True)
|
||||
handler.activate(trigger.uuid, webhook_url, trigger.auth_token,
|
||||
path = url_for('webhooks.build_trigger_webhook', repository=repository,
|
||||
trigger_uuid=trigger.uuid)
|
||||
authed_url = _prepare_webhook_url(app.config['URL_SCHEME'], '$token',
|
||||
token.code, app.config['URL_HOST'],
|
||||
path)
|
||||
|
||||
handler.activate(trigger.uuid, authed_url, trigger.auth_token,
|
||||
new_config_dict)
|
||||
except TriggerActivationException as e:
|
||||
token.delete_instance()
|
||||
abort(400, message = e.msg)
|
||||
return
|
||||
|
||||
# Save the updated config.
|
||||
trigger.config = json.dumps(new_config_dict)
|
||||
trigger.write_token = token
|
||||
trigger.save()
|
||||
|
||||
return jsonify(trigger_view(trigger))
|
||||
|
|
Reference in a new issue