Class IssuesClient

java.lang.Object
ink.icoding.github4j.GithubClient
ink.icoding.github4j.client.IssuesClient

public class IssuesClient extends GithubClient
GitHub Issues API 客户端。

提供 Issue、评论、事件、标签、指派人、锁定、里程碑等操作的封装方法。

对应 GitHub REST API 文档: Issues

See Also:
  • Constructor Details

  • Method Details

    • listForRepo

      public Page<Issue> listForRepo(String owner, String repo, ListIssuesOptions options)
      列出指定仓库的 Issue。

      对应端点: GET /repos/{owner}/{repo}/issues

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      options - 列表选项(里程碑、状态、指派人、创建者、标签、排序等),可为 null
      Returns:
      分页的 Issue 列表
    • listForAuthenticatedUser

      public Page<Issue> listForAuthenticatedUser(ListUserIssuesOptions options)
      列出已认证用户的 Issue。

      对应端点: GET /user/issues

      Parameters:
      options - 列表选项(筛选器、状态、标签、排序等),可为 null
      Returns:
      分页的 Issue 列表
    • listForOrg

      public Page<Issue> listForOrg(String org, ListUserIssuesOptions options)
      列出指定组织的 Issue。

      对应端点: GET /orgs/{org}/issues

      Parameters:
      org - 组织名称
      options - 列表选项(筛选器、状态、标签、排序等),可为 null
      Returns:
      分页的 Issue 列表
    • get

      public GithubResponse<Issue> get(String owner, String repo, int issueNumber)
      获取单个 Issue 的详细信息。

      对应端点: GET /repos/{owner}/{repo}/issues/{issue_number}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      Returns:
      Issue 详情
    • create

      public GithubResponse<Issue> create(String owner, String repo, CreateIssueRequest request)
      在指定仓库中创建新 Issue。

      对应端点: POST /repos/{owner}/{repo}/issues

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      request - 创建 Issue 的请求体(标题、正文、指派人、标签等)
      Returns:
      创建后的 Issue
    • update

      public GithubResponse<Issue> update(String owner, String repo, int issueNumber, UpdateIssueRequest request)
      更新指定 Issue。

      对应端点: PATCH /repos/{owner}/{repo}/issues/{issue_number}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      request - 更新 Issue 的请求体(标题、正文、状态、指派人等)
      Returns:
      更新后的 Issue
    • listComments

      public Page<Comment> listComments(String owner, String repo, int issueNumber, PageOptions options)
      列出指定 Issue 的评论。

      对应端点: GET /repos/{owner}/{repo}/issues/{issue_number}/comments

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      options - 分页选项(每页数量、页码),可为 null
      Returns:
      分页的评论列表
    • listCommentsForRepo

      public Page<Comment> listCommentsForRepo(String owner, String repo, ListIssueCommentsOptions options)
      列出指定仓库所有 Issue 的评论。

      对应端点: GET /repos/{owner}/{repo}/issues/comments

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      options - 列表选项(排序、方向、since),可为 null
      Returns:
      分页的评论列表
    • getComment

      public GithubResponse<Comment> getComment(String owner, String repo, long commentId)
      获取单条评论的详细信息。

      对应端点: GET /repos/{owner}/{repo}/issues/comments/{comment_id}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      commentId - 评论 ID
      Returns:
      评论详情
    • createComment

      public GithubResponse<Comment> createComment(String owner, String repo, int issueNumber, CreateCommentRequest request)
      为指定 Issue 创建评论。

      对应端点: POST /repos/{owner}/{repo}/issues/{issue_number}/comments

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      request - 创建评论的请求体(评论正文)
      Returns:
      创建后的评论
    • updateComment

      public GithubResponse<Comment> updateComment(String owner, String repo, long commentId, UpdateCommentRequest request)
      更新指定评论。

      对应端点: PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      commentId - 评论 ID
      request - 更新评论的请求体(评论正文)
      Returns:
      更新后的评论
    • deleteComment

      public void deleteComment(String owner, String repo, long commentId)
      删除指定评论。

      对应端点: DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      commentId - 评论 ID
    • listEvents

      public Page<IssueEvent> listEvents(String owner, String repo, int issueNumber, PageOptions options)
      列出指定 Issue 的事件。

      对应端点: GET /repos/{owner}/{repo}/issues/{issue_number}/events

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      options - 分页选项(每页数量、页码),可为 null
      Returns:
      分页的事件列表
    • listLabelsOnIssue

      public Page<Label> listLabelsOnIssue(String owner, String repo, int issueNumber)
      列出指定 Issue 上的标签。

      对应端点: GET /repos/{owner}/{repo}/issues/{issue_number}/labels

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      Returns:
      分页的标签列表
    • addLabels

      public void addLabels(String owner, String repo, int issueNumber, List<String> labels)
      为指定 Issue 添加标签。

      对应端点: POST /repos/{owner}/{repo}/issues/{issue_number}/labels

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      labels - 要添加的标签名称列表
    • removeLabel

      public void removeLabel(String owner, String repo, int issueNumber, String label)
      从指定 Issue 移除单个标签。

      对应端点: DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      label - 要移除的标签名称
    • setLabels

      public void setLabels(String owner, String repo, int issueNumber, List<String> labels)
      替换指定 Issue 上的所有标签。

      对应端点: PUT /repos/{owner}/{repo}/issues/{issue_number}/labels

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      labels - 替换后的标签名称列表
    • clearLabels

      public void clearLabels(String owner, String repo, int issueNumber)
      清除指定 Issue 上的所有标签。

      对应端点: DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
    • addAssignees

      public void addAssignees(String owner, String repo, int issueNumber, List<String> assignees)
      为指定 Issue 添加指派人。

      对应端点: POST /repos/{owner}/{repo}/issues/{issue_number}/assignees

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      assignees - 要添加的指派人用户名列表
    • removeAssignees

      public void removeAssignees(String owner, String repo, int issueNumber, List<String> assignees)
      从指定 Issue 移除指派人。

      对应端点: DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      assignees - 要移除的指派人用户名列表
    • lock

      public void lock(String owner, String repo, int issueNumber, String lockReason)
      锁定指定 Issue。

      对应端点: PUT /repos/{owner}/{repo}/issues/{issue_number}/lock

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
      lockReason - 锁定原因(如 "resolved"、"off-topic"、"too heated"、"spam")
    • unlock

      public void unlock(String owner, String repo, int issueNumber)
      解锁指定 Issue。

      对应端点: DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      issueNumber - Issue 编号
    • listMilestones

      public Page<Milestone> listMilestones(String owner, String repo, ListMilestonesOptions options)
      列出指定仓库的里程碑。

      对应端点: GET /repos/{owner}/{repo}/milestones

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      options - 列表选项(状态、排序、方向),可为 null
      Returns:
      分页的里程碑列表
    • getMilestone

      public GithubResponse<Milestone> getMilestone(String owner, String repo, int milestoneNumber)
      获取单个里程碑的详细信息。

      对应端点: GET /repos/{owner}/{repo}/milestones/{milestone_number}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      milestoneNumber - 里程碑编号
      Returns:
      里程碑详情
    • createMilestone

      public GithubResponse<Milestone> createMilestone(String owner, String repo, Map<String,Object> request)
      在指定仓库中创建新里程碑。

      对应端点: POST /repos/{owner}/{repo}/milestones

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      request - 创建里程碑的请求体(标题、状态、描述、截止日期等)
      Returns:
      创建后的里程碑
    • updateMilestone

      public GithubResponse<Milestone> updateMilestone(String owner, String repo, int milestoneNumber, Map<String,Object> request)
      更新指定里程碑。

      对应端点: PATCH /repos/{owner}/{repo}/milestones/{milestone_number}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      milestoneNumber - 里程碑编号
      request - 更新里程碑的请求体(标题、状态、描述、截止日期等)
      Returns:
      更新后的里程碑
    • deleteMilestone

      public void deleteMilestone(String owner, String repo, int milestoneNumber)
      删除指定里程碑。

      对应端点: DELETE /repos/{owner}/{repo}/milestones/{milestone_number}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      milestoneNumber - 里程碑编号
    • listLabelsForRepo

      public Page<Label> listLabelsForRepo(String owner, String repo, PageOptions options)
      列出指定仓库的所有标签。

      对应端点: GET /repos/{owner}/{repo}/labels

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      options - 分页选项(每页数量、页码),可为 null
      Returns:
      分页的标签列表
    • getLabel

      public GithubResponse<Label> getLabel(String owner, String repo, String name)
      获取仓库中单个标签的详细信息。

      对应端点: GET /repos/{owner}/{repo}/labels/{name}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      name - 标签名称
      Returns:
      标签详情
    • createLabel

      public GithubResponse<Label> createLabel(String owner, String repo, Map<String,String> request)
      在指定仓库中创建新标签。

      对应端点: POST /repos/{owner}/{repo}/labels

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      request - 创建标签的请求体(名称、颜色、描述等)
      Returns:
      创建后的标签
    • updateLabel

      public GithubResponse<Label> updateLabel(String owner, String repo, String name, Map<String,String> request)
      更新指定标签。

      对应端点: PATCH /repos/{owner}/{repo}/labels/{name}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      name - 标签名称
      request - 更新标签的请求体(名称、颜色、描述等)
      Returns:
      更新后的标签
    • deleteLabel

      public void deleteLabel(String owner, String repo, String name)
      删除指定标签。

      对应端点: DELETE /repos/{owner}/{repo}/labels/{name}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      name - 标签名称