Skip to content

Commit

Permalink
Merge pull request #18 from idemacs/develop
Browse files Browse the repository at this point in the history
Develop to develop
  • Loading branch information
nlamirault committed Jun 3, 2015
2 parents 0def792 + 5188e2e commit c0e0a01
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 33 deletions.
66 changes: 51 additions & 15 deletions gitlab-issues.el
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,32 @@
(require 'gitlab-utils)


(defun gitlab-list-issues ()
(defun gitlab-list-issues (page per-page)
"Get all issues created by authenticated user.
STATE Return all issues or just those that are opened or closed
LABELS - Comma-separated list of label names"
(let ((params '()))
;; (when state
;; (add-to-list params (cons "state" state)))
;; (when labels
;; (add-to-list params (cons "labels" labels)))
(perform-gitlab-request "GET" "issues" params 200)))

(add-to-list 'params (cons 'per_page (number-to-string per-page)))
(add-to-list 'params (cons 'page (number-to-string page)))
(perform-gitlab-request "GET"
"issues"
params
200)))

(defun gitlab-list-all-issues ()
"Get a list of all issues."
(interactive)
(let* ((page 1)
(per-page 100)
(issues)
(all-issues (gitlab-list-issues page per-page))
(all-issues-count (length all-issues)))
(while (>= all-issues-count (* page per-page))
(setq issues (gitlab-list-issues page per-page))
(setq all-issues (vconcat all-issues issues))
(setq all-issues-count (length all-issues))
(setq page (1+ page)))
all-issues))

(defun gitlab--get-issue-uri (project-id issue-id)
"Retrieve URI to retrieve an issue.
Expand All @@ -52,17 +67,38 @@ ISSUE-ID : The ID of a project issue"
"/issues/"
issue-id))

(defun gitlab-list-project-issues (project-id)
(defun gitlab-list-project-issues (project-id &optional page per-page)
"Get a list of project issues.
PROJECT-ID : The ID of a project"
(perform-gitlab-request "GET"
(s-concat "projects/"
(url-hexify-string
(format "%s" project-id))
"/issues")
nil
200))
(let ((params '()))
(add-to-list 'params (cons 'per_page (number-to-string per-page)))
(add-to-list 'params (cons 'page (number-to-string page)))
(perform-gitlab-request "GET"
(s-concat "projects/"
(url-hexify-string
(format "%s" project-id))
"/issues")
params
200)))

(defun gitlab-list-all-project-issues (project-id &optional page per-page)
"Get a list of all PROJECT-ID issues."
(interactive)
(let* ((page 1)
(per-page 100)
(issues)
(all-issues (gitlab-list-project-issues project-id page per-page))
(all-issues-count (length all-issues)))
(while (>= all-issues-count (* page per-page))
(setq issues (gitlab-list-project-issues project-id page per-page))
(setq all-issues (vconcat all-issues issues))
(setq all-issues-count (length all-issues))
(setq page (1+ page)))
all-issues))




(defun gitlab-get-issue (project-id issue-id)
"Gets a single project issue.
Expand Down
5 changes: 3 additions & 2 deletions gitlab-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,13 @@
(pop-to-buffer "*Gitlab projects*" nil)
(gitlab-projects-mode)
(setq tabulated-list-entries
(create-projects-entries (gitlab-list-projects)))
(create-projects-entries (gitlab-list-all-projects)))
(tabulated-list-print t))

