Project Icon

jcabi-github

Java实现的面向对象GitHub API适配器

jcabi-github是一个基于Java的GitHub API适配器,专注于面向对象编程。它提供GitHub服务器端功能模拟,便于单元测试。支持Java 8及以上版本,具有简洁的API接口。适用于标准GitHub和企业版GitHub,并提供模拟版本用于测试。该库实现了GitHub RESTful API的Java适配,采用面向对象设计。特色功能包括GitHub服务器端模拟,便于进行无需连接实际GitHub服务的单元测试。

logo

遵守EO原则 由Rultor.com进行DevOps 我们推荐IntelliJ IDEA

mvn PDD状态 codecov Maven中央仓库 JavaDoc 代码点击量 代码行数 许可证

这是一个GitHub RESTful API的Java适配器。 市场上有一些类似的实现,但jcabi-github非常注重面向对象的编程原则。此外, 我们还独特地实现了GitHub服务器端功能, 你可以在单元测试中使用它,无需在单元/集成测试期间连接到GitHub。 请阅读这个库的创建者Yegor Bugayenko的博客文章 面向对象的Github API

需要Java 8或更高版本。

更多详情请见:github.jcabi.com

你也可以在这个Telegram聊天组获得帮助。

com.jcabi.github 包中的类集是面向对象的API。使用方法如下:

使用Github的API

默认情况下,该库与Github的API (https://api.github.com) 配合使用

import com.jcabi.github.*;
public class Main {
  public static void main(String[] args) throws IOException {
    Github github = new RtGithub(".. 你的OAuth令牌 ..");
    Repo repo = github.repos().get(
        new Coordinates.Simple("octocat/Hello-World")
    );
    Issue issue = repo.issues().create("测试标题", "测试描述");
    issue.comments().post("我的第一条评论!");
  }
}

使用Github Enterprise或其他

如果你想通过其他域名使用Github的API,你可以使用 RtGithub 类的URI构造函数。例如,如果你在域名 https://github.mydomain.com 下部署了自己的Github实例,可以这样做:

final Github github = new RtGithub(URI.create("https://github.mydomain.com"));

//或者

final Github github = new RtGithub(
    "<<oauth2_token>>",
    URI.create("https://github.mydomain.com")
);

//或者

final Github github = new RtGithub(
    "username", "password",
    URI.create("https://github.mydomain.com")
);

不要更改或掩盖你的URI!在不同的域名下使用Github是可以的,但不要更改URI的路径。更改请求路径是不可能的,因为这个库的整个架构都依赖于Github的URI路径。

对于更复杂的配置,你可以使用自定义的 Request 来实例化 RtGithub,方法是使用 RtGithub(Request) 构造函数。 请确保正确配置 Request。参考默认Request的创建方式 -- 你基本上需要做同样的事情。

API的模拟实现

我们还提供了 MkGithub, 这是GitHub服务器的一个模拟版本,你可以在单元测试中使用它,例如:

import com.jcabi.github.*;
public class FooTest {
  public void submitsCommentToGithubIssue() {
    final Repo repo = new MkGithub().repos().create(
      Json.createObjectBuilder().add("name", "test").build()
    );
    final Issue issue = repo.issues().create("how are you?", "");
    new Foo(issue).doSomething(); // 应该向问题发送一条消息
    MasterAssert.assertThat(
      issue.comments().iterate(),
      Matchers.iterableWithSize(1)
    );
  }
}

如何贡献?

fork仓库,进行修改,提交pull request。 我们承诺会在当天审查你的修改,如果看起来没问题就会应用到 master 分支。

在提交pull request之前,请运行Maven(3.1或更高版本!)构建:

$ mvn clean install -Pqulice

有许多集成测试会检查我们的类与实际的Github账户的交互。为了运行这些测试,你需要创建 新的Github OAuth访问令牌 (如何创建?), 并在命令行中提供它们,如下所示:

$ mvn clean install -Dit.test=RtGistITCase -Dfailsafe.github.key=<token> -Dfailsafe.github.key.second=<second-token> -Dfailsafe.github.repo=<repo>

<token><second-token> 替换为两个不同Github账户的OAuth访问令牌。这个测试用例将尝试将第一个账户的gist复刻到第二个账户。将 <repo> 替换为你在第一个账户中创建的仓库名称(仅用于测试目的), 例如 yegor256/test。OAuth访问令牌应该在各自的仓库中拥有集成测试套件所需的所有范围的权限 (包括默认情况下未设置的 delete_repo!)。

请注意,不同的集成测试可能需要具有不同范围权限的密钥。要运行所有集成测试,密钥应该 具有以下OAuth范围:

  • read:org
  • repo
  • delete_repo
  • admin:public_key
  • gist
  • admin:repo_hook
  • user
  • user:email

RtForksITCase 需要额外的参数 -Dfailsafe.github.organization=<organization>, 其中 <organization> 是用于复刻测试Github仓库的组织名称。

如果只想运行静态分析检查,请使用以下命令:

$ mvn clean install -DskipTests -Dinvoker.skip=true -Pqulice
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号