diff --git a/src/Models/GroupAccessRequests.js b/src/Models/GroupAccessRequests.js deleted file mode 100644 index 416df36d..00000000 --- a/src/Models/GroupAccessRequests.js +++ /dev/null @@ -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; diff --git a/src/Models/GroupMembers.js b/src/Models/GroupMembers.js deleted file mode 100644 index e5c709a6..00000000 --- a/src/Models/GroupMembers.js +++ /dev/null @@ -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; diff --git a/src/Models/GroupMilestoneIssues.js b/src/Models/GroupMilestoneIssues.js deleted file mode 100644 index 59f4d06a..00000000 --- a/src/Models/GroupMilestoneIssues.js +++ /dev/null @@ -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; diff --git a/src/Models/GroupMilestoneMergeRequests.js b/src/Models/GroupMilestoneMergeRequests.js deleted file mode 100644 index 122cdd6f..00000000 --- a/src/Models/GroupMilestoneMergeRequests.js +++ /dev/null @@ -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; diff --git a/src/Models/GroupMilestones.js b/src/Models/GroupMilestones.js deleted file mode 100644 index 04a50671..00000000 --- a/src/Models/GroupMilestones.js +++ /dev/null @@ -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; diff --git a/src/Models/Groups.js b/src/Models/Groups.js index 732890b0..b23bb478 100644 --- a/src/Models/Groups.js +++ b/src/Models/Groups.js @@ -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 = {}) { diff --git a/src/Models/ProjectAccessRequests.js b/src/Models/ProjectAccessRequests.js deleted file mode 100644 index 2faa2201..00000000 --- a/src/Models/ProjectAccessRequests.js +++ /dev/null @@ -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; diff --git a/src/Models/ProjectMembers.js b/src/Models/ProjectMembers.js deleted file mode 100644 index 58fa4f7c..00000000 --- a/src/Models/ProjectMembers.js +++ /dev/null @@ -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; diff --git a/src/Models/ProjectMilestones.js b/src/Models/ProjectMilestones.js deleted file mode 100644 index f1bf87d3..00000000 --- a/src/Models/ProjectMilestones.js +++ /dev/null @@ -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; diff --git a/src/Models/Projects.js b/src/Models/Projects.js index b5ad09cf..5d4db35a 100644 --- a/src/Models/Projects.js +++ b/src/Models/Projects.js @@ -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 = {}) { diff --git a/src/Models/ResourceAccessRequests.js b/src/Models/ResourceAccessRequests.js new file mode 100644 index 00000000..588180da --- /dev/null +++ b/src/Models/ResourceAccessRequests.js @@ -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; diff --git a/src/Models/ResourceCustomAttributes.js b/src/Models/ResourceCustomAttributes.js new file mode 100644 index 00000000..fcc0ce03 --- /dev/null +++ b/src/Models/ResourceCustomAttributes.js @@ -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; diff --git a/src/Models/ResourceMembers.js b/src/Models/ResourceMembers.js new file mode 100644 index 00000000..ad45bc1c --- /dev/null +++ b/src/Models/ResourceMembers.js @@ -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; \ No newline at end of file diff --git a/src/Models/ResourceMilestoneIssues.js b/src/Models/ResourceMilestoneIssues.js new file mode 100644 index 00000000..31114b4c --- /dev/null +++ b/src/Models/ResourceMilestoneIssues.js @@ -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; diff --git a/src/Models/ResourceMilestoneMergeRequests.js b/src/Models/ResourceMilestoneMergeRequests.js new file mode 100644 index 00000000..1e38cd3d --- /dev/null +++ b/src/Models/ResourceMilestoneMergeRequests.js @@ -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; diff --git a/src/Models/ResourceMilestones.js b/src/Models/ResourceMilestones.js new file mode 100644 index 00000000..517af2d8 --- /dev/null +++ b/src/Models/ResourceMilestones.js @@ -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; diff --git a/src/Models/Users.js b/src/Models/Users.js index b49a8e94..c20c3342 100644 --- a/src/Models/Users.js +++ b/src/Models/Users.js @@ -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; }