/** * 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', function(UtilService, $sanitize, KeyService, Features, CookieService) { var triggerService = {}; var triggerTypes = { 'github': { 'description': function(config) { var source = UtilService.textToSafeHtml(config['build_source']); var desc = ' Push to Github Repository (Deprecated) '; 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; 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; }, '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 (API)'; } return 'GitHub Repository Push (API)'; } }, 'github-git': { '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 + '/__git'; // 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; }, '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 (Deploy Key)'; } return 'GitHub Repository Push (Deploy Key)'; } } } 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; }]);