From f7cbe2293eea864695e8aab902edde830a3ca435 Mon Sep 17 00:00:00 2001 From: Justin Date: Sun, 25 Mar 2018 21:02:14 -0400 Subject: [PATCH] Renamed Namespace to Bundle Added Todos support Cleaned up Tags Moved createTodo to Todos API --- README.md | 22 ++++++++++++---------- src/index.js | 6 +++--- src/services/MergeRequests.js | 6 ------ src/services/Tags.js | 14 ++++---------- src/services/Todos.js | 21 +++++++++++++++++++++ src/services/index.js | 1 + 6 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 src/services/Todos.js diff --git a/README.md b/README.md index 801574f5..1d977cb1 100644 --- a/README.md +++ b/README.md @@ -83,8 +83,9 @@ Tags Triggers // General -SystemHooks Events +SystemHooks +Todos ``` ### Import @@ -130,15 +131,15 @@ const service = new Projects({ ``` -#### Namespace Imports +#### Bundle Imports -It can be annoying to have to import all the API's pertaining to a specific resource. For example, the Projects resource is composed of many API's, Projects, Issues, Labels, MergeRequests, etc. For convience, there is a Namespace export for importing and instantiating all these related API's at once. +It can be annoying to have to import all the API's pertaining to a specific resource. For example, the Projects resource is composed of many API's, Projects, Issues, Labels, MergeRequests, etc. For convience, there is a Bundle export for importing and instantiating all these related API's at once. ```javascript -import { ProjectsNamespace } from 'node-gitlab-api'; +import { ProjectsBundle } from 'node-gitlab-api'; -const services = new ProjectsNamespace({ +const services = new ProjectsBundle({ url: 'http://example.com', // Defaults to http://gitlab.com token: 'abcdefghij123456' //Can be created in your profile. }) @@ -149,8 +150,8 @@ etc.. ``` -Currently there are three Namespaces: -1. ProjectsNamespace which includes: +Currently there are three Bundles: +1. ProjectsBundle which includes: ``` Branches, Commits, @@ -179,7 +180,7 @@ Tags, Triggers ``` -2. UsersNamespace which includes: +2. UsersBundle which includes: ``` Users, UserEmails, @@ -188,7 +189,7 @@ UserKeys, UserGPGKeys ``` -3. GroupsNamespace which includes: +3. GroupsBundle which includes: ``` Groups, GroupAccessRequests, @@ -324,6 +325,7 @@ This started off as a fork from [node-gitlab](https://github.com/node-gitlab/nod - Added support for Merge Request Approvals #49 - Fixed problem with .all() functions where only the some of the results were being returned - Added full support for Enviroments +- Added support for Todos ### Breaking Changes between 2.2.6 and 3.0.0 - Instantiation of the API must use the new operator consistently. See usage above. @@ -334,7 +336,7 @@ ProjectRepository -> Repositories, Tags, Commits, Branches and RepositoryFiles Users -> Users, UserKeys, UserGPGKeys, UserCustomAttributes, UserVariables ``` - +- Moved createTodo function from MergeRequests API to Todos API - Many services have been renamed: ``` ProjectProtectedBranches -> ProtectedBranches diff --git a/src/index.js b/src/index.js index a9806700..e18301e3 100644 --- a/src/index.js +++ b/src/index.js @@ -15,7 +15,7 @@ const { GroupVariables, } = APIServices; -export const GroupNamespace = init({ +export const GroupsBundle = init({ Groups, GroupAccessRequests, GroupCustomAttributes, @@ -28,7 +28,7 @@ export const GroupNamespace = init({ // Users const { Users, UserEmails, UserImpersonationTokens, UserKeys, UserGPGKeys } = APIServices; -export const UserNamespace = init({ +export const UsersBundle = init({ Users, UserEmails, UserImpersonationTokens, @@ -65,7 +65,7 @@ const { Triggers, } = APIServices; -export const ProjectNamespace = init({ +export const ProjectsBundle = init({ Branches, Commits, DeployKeys, diff --git a/src/services/MergeRequests.js b/src/services/MergeRequests.js index 7f49f3c6..0ec1e06c 100644 --- a/src/services/MergeRequests.js +++ b/src/services/MergeRequests.js @@ -69,12 +69,6 @@ class MergeRequests extends BaseService { }); } - createTodo(projectId, mergerequestId) { - const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); - - return RequestHelper.post(this, `projects/${pId}/merge_requests/${mId}/todo`); - } - edit(projectId, mergerequestId, options) { const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); diff --git a/src/services/Tags.js b/src/services/Tags.js index 252a217c..20085d62 100644 --- a/src/services/Tags.js +++ b/src/services/Tags.js @@ -14,21 +14,15 @@ class Tags extends BaseService { } remove(projectId, tagName) { - const pId = encodeURIComponent(projectId); + const [pId, tId] = [projectId, tagName].map(encodeURIComponent); - return RequestHelper.delete( - this, - `projects/${pId}/repository/tags/${encodeURI(tagName)}`, - ); + return RequestHelper.delete(this, `projects/${pId}/repository/tags/${tId}`); } show(projectId, tagName) { - const pId = encodeURIComponent(projectId); + const [pId, tId] = [projectId, tagName].map(encodeURIComponent); - return RequestHelper.get( - this, - `projects/${pId}/repository/tags/${encodeURI(tagName)}`, - ); + return RequestHelper.get(this, `projects/${pId}/repository/tags/${tId}`); } } diff --git a/src/services/Todos.js b/src/services/Todos.js new file mode 100644 index 00000000..42a95c0b --- /dev/null +++ b/src/services/Todos.js @@ -0,0 +1,21 @@ +import { BaseService, RequestHelper } from '../infrastructure'; + +class Todos extends BaseService { + all(options) { + return RequestHelper.get(this, 'todos, options); + } + + create(projectId, mergerequestId) { + const [pId, mId] = [projectId, mergerequestId].map(encodeURIComponent); + + return RequestHelper.post(this, `projects/${pId}/merge_requests/${mId}/todo`); + } + + done({ todoId } = {}) { + const tId = encodeURIComponent(todoId); + + return RequestHelper.delete(this,`todos/${tId}/mark_as_done`); + } +} + +export default Todos; diff --git a/src/services/index.js b/src/services/index.js index fa66b189..5b5a1444 100644 --- a/src/services/index.js +++ b/src/services/index.js @@ -39,6 +39,7 @@ export RepositoryFiles from './RepositoryFiles'; export Runners from './Runners'; export Services from './Services'; export Tags from './Tags'; +export Todos from '/Todos'; export Triggers from './Triggers'; // General