You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
;;; glab.el --- minuscule client library for the Gitlab API -*- lexical-binding: t -*-
;; Copyright (C) 2016-2020 Jonas Bernoulli
;; Author: Jonas Bernoulli <jonas@bernoul.li>;; Homepage: https://github.com/magit/ghub;; Keywords: tools
;; This file is not part of GNU Emacs.
;; This file is free software; you can redistribute it and/or modify;; it under the terms of the GNU General Public License as published by;; the Free Software Foundation; either version 3, or (at your option);; any later version.
;; This file is distributed in the hope that it will be useful,;; but WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the;; GNU General Public License for more details.
;; For a copy of the GPL see https://www.gnu.org/licenses/gpl.txt.
;;; Commentary:
;; Glab is a library that provides basic support for using the Gitlab API;; from Emacs packages. It abstracts access to API resources using only;; a handful of functions that are not resource-specific.
;; This library is implemented on top of Ghub. Unlike Ghub, Glab does;; not support the guided creation of tokens because Gitlab lacks the;; features that would be necessary to implement that. Users have to;; create tokens through the web interface.
;;; Code:
(require 'ghub)
(defconst glab-default-host "gitlab.com/api/v4" "The default host that is used if `glab.host' is not set.")
(cl-defun glab-head (resource &optional params &key query payload headers silent unpaginate noerror reader username auth host callback errorback extra) "Make a `HEAD' request for RESOURCE, with optional query PARAMS.
Like calling `ghub-request' (which see) with \"HEAD\" as METHODand `gitlab' as FORGE."
(ghub-request "HEAD" resource params :forge 'gitlab :query query :payload payload :headers headers :silent silent :unpaginate unpaginate :noerror noerror :reader reader :username username :auth auth :host host :callback callback :errorback errorback :extra extra))
(cl-defun glab-get (resource &optional params &key query payload headers silent unpaginate noerror reader username auth host callback errorback extra) "Make a `GET' request for RESOURCE, with optional query PARAMS.
Like calling `ghub-request' (which see) with \"GET\" as METHODand `gitlab' as FORGE."
(ghub-request "GET" resource params :forge 'gitlab :query query :payload payload :headers headers :silent silent :unpaginate unpaginate :noerror noerror :reader reader :username username :auth auth :host host :callback callback :errorback errorback :extra extra))
(cl-defun glab-put (resource &optional params &key query payload headers silent unpaginate noerror reader username auth host callback errorback extra) "Make a `PUT' request for RESOURCE, with optional payload PARAMS.
Like calling `ghub-request' (which see) with \"PUT\" as METHODand `gitlab' as FORGE."
(ghub-request "PUT" resource params :forge 'gitlab :query query :payload payload :headers headers :silent silent :unpaginate unpaginate :noerror noerror :reader reader :username username :auth auth :host host :callback callback :errorback errorback :extra extra))
(cl-defun glab-post (resource &optional params &key query payload headers silent unpaginate noerror reader username auth host callback errorback extra) "Make a `POST' request for RESOURCE, with optional payload PARAMS.
Like calling `ghub-request' (which see) with \"POST\" as METHODand `gitlab' as FORGE."
(ghub-request "POST" resource params :forge 'gitlab :query query :payload payload :headers headers :silent silent :unpaginate unpaginate :noerror noerror :reader reader :username username :auth auth :host host :callback callback :errorback errorback :extra extra))
(cl-defun glab-patch (resource &optional params &key query payload headers silent unpaginate noerror reader username auth host callback errorback extra) "Make a `PATCH' request for RESOURCE, with optional payload PARAMS.
Like calling `ghub-request' (which see) with \"PATCH\" as METHODand `gitlab' as FORGE."
(ghub-request "PATCH" resource params :forge 'gitlab :query query :payload payload :headers headers :silent silent :unpaginate unpaginate :noerror noerror :reader reader :username username :auth auth :host host :callback callback :errorback errorback :extra extra))
(cl-defun glab-delete (resource &optional params &key query payload headers silent unpaginate noerror reader username auth host callback errorback extra) "Make a `DELETE' request for RESOURCE, with optional payload PARAMS.
Like calling `ghub-request' (which see) with \"DELETE\" as METHODand `gitlab' as FORGE."
(ghub-request "DELETE" resource params :forge 'gitlab :query query :payload payload :headers headers :silent silent :unpaginate unpaginate :noerror noerror :reader reader :username username :auth auth :host host :callback callback :errorback errorback :extra extra))
(cl-defun glab-request (method resource &optional params &key query payload headers silent unpaginate noerror reader username auth host callback errorback extra) "Make a request for RESOURCE and return the response body.
Like calling `ghub-request' (which see) with `gitlab' as FORGE."
(ghub-request method resource params :forge 'gitlab :query query :payload payload :headers headers :silent silent :unpaginate unpaginate :noerror noerror :reader reader :username username :auth auth :host host :callback callback :errorback errorback :extra extra))
(cl-defun glab-repository-id (owner name &key username auth host) "Return the id of the repository specified by OWNER, NAME and HOST." (number-to-string (cdr (assq 'id (glab-get (format "/projects/%s%%2F%s" (replace-regexp-in-string "/" "%2F" owner) name) nil :username username :auth auth :host host)))))
;;; _(provide 'glab);;; glab.el ends here
|