from bitbucket import BitBucket from app import get_app_url from util.config.validators import BaseValidator, ConfigValidationException class BitbucketTriggerValidator(BaseValidator): name = "bitbucket-trigger" @classmethod def validate(cls, config, user, user_password): """ Validates the config for BitBucket. """ trigger_config = config.get('BITBUCKET_TRIGGER_CONFIG') if not trigger_config: raise ConfigValidationException('Missing client ID and client secret') if not trigger_config.get('CONSUMER_KEY'): raise ConfigValidationException('Missing Consumer Key') if not trigger_config.get('CONSUMER_SECRET'): raise ConfigValidationException('Missing Consumer Secret') key = trigger_config['CONSUMER_KEY'] secret = trigger_config['CONSUMER_SECRET'] callback_url = '%s/oauth1/bitbucket/callback/trigger/' % (get_app_url()) bitbucket_client = BitBucket(key, secret, callback_url) (result, _, _) = bitbucket_client.get_authorization_url() if not result: raise ConfigValidationException('Invalid consumer key or secret')