148 lines
4.4 KiB
JavaScript
148 lines
4.4 KiB
JavaScript
/* 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;
|