forked from Ermlab/nxt-gitlab
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProjects.coffee
More file actions
68 lines (55 loc) · 2.04 KB
/
Projects.coffee
File metadata and controls
68 lines (55 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
BaseModel = require '../BaseModel'
Utils = require '../Utils'
class Projects extends BaseModel
init: =>
@members = @load 'ProjectMembers'
@hooks = @load 'ProjectHooks'
@issues = @load 'ProjectIssues'
@repository = @load 'ProjectRepository'
@milestones = @load 'ProjectMilestones'
@deploy_keys = @load 'ProjectDeployKeys'
@merge_requests = @load 'ProjectMergeRequests'
all: (params={}, fn=null) =>
if 'function' is typeof params
fn = params
params={}
@debug "Projects::all()"
params.page ?= 1
params.per_page ?= 100
do (->
data = []
cb = (err, retData) =>
if err
return fn data if fn
else if retData.length == params.per_page
@debug "Recurse Projects::all()"
data = data.concat(retData)
params.page++
return @get "projects", params, cb
else
data = data.concat(retData)
return fn data if fn
@get "projects", params, cb
).bind(@)
show: (projectId, fn=null) =>
@debug "Projects::show()"
@get "projects/#{Utils.parseProjectId projectId}", (data) => fn data if fn
create: (params={}, fn=null) =>
@debug "Projects::create()"
@post "projects", params, (data) -> fn data if fn
addMember: (params={}, fn=null) =>
@debug "Projects::addMember()"
@post "projects/#{params.id}/members", params, (data) -> fn data if fn
editMember: (params={}, fn=null) =>
@debug "Projects::editMember()"
@put "projects/#{params.id}/members/#{params.user_id}", params, (data) -> fn data if fn
listMembers: (params={}, fn=null) =>
@debug "Projects::listMembers()"
@get "projects/#{params.id}/members", (data) -> fn data if fn
listCommits: (params={}, fn=null) =>
@debug "Projects::listCommits()"
@get "projects/#{params.id}/repository/commits", (data) => fn data if fn
listTags: (params={}, fn=null) =>
@debug "Projects::listTags()"
@get "projects/#{params.id}/repository/tags", (data) => fn data if fn
module.exports = (client) -> new Projects client