/** * Helper service for defining the various kinds of build triggers and retrieving information * about them. */ angular.module('quay').factory('TriggerService', ['UtilService', '$sanitize', 'KeyService', 'Features', 'CookieService', 'Config', function(UtilService, $sanitize, KeyService, Features, CookieService, Config) { var triggerService = {}; var triggerTypes = { 'github': { 'description': function(config) { var source = UtilService.textToSafeHtml(config['build_source']); var desc = ' Push to Github Repository '; desc += '' + source + ''; desc += '
Dockerfile folder: //' + UtilService.textToSafeHtml(config['subdir']); return desc; }, 'run_parameters': [ { 'title': 'Branch', 'type': 'option', 'name': 'branch_name' } ], 'get_redirect_url': function(namespace, repository) { var redirect_uri = KeyService['githubRedirectUri'] + '/trigger/' + namespace + '/' + repository; // TODO(jschorr): Remove once the new layout is in place. if (CookieService.get('quay.exp-new-layout') == 'true') { redirect_uri += '/__new'; } var authorize_url = KeyService['githubTriggerAuthorizeUrl']; var client_id = KeyService['githubTriggerClientId']; return authorize_url + 'client_id=' + client_id + '&scope=repo,user:email&redirect_uri=' + redirect_uri; }, 'target': '', 'is_enabled': function() { return Features.GITHUB_BUILD; }, 'icon': 'fa-github', 'title': function() { var isEnterprise = KeyService.isEnterprise('github-trigger'); if (isEnterprise) { return 'GitHub Enterprise Repository Push'; } return 'GitHub Repository Push'; } }, 'custom': { 'description': function(config) { var source = UtilService.textToSafeHtml(config['build_source']); var desc = ' Push to Custom Git Repository ' + source; desc += '
Dockerfile folder: //' + UtilService.textToSafeHtml(config['subdir']); return desc; }, 'run_parameters': [ { 'title': 'Branch', 'type': 'string', 'name': 'branch_name' }, { 'title': 'Commit', 'type': 'string', 'name': 'commit_sha' } ], 'get_redirect_url': function(namespace, repository) { return Config.getUrl('/customtrigger/setup/' + namespace + '/' + repository); }, 'target': '_self', 'is_enabled': function() { return true; }, 'icon': 'fa-git', 'title': function() { return 'Custom Git Repository Push'; } } } triggerService.getTypes = function() { var types = []; for (var key in triggerTypes) { if (!triggerTypes.hasOwnProperty(key)) { continue; } types.push(key); } return types; }; triggerService.getRedirectUrl = function(name, namespace, repository) { var type = triggerTypes[name]; if (!type) { return ''; } return type['get_redirect_url'](namespace, repository); }; triggerService.getTitle = function(name) { var type = triggerTypes[name]; if (!type) { return 'Unknown'; } return type['title'](); }; triggerService.getDescription = function(name, config) { var type = triggerTypes[name]; if (!type) { return 'Unknown'; } return type['description'](config); }; triggerService.getMetadata = function(name) { return triggerTypes[name]; }; triggerService.getRunParameters = function(name, config) { var type = triggerTypes[name]; if (!type) { return []; } return type['run_parameters']; } return triggerService; }]);