(defun create-projects-entries (projects)
"Create entries for 'tabulated-list-entries from PROJECTS."
(mapcar (lambda (p)

(let ((id (number-to-string (assoc-default 'id p)))
(owner (if (assoc-default 'owner p)
(assoc-default 'owner p)
Expand Down Expand Up @@ -99,7 +100,7 @@
(pop-to-buffer "*Gitlab issues*" nil)
(gitlab-issues-mode)
(setq tabulated-list-entries
(create-issues-entries (gitlab-list-issues)))
(create-issues-entries (gitlab-list-all-issues)))
(tabulated-list-print t))


Expand Down
40 changes: 31 additions & 9 deletions gitlab-notes.el
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,43 @@
(number-to-string issue-id)
"/notes"))

(defun gitlab-list-project-issue-notes (project-id issue-id)
(defun gitlab-list-project-issue-notes (project-id issue-id &optional page per-page)
"Get a list of project issue notes.
PROJECT-ID : The ID of a project
ISSUE-ID : The ID of a project issue
PAGE: current page number
PER-PAGE: number of items on page max 100"
(let* ((params '()))
(add-to-list 'params (cons 'per_page (number-to-string per-page)))
(add-to-list 'params (cons 'page (number-to-string page)))
(perform-gitlab-request "GET"
(gitlab--get-notes-uri
project-id
issue-id)
params
200)))

(defun gitlab-list-all-project-issue-notes (project-id issue-id)
"Get a list of allproject issue notes.
PROJECT-ID : The ID of a project
ISSUE-ID : The ID of a project issue"
(perform-gitlab-request "GET"
(gitlab--get-notes-uri
project-id
issue-id)
nil
200))
(interactive)
(let* ((page 1)
(per-page 100)
(notes)
(all-notes (gitlab-list-project-issue-notes project-id issue-id page per-page))
(all-notes-count (length all-notes)))
(while (>= all-notes-count (* page per-page))
(setq notes (gitlab-list-project-issue-notes project-id issue-id page per-page))
(setq all-notes (vconcat all-notes notes))
(setq all-notes-count (length all-notes))
(setq page (1+ page)))
all-notes))

(defun gitlab-get-issue-note (project-id issue-id note-id)
"Doc PROJECT-ID ISSUE-ID NOTE-ID."
)
"Doc PROJECT-ID ISSUE-ID NOTE-ID.")

(defun gitlab-add-issue-note (project-id issue-id body)
"Add note for project issue.
Expand Down
29 changes: 26 additions & 3 deletions gitlab-projects.el
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,32 @@
(require 'gitlab-utils)


(defun gitlab-list-projects ()
"Get a list of projects accessible by the authenticated user."
(perform-gitlab-request "GET" "projects" nil 200))
(defun gitlab-list-projects (&optional page per-page)
"Get a list of projects accessible by the authenticated user.
PAGE: current page number
PER-PAGE: number of items on page max 100"
(let* ((params '()))
(add-to-list 'params (cons 'per_page (number-to-string per-page)))
(add-to-list 'params (cons 'page (number-to-string page)))
(perform-gitlab-request "GET"
"projects"
params
200)))

(defun gitlab-list-all-projects ()
"Get a list of all projects accessible by the authenticated user."
(interactive)
(let* ((page 1)
(per-page 100)
(projects)
(all-projects (gitlab-list-projects page per-page))
(all-projects-count (length all-projects)))
(while (>= all-projects-count (* page per-page))
(setq projects (gitlab-list-projects page per-page))
(setq all-projects (vconcat all-projects projects))
(setq all-projects-count (length all-projects))
(setq page (1+ page)))
all-projects))


(defun gitlab-list-owned-projects ()
Expand Down
10 changes: 6 additions & 4 deletions gitlab-utils.el
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,18 @@ Defaults to `error'."


(defun gitlab--perform-get-request (uri params)
"Doc string URI PARAMS."
(let* ((response (request (gitlab--get-rest-uri uri)
:type "GET"
:headers (gitlab--get-headers)
:sync t
:params params
;;:data params
:parser 'json-read)))
response))

(defun gitlab--perform-post-request (uri params)
"Doc string URI PARAMS."
(let ((response (request (gitlab--get-rest-uri uri)
:type "POST"
:headers (gitlab--get-headers)
Expand All @@ -96,6 +99,7 @@ Defaults to `error'."
response))

(defun gitlab--perform-put-request (uri params)
"Doc string URI PARAMS."
(let ((response (request (gitlab--get-rest-uri uri)
:type "PUT"
:headers (gitlab--get-headers)
Expand All @@ -106,6 +110,7 @@ Defaults to `error'."


(defun perform-gitlab-request (type uri params status-code)
"Doc string TYPE URI PARAMS STATUS-CODE."
(let ((response
(cond ((string= type "POST")
(gitlab--perform-post-request uri params))
Expand All @@ -115,10 +120,7 @@ Defaults to `error'."
(gitlab--perform-put-request uri params)))))
(if (= status-code (request-response-status-code response))
(request-response-data response)
(error
(signal 'gitlab-http-error
(list (request-response-status-code response)
(request-response-data response)))))))
(lwarn '(gitlab) :error "HTTP %s Error %s on URI: %s" type (request-response-status-code response) uri))))


;; (defmacro with-gitlab-request (uri params status-code response-data &rest body)
Expand Down

0 comments on commit c0e0a01

Please sign in to comment.