summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/api.js')
-rw-r--r--app/assets/javascripts/api.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js
new file mode 100644
index 00000000000..49c2ac0dac3
--- /dev/null
+++ b/app/assets/javascripts/api.js
@@ -0,0 +1,136 @@
+(function() {
+ this.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: "/api/:version/projects/:id/labels",
+ licensePath: "/api/:version/licenses/:key",
+ gitignorePath: "/api/:version/gitignores/:key",
+ gitlabCiYmlPath: "/api/:version/gitlab_ci_ymls/:key",
+ group: function(group_id, callback) {
+ var url;
+ url = Api.buildUrl(Api.groupPath);
+ url = url.replace(':id', group_id);
+ return $.ajax({
+ url: url,
+ data: {
+ private_token: gon.api_token
+ },
+ dataType: "json"
+ }).done(function(group) {
+ return callback(group);
+ });
+ },
+ groups: function(query, skip_ldap, callback) {
+ var url;
+ url = Api.buildUrl(Api.groupsPath);
+ return $.ajax({
+ url: url,
+ data: {
+ private_token: gon.api_token,
+ search: query,
+ per_page: 20
+ },
+ dataType: "json"
+ }).done(function(groups) {
+ return callback(groups);
+ });
+ },
+ namespaces: function(query, callback) {
+ var url;
+ url = Api.buildUrl(Api.namespacesPath);
+ return $.ajax({
+ url: url,
+ data: {
+ private_token: gon.api_token,
+ search: query,
+ per_page: 20
+ },
+ dataType: "json"
+ }).done(function(namespaces) {
+ return callback(namespaces);
+ });
+ },
+ projects: function(query, order, callback) {
+ var url;
+ url = Api.buildUrl(Api.projectsPath);
+ return $.ajax({
+ url: url,
+ data: {
+ private_token: gon.api_token,
+ search: query,
+ order_by: order,
+ per_page: 20
+ },
+ dataType: "json"
+ }).done(function(projects) {
+ return callback(projects);
+ });
+ },
+ newLabel: function(project_id, data, callback) {
+ var url;
+ url = Api.buildUrl(Api.labelsPath);
+ url = url.replace(':id', project_id);
+ data.private_token = gon.api_token;
+ return $.ajax({
+ url: url,
+ type: "POST",
+ data: data,
+ dataType: "json"
+ }).done(function(label) {
+ return callback(label);
+ }).error(function(message) {
+ return callback(message.responseJSON);
+ });
+ },
+ groupProjects: function(group_id, query, callback) {
+ var url;
+ url = Api.buildUrl(Api.groupProjectsPath);
+ url = url.replace(':id', group_id);
+ return $.ajax({
+ url: url,
+ data: {
+ private_token: gon.api_token,
+ search: query,
+ per_page: 20
+ },
+ dataType: "json"
+ }).done(function(projects) {
+ return callback(projects);
+ });
+ },
+ licenseText: function(key, data, callback) {
+ var url;
+ 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;
+ url = Api.buildUrl(Api.gitignorePath).replace(':key', key);
+ return $.get(url, function(gitignore) {
+ return callback(gitignore);
+ });
+ },
+ gitlabCiYml: function(key, callback) {
+ var url;
+ url = Api.buildUrl(Api.gitlabCiYmlPath).replace(':key', key);
+ return $.get(url, function(file) {
+ return callback(file);
+ });
+ },
+ buildUrl: function(url) {
+ if (gon.relative_url_root != null) {
+ url = gon.relative_url_root + url;
+ }
+ return url.replace(':version', gon.api_version);
+ }
+ };
+
+}).call(this);