BaseModel = require '../BaseModel'
class Issues extends BaseModel
all: (params = {}, fn = null) =>
if 'function' is typeof params
fn = params
params = {}
@debug "Issues::all()"
params.page ?= 1
params.per_page ?= 100
do (->
data = []
cb = (retData) =>
if retData.length == params.per_page
@debug "Recurse Issues::all()"
data = data.concat(retData)
params.page++
return @get "issues", params, cb
else
data = data.concat(retData)
fn data if fn
@get "issues", params, cb
).bind(@)
show: (projectId, issueId, fn = null) =>
@debug "Issues::show()"
if projectId.toString().indexOf("/") isnt -1
projectId = encodeURIComponent(projectId)
else
projectId = parseInt(projectId)
if issueId.toString().indexOf("/") isnt -1
issueId = encodeURIComponent(issueId)
else
issueId = parseInt(issueId)
@get "projects/#{projectId}/issues/#{issueId}", (data) => fn data if fn
create: (projectId, params = {}, fn = null) =>
@debug "Issues::create()"
if projectId.toString().indexOf("/") isnt -1
projectId = encodeURIComponent(projectId)
else
projectId = parseInt(projectId)
@post "projects/#{projectId}/issues", params, (data) -> fn data if fn
edit: (projectId, issueId, params = {}, fn = null) =>
@debug "Issues::edit()"
if projectId.toString().indexOf("/") isnt -1
projectId = encodeURIComponent(projectId)
else
projectId = parseInt(projectId)
if issueId.toString().indexOf("/") isnt -1
issueId = encodeURIComponent(issueId)
else
issueId = parseInt(issueId)
@put "projects/#{projectId}/issues/#{issueId}", params, (data) -> fn data if fn
module.exports = (client) -> new Issues client