adamgoose/gitlab

GitLab CE 的 Laravel API 封装器

v0.1.1 2014-05-21 04:03 UTC

This package is auto-updated.

Last update: 2024-08-29 04:08:58 UTC


README

GitLab 提供了 git 仓库管理、代码审查、问题跟踪、活动流和维基。企业可以在本地安装 GitLab,并通过 LDAP 和 Active Directory 服务器连接,以进行安全的身份验证和授权。单个 GitLab 服务器可以处理超过 25,000 个用户,但也可以创建一个高可用性设置,使用多个活动服务器。

这个 Laravel API 封装器允许用户以 Eloquent 类似的方式无缝地连接到他们自己的 GitLab 实例的 API。

API 文档可以在这里查看 这里,或者查看 develop 分支的 这里

安装

adamgoose/gitlab 添加到您的 composer.json 文件中。

"require": {
    "laravel/framework": "4.1.*",
    ...
    "adamgoose/gitlab": "dev-master"
},

接下来,在 app/config/app.phpproviders 数组中注册 GitlabServiceProvider

'providers' => array(
  ...
  'Adamgoose\Gitlab\GitlabServiceProvider',
),

最后,您需要配置 API 封装器以访问您的实例。只需运行以下命令,然后更新位于 app/config/packages/adamgoose/gitlab/config.php 的文件。

php artisan config:publish adamgoose/gitlab

有关配置设置的详细信息可以在配置文件的注释中找到。

命名空间与别名

由于 API 封装器使用类似 Eloquent 模型的语法,因此从根命名空间静态访问一些类可能很有用。因此,我们根据配置文件中的默认设置对所有类进行了别名化。您可以随意更改这些设置,但对常见的模型名称(如 User)要小心,以避免与您的 Eloquent 模型冲突。

目前,配置文件是这些别名的唯一来源。因此,将来添加到该软件包中的任何类或模型都不会自动进行别名化。我将尽力在更改日志中引用应更新此数组的任何更新。

使用方法

遍历 API 非常简单。Eloquent 用户(应该是所有人!)应该非常熟悉这种语法。

由于 API 的大部分功能都围绕项目,因此您的大部分 API 调用都应从 Project 模型开始。要查找项目,只需在 Project 模型上使用 find($id) 方法。

$project = Gitlab\Project::find(1);

注意:本文档将使用配置文件中配置的默认模型别名。但是,如果您已更新了这些别名,则需要相应地调整示例。请参阅本文档的 命名空间与别名 部分。

将 Project 模型转换为字符串(或输出)将返回一个包含 GitLab CE API 提供的所有信息的 JSON 对象。

从这里,您还可以获取与项目相关联的几个关系。

$events         = $project->events;
$members        = $project->members;
$hooks          = $project->hooks;
$branches       = $project->branches;
$tags           = $project->tags;
$tree           = $project->tree;
$commits        = $project->commits;
$snippets       = $project->snippets;
$keys           = $project->keys;
$issues         = $project->issues;
$milestones     = $project->milestones;
$merge_requests = $project->merge_requests;

这些特定调用将返回填充了相应模型的 Illuminate\Support\Collection 实例。

注意:如果您想将它们作为方法调用,请随意。例如:$project->events()

许多这些模型都支持单次获取。

$member        = $project->member($id);
$hook          = $project->hook($id);
$branch        = $project->branch($name);
$commit        = $project->commit($sha);
$snippet       = $project->snippet($id);
$key           = $project->key($id);
$issue         = $project->issue($id); // Note that the $id passed to the issue() method is the global ID, not the project-specific ID that is presented to you in the web version
$milestone     = $project->milestone($id);
$merge_request = $project->merge_request($id);

这些调用将返回相应模型的实例。

有关这些模型的更多文档将可在本存储库的Wiki中找到(最终)。

GitLab CE API

GitLab API 文档可在 http://doc.gitlab.com/ce/api/README.html 查找,或者通过访问您个人GitLab实例上的 /help/api/README 来浏览。

待办事项(在1.0之前)

此列表没有优先级。

  • 启用递归树浏览
  • 启用文件下载
  • 启用存档下载
  • 创建
  • 更新
  • 删除
  • 渲染API文档
  • 添加异常
  • 测试?