mirror of
https://github.com/jdalrymple/gitbeaker.git
synced 2026-01-25 16:04:01 +00:00
Major updates
- Fixing up some inheritance schemes, - Adding proper access requests support for projects, - Adding full milestone support for projects - Adding custom attributes to projects, groups and users
This commit is contained in:
parent
78feb16e12
commit
c8a0cf4aca
@ -1,44 +0,0 @@
|
||||
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(...args) {
|
||||
super(...args);
|
||||
|
||||
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;
|
||||
@ -1,41 +0,0 @@
|
||||
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;
|
||||
@ -1,12 +0,0 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMilestoneIssues extends BaseModel {
|
||||
all(groupId, milestoneId) {
|
||||
const [gId, mId] = [groupId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`groups/${gId}/milestones/${mId}/issues`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMilestoneIssues;
|
||||
@ -1,12 +0,0 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMilestoneMergeRequests extends BaseModel {
|
||||
all(groupId, milestoneId) {
|
||||
const [gId, mId] = [groupId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`groups/${gId}/milestones/${mId}/merge_requests`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMilestoneMergeRequests;
|
||||
@ -1,40 +0,0 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const GroupMilestoneIssues = require('./GroupMilestoneIssues');
|
||||
const GroupMilestoneMergeRequests = require('./GroupMilestoneMergeRequests');
|
||||
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMilestones extends BaseModel {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
|
||||
this.issues = new GroupMilestoneIssues(...args);
|
||||
this.mergeRequests = new GroupMilestoneMergeRequests(...args);
|
||||
}
|
||||
|
||||
all(groupId, options = {}) {
|
||||
const gId = Utils.parse(groupId);
|
||||
|
||||
return this.get(`groups/${gId}/milestones`, options);
|
||||
}
|
||||
|
||||
create(groupId, title, options) {
|
||||
const gId = Utils.parse(groupId);
|
||||
|
||||
return this.post(`groups/${gId}/milestones`, options);
|
||||
}
|
||||
|
||||
edit(groupId, milestoneId, options) {
|
||||
const [gId, mId] = [groupId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.put(`groups/${gId}/milestones/${mId}`, options);
|
||||
}
|
||||
|
||||
show(groupId, milestoneId) {
|
||||
const [gId, mId] = [groupId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`groups/${gId}/milestones/${mId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMilestones;
|
||||
@ -1,18 +1,21 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const GroupMilestones = require('./GroupMilestones');
|
||||
const GroupMembers = require('./GroupMembers');
|
||||
const GroupProjects = require('./GroupProjects');
|
||||
const GroupAccessRequests = require('./GroupAccessRequests');
|
||||
const ResourceAccessRequests = require('./ResourceAccessRequests');
|
||||
const ResourceCustomAttributes = require('./ResourceCustomAttributes');
|
||||
const ResourceMembers = require('./ResourceMembers');
|
||||
const ResourceMilestones = require('./ResourceMilestones');
|
||||
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class Groups extends BaseModel {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
|
||||
this.milestones = new GroupMilestones(...args);
|
||||
this.members = new GroupMembers(...args);
|
||||
this.projects = new GroupProjects(...args);
|
||||
this.accessRequests = new GroupAccessRequests(...args);
|
||||
this.accessRequests = new ResourceAccessRequests('groups', ...args);
|
||||
this.customAttributes = new ResourceCustomAttributes('groups', ...args);
|
||||
this.members = new ResourceMembers('groups', ...args);
|
||||
this.milestones = new ResourceMilestones('groups', ...args);
|
||||
}
|
||||
|
||||
all(options = {}) {
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
const ACCESS_LEVELS = {
|
||||
GUEST: 10,
|
||||
REPORTER: 20,
|
||||
DEVELOPER: 30,
|
||||
MASTER: 40,
|
||||
OWNER: 50,
|
||||
};
|
||||
|
||||
class ProjectAccessRequests extends BaseModel {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
|
||||
this.ACCESS_LEVELS = ACCESS_LEVELS;
|
||||
}
|
||||
|
||||
all(projectId) {
|
||||
const pId = Utils.parse(projectId);
|
||||
|
||||
return this.get(`projects/${pId}/access_requests`);
|
||||
}
|
||||
|
||||
request(projectId) {
|
||||
const pId = Utils.parse(projectId);
|
||||
|
||||
return this.post(`projects/${pId}/access_requests`);
|
||||
}
|
||||
|
||||
approve(projectId, userId, { access_level = 30 }) {
|
||||
const [pId, uId] = [projectId, userId].map(Utils.parse);
|
||||
|
||||
return this.post(`projects/${pId}/access_requests/${uId}/approve`, { access_level });
|
||||
}
|
||||
|
||||
deny(projectId, userId) {
|
||||
const [pId, uId] = [projectId, userId].map(Utils.parse);
|
||||
|
||||
return this.delete(`projects/${pId}/access_requests/${uId}/approve`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ProjectAccessRequests;
|
||||
@ -1,41 +0,0 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class ProjectMembers extends BaseModel {
|
||||
all(projectId) {
|
||||
const pId = Utils.parse(projectId);
|
||||
|
||||
return this.get(`projects/${pId}/members`);
|
||||
}
|
||||
|
||||
add(projectId, userId, accessLevel = 30) {
|
||||
const [pId, uId] = [projectId, userId].map(Utils.parse);
|
||||
|
||||
return this.post(`projects/${pId}/members`, {
|
||||
user_id: uId,
|
||||
access_level: parseInt(accessLevel, 10),
|
||||
});
|
||||
}
|
||||
|
||||
edit(projectId, userId, accessLevel = 30) {
|
||||
const [pId, uId] = [projectId, userId].map(Utils.parse);
|
||||
|
||||
return this.put(`projects/${pId}/members/${uId}`, {
|
||||
access_level: parseInt(accessLevel, 10),
|
||||
});
|
||||
}
|
||||
|
||||
remove(projectId, userId) {
|
||||
const [pId, uId] = [projectId, userId].map(Utils.parse);
|
||||
|
||||
return this.delete(`projects/${pId}/members/${uId}`);
|
||||
}
|
||||
|
||||
show(projectId, userId) {
|
||||
const [pId, uId] = [projectId, userId].map(Utils.parse);
|
||||
|
||||
return this.get(`projects/${pId}/members/${uId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ProjectMembers;
|
||||
@ -1,30 +0,0 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class ProjectMilestones extends BaseModel {
|
||||
add(projectId, title, options) {
|
||||
const pId = Utils.parse(projectId);
|
||||
|
||||
return this.post(`projects/${pId}/milestones`, options);
|
||||
}
|
||||
|
||||
all(projectId, options = {}) {
|
||||
const pId = Utils.parse(projectId);
|
||||
|
||||
return this.get(`projects/${pId}/milestones`, options);
|
||||
}
|
||||
|
||||
edit(projectId, milestoneId, options) {
|
||||
const [pId, mId] = [projectId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.put(`projects/${pId}/milestones/${mId}`, options);
|
||||
}
|
||||
|
||||
show(projectId, milestoneId) {
|
||||
const [pId, mId] = [projectId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`projects/${pId}/milestones/${mId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ProjectMilestones;
|
||||
@ -2,35 +2,40 @@ const Fs = require('fs');
|
||||
const Path = require('path');
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
const ProjectMembers = require('./ProjectMembers');
|
||||
const ProjectHooks = require('./ProjectHooks');
|
||||
const ProjectIssues = require('./ProjectIssues');
|
||||
const ProjectLabels = require('./ProjectLabels');
|
||||
const ProjectRepository = require('./ProjectRepository');
|
||||
const ProjectMilestones = require('./ProjectMilestones');
|
||||
const ProjectDeployKeys = require('./ProjectDeployKeys');
|
||||
const ProjectMergeRequests = require('./ProjectMergeRequests');
|
||||
const ProjectServices = require('./ProjectServices');
|
||||
const ProjectTriggers = require('./ProjectTriggers');
|
||||
const ProjectRunners = require('./ProjectRunners');
|
||||
const ProjectPipelines = require('./ProjectPipelines');
|
||||
const ResourceCustomAttributes = require('./ResourceCustomAttributes');
|
||||
const ResourceMembers = require('./ResourceMembers');
|
||||
const ResourceAccessRequests = require('./ResourceAccessRequests');
|
||||
const ResourceMilestones = require('./ResourceMilestones');
|
||||
|
||||
|
||||
class Projects extends BaseModel {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
|
||||
this.members = new ProjectMembers(...args);
|
||||
this.hooks = new ProjectHooks(...args);
|
||||
this.issues = new ProjectIssues(...args);
|
||||
this.labels = new ProjectLabels(...args);
|
||||
this.repository = new ProjectRepository(...args);
|
||||
this.milestones = new ProjectMilestones(...args);
|
||||
this.deployKeys = new ProjectDeployKeys(...args);
|
||||
this.mergeRequests = new ProjectMergeRequests(...args);
|
||||
this.services = new ProjectServices(...args);
|
||||
this.triggers = new ProjectTriggers(...args);
|
||||
this.pipelines = new ProjectPipelines(...args);
|
||||
this.runners = new ProjectRunners(...args);
|
||||
this.customAttributes = new ResourceCustomAttributes('projects', ...args);
|
||||
this.members = new ResourceMembers('projects', ...args);
|
||||
this.accessRequests = new ResourceAccessRequests('projects', ...args);
|
||||
this.milestones = new ResourceMilestones('projects', ...args);
|
||||
}
|
||||
|
||||
all(options = {}) {
|
||||
|
||||
45
src/Models/ResourceAccessRequests.js
Normal file
45
src/Models/ResourceAccessRequests.js
Normal file
@ -0,0 +1,45 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
const ACCESS_LEVELS = {
|
||||
GUEST: 10,
|
||||
REPORTER: 20,
|
||||
DEVELOPER: 30,
|
||||
MASTER: 40,
|
||||
OWNER: 50,
|
||||
};
|
||||
|
||||
class ResourceAccessRequests extends BaseModel {
|
||||
constructor(resourceType, ...args){
|
||||
super(...args);
|
||||
|
||||
this.resourceType = resourceType;
|
||||
this.ACCESS_LEVELS = ACCESS_LEVELS;
|
||||
}
|
||||
|
||||
all(resourceId) {
|
||||
const rId = Utils.parse(resourceId);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/access_requests`);
|
||||
}
|
||||
|
||||
request(resourceId) {
|
||||
const rId = Utils.parse(resourceId);
|
||||
|
||||
return this.post(`${this.resourceType}/${rId}/access_requests`);
|
||||
}
|
||||
|
||||
approve(resourceId, userId, { access_level = 30 }) {
|
||||
const [rId, uId] = [resourceId, userId].map(Utils.parse);
|
||||
|
||||
return this.post(`${this.resourceType}/${rId}/access_requests/${uId}/approve`, { access_level });
|
||||
}
|
||||
|
||||
deny(resourceId, userId) {
|
||||
const [rId, uId] = [resourceId, userId].map(Utils.parse);
|
||||
|
||||
return this.delete(`${this.resourceType}/${rId}/access_requests/${uId}/approve`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ResourceAccessRequests;
|
||||
36
src/Models/ResourceCustomAttributes.js
Normal file
36
src/Models/ResourceCustomAttributes.js
Normal file
@ -0,0 +1,36 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class ResourceCustomAttributes extends BaseModel {
|
||||
constructor(resourceType, ...args) {
|
||||
super(...args);
|
||||
|
||||
this.resourceType = resourceType;
|
||||
}
|
||||
|
||||
all(resourceId) {
|
||||
const rId = Utils.parse(resourceId);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/custom_attributes`);
|
||||
}
|
||||
|
||||
set(resourceId, customAttributeId, value) {
|
||||
const [rId, cId] = [resourceId, customAttributeId].map(Utils.parse);
|
||||
|
||||
return this.put(`${this.resourceType}/${rId}/custom_attributes/${cId}`, { value });
|
||||
}
|
||||
|
||||
remove(resourceId, customAttributeId) {
|
||||
const [rId, cId] = [resourceId, customAttributeId].map(Utils.parse);
|
||||
|
||||
return this.delete(`${this.resourceType}/${rId}/members/${cId}`);
|
||||
}
|
||||
|
||||
show(resourceId, customAttributeId) {
|
||||
const [rId, cId] = [resourceId, customAttributeId].map(Utils.parse);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/members/${cId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ResourceCustomAttributes;
|
||||
47
src/Models/ResourceMembers.js
Normal file
47
src/Models/ResourceMembers.js
Normal file
@ -0,0 +1,47 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class ResourceMembers extends BaseModel {
|
||||
constructor(resourceType, ...args) {
|
||||
super(...args);
|
||||
|
||||
this.resourceType = resourceType;
|
||||
}
|
||||
|
||||
all(resourceId) {
|
||||
const rId = Utils.parse(resourceId);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/members`);
|
||||
}
|
||||
|
||||
add(resourceId, userId, accessLevel) {
|
||||
const [rId, uId] = [resourceId, userId].map(Utils.parse);
|
||||
|
||||
return this.post(`${this.resourceType}/${rId}/members`, {
|
||||
user_id: uId,
|
||||
access_level: parseInt(accessLevel, 10),
|
||||
});
|
||||
}
|
||||
|
||||
edit(resourceId, userId, accessLevel) {
|
||||
const [rId, uId] = [resourceId, userId].map(Utils.parse);
|
||||
|
||||
return this.put(`${this.resourceType}/${rId}/members/${uId}`, {
|
||||
access_level: parseInt(accessLevel, 10),
|
||||
});
|
||||
}
|
||||
|
||||
show(resourceId, userId) {
|
||||
const [rId, uId] = [resourceId, userId].map(Utils.parse);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/members/${uId}`);
|
||||
}
|
||||
|
||||
remove(resourceId, userId) {
|
||||
const [rId, uId] = [resourceId, userId].map(Utils.parse);
|
||||
|
||||
return this.delete(`${this.resourceType}/${rId}/members/${uId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ResourceMembers;
|
||||
18
src/Models/ResourceMilestoneIssues.js
Normal file
18
src/Models/ResourceMilestoneIssues.js
Normal file
@ -0,0 +1,18 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class GroupMilestoneIssues extends BaseModel {
|
||||
constructor(resourceType, ...args) {
|
||||
super(...args);
|
||||
|
||||
this.resourceType = resourceType;
|
||||
}
|
||||
|
||||
all(resourceId, milestoneId) {
|
||||
const [rId, mId] = [resourceId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/milestones/${mId}/issues`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = GroupMilestoneIssues;
|
||||
18
src/Models/ResourceMilestoneMergeRequests.js
Normal file
18
src/Models/ResourceMilestoneMergeRequests.js
Normal file
@ -0,0 +1,18 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class ResourceMilestoneMergeRequests extends BaseModel {
|
||||
constructor(resourceType, ...args) {
|
||||
super(...args);
|
||||
|
||||
this.resourceType = resourceType;
|
||||
}
|
||||
|
||||
all(resourceId, milestoneId) {
|
||||
const [rId, mId] = [resourceId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/milestones/${mId}/merge_requests`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ResourceMilestoneMergeRequests;
|
||||
41
src/Models/ResourceMilestones.js
Normal file
41
src/Models/ResourceMilestones.js
Normal file
@ -0,0 +1,41 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const ResourceMilestoneIssues = require('./GroupMilestoneIssues');
|
||||
const ResourceMilestoneMergeRequests = require('./GroupMilestoneMergeRequests');
|
||||
|
||||
const Utils = require('../Utils');
|
||||
|
||||
class ResourceMilestones extends BaseModel {
|
||||
constructor(resourceType, ...args) {
|
||||
super(...args);
|
||||
|
||||
this.resourceType = resourceType;
|
||||
this.issues = new ResourceMilestoneIssues(resourceType, ...args);
|
||||
this.mergeRequests = new ResourceMilestoneMergeRequests(resourceType, ...args);
|
||||
}
|
||||
|
||||
all(resourceId, options = {}) {
|
||||
const rId = Utils.parse(resourceId);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/milestones`, options);
|
||||
}
|
||||
|
||||
create(resourceId, title, options) {
|
||||
const rId = Utils.parse(resourceId);
|
||||
|
||||
return this.post(`${this.resourceType}/${rId}/milestones`, options);
|
||||
}
|
||||
|
||||
edit(resourceId, milestoneId, options) {
|
||||
const [rId, mId] = [resourceId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.put(`${this.resourceType}/${rId}/milestones/${mId}`, options);
|
||||
}
|
||||
|
||||
show(resourceId, milestoneId) {
|
||||
const [rId, mId] = [resourceId, milestoneId].map(Utils.parse);
|
||||
|
||||
return this.get(`${this.resourceType}/${rId}/milestones/${mId}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ResourceMilestones;
|
||||
@ -1,11 +1,13 @@
|
||||
const BaseModel = require('./BaseModel');
|
||||
const UserKeys = require('./UserKeys');
|
||||
const Utils = require('../Utils');
|
||||
const ResourceCustomAttributes = require('./ResourceCustomAttributes');
|
||||
|
||||
class Users extends BaseModel {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
|
||||
this.customAttributes = new ResourceCustomAttributes('users', ...args);
|
||||
this.keys = UserKeys;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user