mirror of
https://github.com/jdalrymple/gitbeaker.git
synced 2026-01-18 15:55:30 +00:00
Adding extended group functionality
This commit is contained in:
parent
84eef7024f
commit
4e94b6b767
42
src/Models/GroupAccessRequests.js
Normal file
42
src/Models/GroupAccessRequests.js
Normal file
@ -0,0 +1,42 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
const ACCESS_LEVELS = {
|
||||
GUEST: 10,
|
||||
REPORTER: 20,
|
||||
DEVELOPER: 30,
|
||||
MASTER: 40,
|
||||
OWNER: 50,
|
||||
};
|
||||
|
||||
class GroupAccessRequests extends BaseModel {
|
||||
constructor(){
|
||||
this.ACCESS_LEVELS = ACCESS_LEVELS;
|
||||
}
|
||||
|
||||
all(groupId) {
|
||||
const gId = Utils.parse(groupId);
|
||||
|
||||
return this.get(`groups/${gId}/access_requests`);
|
||||
}
|
||||
|
||||
request(groupId) {
|
||||
const gId = Utils.parse(groupId);
|
||||
|
||||
return this.post(`groups/${gId}/access_requests`);
|
||||
}
|
||||
|
||||
approve(groupId, userId, {access_level = 30}) {
|
||||
const [gId, uId] = [groupId, userId].map(Utils.parse);
|
||||
|
||||
return this.post(`groups/${gId}/access_requests/${uId}/approve`, {access_level});
|
||||
}
|
||||
|
||||
deny(groupId, userId) {
|
||||
const [gId, uId] = [groupId, userId].map(Utils.parse);
|
||||
|
||||
return this.delete(`groups/${gId}/access_requests/${uId}/approve`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupAccessRequests;
|
||||
41
src/Models/GroupMembers.js
Normal file
41
src/Models/GroupMembers.js
Normal file
@ -0,0 +1,41 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMembers extends BaseModel {
|
||||
all(groupId) {
|
||||
const gId = Utils.parse(groupId);
|
||||
|
||||
return this.get(`groups/${gId}/members`);
|
||||
}
|
||||
|
||||
add(groupId, userId, accessLevel) {
|
||||
const [gId, uId] = [groupId, userId].map(Utils.parse);
|
||||
|
||||
return this.post(`groups/${gId}/members`, {
|
||||
user_id: uId,
|
||||
access_level: parseInt(accessLevel, 10),
|
||||
});
|
||||
}
|
||||
|
||||
edit(groupId, userId, accessLevel) {
|
||||
const [gId, uId] = [groupId, userId].map(Utils.parse);
|
||||
|
||||
return this.put(`groups/${gId}/members/${uId}`, {
|
||||
access_level: parseInt(accessLevel, 10),
|
||||
});
|
||||
}
|
||||
|
||||
show(groupId, userId) {
|
||||
const [gId, uId] = [groupId, userId].map(Utils.parse);
|
||||
|
||||
return this.get(`groups/${gId}/members/${uId}`);
|
||||
}
|
||||
|
||||
remove(groupId, userId) {
|
||||
const [gId, uId] = [groupId, userId].map(Utils.parse);
|
||||
|
||||
return this.delete(`groups/${gId}/members/${uId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMembers;
|
||||
12
src/Models/GroupMilestoneIssues.js
Normal file
12
src/Models/GroupMilestoneIssues.js
Normal file
@ -0,0 +1,12 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMilestoneIssues extends BaseModel {
|
||||
all(grougId, milestoneId) {
|
||||
const [gId, mId] = [groupId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`groups/${gId}/milestones/${mId}/issues`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMilestoneIssues;
|
||||
12
src/Models/GroupMilestoneMergeRequests.js
Normal file
12
src/Models/GroupMilestoneMergeRequests.js
Normal file
@ -0,0 +1,12 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMilestoneMergeRequests extends BaseModel {
|
||||
all(grougId, milestoneId) {
|
||||
const [gId, mId] = [groupId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`groups/${pId}/milestones/${mId}/merge_requests`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMilestoneIssues;
|
||||
46
src/Models/GroupMilestones.js
Normal file
46
src/Models/GroupMilestones.js
Normal file
@ -0,0 +1,46 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMilestones extends BaseModel {
|
||||
constructor(..args){
|
||||
this.issues = new GroupMilestoneIssues(..args);
|
||||
this.mergeRequests = new GroupMilestoneMergeRequests(..args);
|
||||
}
|
||||
|
||||
all(groupId, options = {}) {
|
||||
const pId = Utils.parse(groupId);
|
||||
|
||||
return this.get(`groups/${pId}/milestones`, options);
|
||||
}
|
||||
|
||||
show(groupId, milestoneId) {
|
||||
const [pId, mId] = [groupId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`groups/${pId}/milestones/${mId}`);
|
||||
}
|
||||
|
||||
create(groupId, title, { description, due_date, start_date }) {
|
||||
const pId = Utils.parse(groupId);
|
||||
|
||||
return this.post(`groups/${pId}/milestones`, {
|
||||
title,
|
||||
description,
|
||||
due_date,
|
||||
start_date,
|
||||
});
|
||||
}
|
||||
|
||||
update(groupId, milestoneId, { title, description, due_date, start_date, state_event }) {
|
||||
const [pId, mId] = [projectId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.put(`groups/${pId}/milestones/${mId}`, {
|
||||
title,
|
||||
description,
|
||||
due_date,
|
||||
start_date,
|
||||
state_event,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMilestones;
|
||||
18
src/Models/GroupProjects.js
Normal file
18
src/Models/GroupProjects.js
Normal file
@ -0,0 +1,18 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupProjects extends BaseModel {
|
||||
all(groupId, options = {}) {
|
||||
const gId = Utils.parse(groupId);
|
||||
|
||||
return this.get(`groups/${gId}/projects`, options);
|
||||
}
|
||||
|
||||
add(groupId, projectId) {
|
||||
const [gId, pId] = [groupId, projectId].map(Utils.parse);
|
||||
|
||||
return this.post(`groups/${gId}/projects/${pId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupProjects;
|
||||
@ -1,31 +1,15 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
const ACCESS_LEVELS = {
|
||||
GUEST: 10,
|
||||
REPORTER: 20,
|
||||
DEVELOPER: 30,
|
||||
MASTER: 40,
|
||||
OWNER: 50,
|
||||
};
|
||||
|
||||
function hasAccess(accessLevel) {
|
||||
let valid = false;
|
||||
|
||||
Object.values(ACCESS_LEVELS).forEach((level) => {
|
||||
if (accessLevel === level) {
|
||||
valid = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (!valid) throw new Error(`\`accessLevel\` must be one of ${JSON.stringify(ACCESS_LEVELS)}`);
|
||||
}
|
||||
|
||||
class Groups extends BaseModel {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
|
||||
this.access_levels = ACCESS_LEVELS;
|
||||
this.milestones = new GroupMilestones(...args);
|
||||
this.members = new GroupMembers(...args);
|
||||
this.projects = new GroupProjects(...args);
|
||||
this.accessLevels = new GroupAccessLevels(...args);
|
||||
}
|
||||
|
||||
all(options = {}) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user