/* eslint-disable func-names, space-before-function-paren, quotes, object-shorthand, camelcase, no-var, comma-dangle, prefer-arrow-callback, quote-props, no-param-reassign, max-len */ var Api = { groupsPath: "/api/:version/groups.json", groupPath: "/api/:version/groups/:id.json", namespacesPath: "/api/:version/namespaces.json", groupProjectsPath: "/api/:version/groups/:id/projects.json", projectsPath: "/api/:version/projects.json?simple=true", labelsPath: "/:namespace_path/:project_path/labels", licensePath: "/api/:version/templates/licenses/:key", gitignorePath: "/api/:version/templates/gitignores/:key", gitlabCiYmlPath: "/api/:version/templates/gitlab_ci_ymls/:key", dockerfilePath: "/api/:version/templates/dockerfiles/:key", issuableTemplatePath: "/:namespace_path/:project_path/templates/:type/:key", group: function(group_id, callback) { var url = Api.buildUrl(Api.groupPath) .replace(':id', group_id); return $.ajax({ url: url, dataType: "json" }).done(function(group) { return callback(group); }); }, // Return groups list. Filtered by query groups: function(query, options, callback) { var url = Api.buildUrl(Api.groupsPath); return $.ajax({ url: url, data: $.extend({ search: query, per_page: 20 }, options), dataType: "json" }).done(function(groups) { return callback(groups); }); }, // Return namespaces list. Filtered by query namespaces: function(query, callback) { var url = Api.buildUrl(Api.namespacesPath); return $.ajax({ url: url, data: { search: query, per_page: 20 }, dataType: "json" }).done(function(namespaces) { return callback(namespaces); }); }, // Return projects list. Filtered by query projects: function(query, options, callback) { var url = Api.buildUrl(Api.projectsPath); return $.ajax({ url: url, data: $.extend({ search: query, per_page: 20, membership: true }, options), dataType: "json" }).done(function(projects) { return callback(projects); }); }, newLabel: function(namespace_path, project_path, data, callback) { var url = Api.buildUrl(Api.labelsPath) .replace(':namespace_path', namespace_path) .replace(':project_path', project_path); return $.ajax({ url: url, type: "POST", data: { 'label': data }, dataType: "json" }).done(function(label) { return callback(label); }).error(function(message) { return callback(message.responseJSON); }); }, // Return group projects list. Filtered by query groupProjects: function(group_id, query, callback) { var url = Api.buildUrl(Api.groupProjectsPath) .replace(':id', group_id); return $.ajax({ url: url, data: { search: query, per_page: 20 }, dataType: "json" }).done(function(projects) { return callback(projects); }); }, // Return text for a specific license licenseText: function(key, data, callback) { var url = Api.buildUrl(Api.licensePath) .replace(':key', key); return $.ajax({ url: url, data: data }).done(function(license) { return callback(license); }); }, gitignoreText: function(key, callback) { var url = Api.buildUrl(Api.gitignorePath) .replace(':key', key); return $.get(url, function(gitignore) { return callback(gitignore); }); }, gitlabCiYml: function(key, callback) { var url = Api.buildUrl(Api.gitlabCiYmlPath) .replace(':key', key); return $.get(url, function(file) { return callback(file); }); }, dockerfileYml: function(key, callback) { var url = Api.buildUrl(Api.dockerfilePath).replace(':key', key); $.get(url, callback); }, issueTemplate: function(namespacePath, projectPath, key, type, callback) { var url = Api.buildUrl(Api.issuableTemplatePath) .replace(':key', key) .replace(':type', type) .replace(':project_path', projectPath) .replace(':namespace_path', namespacePath); $.ajax({ url: url, dataType: 'json' }).done(function(file) { callback(null, file); }).error(callback); }, buildUrl: function(url) { if (gon.relative_url_root != null) { url = gon.relative_url_root + url; } return url.replace(':version', gon.api_version); } }; window.Api = Api;