Gitlab.cr is a GitLab API wrapper writes with Crystal Language. Inspired from gitlab gem for ruby version. No support GraphQL API
Build in crystal version >= v1.0.0
, Docs Generated in latest commit.
dependencies:
gitlab:
github: icyleaf/gitlab.cr
require "gitlab"
# configuration
endpoint = "http://domain.com/api/v3"
token = "<token>"
# initialize a new client
g = Gitlab.client(endpoint, token)
# => #<Gitlab::Client:0x101653f20 @endpoint="http://localhost:10080/api/v3", @token="xxx">
# get the authenticated user
user = g.user
# => {"name" => "icyleaf", "username" => "icyleaf", "id" => 34, "state" => "active", "avatar_url" => "http://www.gravatar.com/avatar/38e1b2eb5d0a3fff4fb0ab8363c8f874?s=80&d=identicon", "web_url" => "http://gitlab.docker:10080/u/icyleaf", "created_at" => "2016-05-14T09:23:42.594+05:30", "is_admin" => true, "bio" => nil, "location" => nil, "skype" => "", "linkedin" => "", "twitter" => "", "website_url" => "", "last_sign_in_at" => "2016-05-14T09:24:00.575+05:30", "confirmed_at" => "2016-05-14T09:23:42.457+05:30", "email" => "[email protected]", "theme_id" => 2, "color_scheme_id" => 1, "projects_limit" => 8, "current_sign_in_at" => "2016-06-18T20:11:15.609+05:30", "identities" => [], "can_create_group" => true, "can_create_project" => true, "two_factor_enabled" => false, "external" => false, "private_token" => "xxx"}
# get the user's email
email = user["email"]
# => "[email protected]"
# get list of projects
projects = g.projects({ "per_page" => 5 })
# handle the exception
begin
pp g.delete_group(999)
rescue ex
pp ex.message
# Here has one variable "response" instance of Gitlab::HTTP::Response
# Friendly for developer to debug and control expressions.
pp ex.response.code
pp ex.response.body
end
# request not handled APIs
# example: request a GET method to call "/application/settings"
# get gitlab settings
g.get("/application/settings")
# update gitlab settings
g.put("/application/settings", { "signup_enabled" => "false" })
For more information, refer to API Documentation.
available?
users
user(user_id)
create_user
edit_user
delete_user
user
delete_user
user_custom_attributes(user_id)
user_add_custom_attribute(user_id, key)
user_delete_custom_attribute(user_id, key)
block_user(user_id)
unblock_user(user_id)
ssh_keys
ssh_keys(user_id)
ssh_key(ssh_key_id)
create_ssh_key
create_ssh_key(user_id)
delete_ssh_key
delete_ssh_key(user_id)
emails
emails(user_id)
email
add_email
add_email(user_id)
delete_email
delete_email(user_id)
session
upload_file
projects
owned_projects
starred_projects
all_projects
project
project_events
create_project
create_project(user_id)
edit_project
fork_project
star_project
unstar_project
archive_project
unarchive_project
delete_project
project_members
project_member
add_project_member
edit_project_member
remove_project_member
share_project
project_pages_domains
project_pages_domain
add_project_pages_domain
edit_project_pages_domain
remove_project_pages_domain
project_hooks
project_hook
add_project_hook
edit_project_hook
remove_project_hook
project_branchs
project_branch
protect_project_branch
unprotect_project_branch
create_fork_from
remove_fork_from
project_search
tree
blow
archive_project
compare
contributors
get_file
file_contents
commits
commit
commit_diff
commit_coments
create_commit_comment
commit_status
update_commit_status
branches
branch
protect_branch
unprotect_branch
create_branch
delete_branch
merge_requests
merge_request
merge_request_commit
merge_request_changes
create_merge_request
edit_merge_request
delete_merge_request
accept_merge_request
cancel_merge_request_when_build_succeed
merge_request_comments
merge_request_closed_issues
subscribe_merge_request
unsubscribe_merge_request
issues
issues(project_id)
issue
create_issue
edit_issue
/ close_issue
/ reopen_issue
delete_issue
move_issue
subscribe_issue
unsubscribe_issue
key
labels
create_label
delete_label
edit_labe
subscribe_label
unsubscribe_label
milestones
milestone
create_milestone
edit_milestone
milestone_issues
milestone_merge_requests
issue_notes
issue_note
create_issue_note
edit_issue_note
delete_issue_note
snippet_notes
snippet_note
create_snippet_note
edit_snippet_note
delete_snippet_note
merge_request_notes
merge_request_note
create_merge_request_note
edit_merge_request_note
delete_merge_request_note
deploy_keys
deploy_key
create_deploy_key
remove_deploy_key
groups
group_projects
group
create_group
transfer_project_to_group
edit_group
delete_group
group_search
group_members
group_member
add_member_to_group
edit_member_to_group
remove_member_to_group
tags
tag
create_tag
delete_tag
create_release_notes
update_release_notes
version
You can browse the API documents:
http://icyleaf.github.io/gitlab.cr/
You can browse the Changelog:
https://github.com/icyleaf/gitlab.cr/blob/master/CHANGELOG.md
If you have found a bug, please create a issue here:
https://github.com/icyleaf/gitlab.cr/issues/new
Your contributions are always welcome! Please submit a pull request or create an issue to add a new question, bug or feature to the list.
All Contributors are on the wall.
MIT License © icyleaf