Adding dicussions API

This commit is contained in:
Justin 2018-03-30 21:05:46 -04:00
parent 234625c121
commit ec9f69a9eb
6 changed files with 87 additions and 1 deletions

View File

@ -19,6 +19,7 @@ export const GroupsBundle = init(Pick(APIServices, [
'Epics',
'EpicIssues',
'EpicNotes',
'EpicDiscussions',
]));
// Users
@ -39,6 +40,7 @@ export const ProjectsBundle = init(Pick(APIServices, [
'Environments',
'Issues',
'IssueNotes',
'IssueDiscussions',
'Jobs',
'Labels',
'MergeRequests',
@ -57,6 +59,7 @@ export const ProjectsBundle = init(Pick(APIServices, [
'ProjectMilestones',
'ProjectSnippet',
'ProjectSnippetNotes',
'ProjectSnippetDiscussions',
'ProtectedBranches',
'ProjectVariables',
'Repositories',

View File

@ -0,0 +1,9 @@
import { ResourceDiscussions } from '../templates';
class EpicDiscussions extends ResourceDiscussions {
constructor(options) {
super('groups', 'epics', options);
}
}
export default EpicDiscussions;

View File

@ -0,0 +1,9 @@
import { ResourceDiscussions } from '../templates';
class IssueDiscussions extends ResourceDiscussions {
constructor(options) {
super('projects', 'issues', options);
}
}
export default IssueDiscussions;

View File

@ -0,0 +1,9 @@
import { ResourceDiscussions } from '../templates';
class ProjectSnippetDiscussions extends ResourceDiscussions {
constructor(options) {
super('projects', 'snippets', options);
}
}
export default ProjectSnippetDiscussions;

View File

@ -11,6 +11,7 @@ export GroupVariables from './GroupVariables';
export Epics from './Epics';
export EpicIssues from './EpicIssues';
export EpicNotes from './EpicNotes';
export EpicDiscussions from './EpicDiscussions';
// Users
export Users from './Users';
@ -27,6 +28,7 @@ export DeployKeys from './DeployKeys';
export Environments from './Environments';
export Issues from './Issues';
export IssueNotes from './IssueNotes';
export IssueDiscussions from './IssueDiscussions';
export IssueAwardEmojis from './IssueAwardEmojis';
export Jobs from './Jobs';
export Labels from './Labels';
@ -44,8 +46,9 @@ export ProjectIssueBoards from './ProjectIssueBoards';
export ProjectHooks from './ProjectHooks';
export ProjectMembers from './ProjectMembers';
export ProjectMilestones from './ProjectMilestones';
export ProjectSnippet from './ProjectSnippet';
export ProjectSnippets from './ProjectSnippets';
export ProjectSnippetNotes from './ProjectSnippetNotes';
export ProjectSnippetDiscussions from './ProjectSnippetDiscussions';
export ProjectSnippetAwardEmojis from './ProjectSnippetAwardEmojis';
export ProtectedBranches from './ProtectedBranches';
export ProjectVariables from './ProjectVariables';

View File

@ -0,0 +1,53 @@
import URLJoin from 'url-join';
import { BaseService, RequestHelper } from '../infrastructure';
class ResourceDiscussions extends BaseService {
constructor(resourceType, resource2Type, ...args) {
super(...args);
this.url = URLJoin(this.url, resourceType);
this.resource2Type = resource2Type;
}
addNote(resourceId, resource2Id, discussiodId, noteId, options) {
if (!options.body) throw new Error('Missing required property: body');
const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussiodId, noteId].map(encodeURIComponent);
return RequestHelper.put(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`, options);
}
all(resourceId, resource2Id, options) {
const [rId, r2Id] = [resourceId, resource2Id].map(encodeURIComponent);
return RequestHelper.get(this, `${rId}/${this.resource2Type}/${r2Id}/discussions`, options);
}
create(resourceId, resource2Id, options) {
if (!options.body) throw new Error('Missing required property: body');
const [rId, r2Id] = [resourceId, resource2Id].map(encodeURIComponent);
return RequestHelper.post(this, `${rId}/${this.resource2Type}/${r2Id}/discussions`, options);
}
editNote(resourceId, resource2Id, discussiodId, noteId, body) {
const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussiodId, noteId].map(encodeURIComponent);
return RequestHelper.put(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`, { body });
}
removeNote(resourceId, resource2Id, discussiodId, noteId) {
const [rId, r2Id, dId, nId] = [resourceId, resource2Id, discussiodId, noteId].map(encodeURIComponent);
return RequestHelper.delete(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}/notes/${nId}`);
}
show(resourceId, resource2Id, discussiodId) {
const [rId, r2Id, dId] = [resourceId, resource2Id, discussiodId].map(encodeURIComponent);
return RequestHelper.get(this, `${rId}/${this.resource2Type}/${r2Id}/discussions/${dId}`);
}
}
export default ResourceDiscussions;