📜  如何找到 github 问题的关闭日期 - C# (1)

📅  最后修改于: 2023-12-03 15:24:46.885000             🧑  作者: Mango

如何找到 GitHub 问题的关闭日期 - C#

如果你是一个开发者,那么你可能经常使用 GitHub 来管理你的项目。在 GitHub 上,你可以创建问题(issue)来跟踪和管理你项目中的 bug、功能请求等事项。当问题已经得到解决或者不再需要讨论的时候,你可以关闭这个问题。

但是,有时候你可能想知道这个问题何时被关闭。在这篇文章中,我们将介绍如何使用 C# 语言找到 GitHub 问题的关闭日期。

使用 GitHub GraphQL API

GitHub 提供了一个 GraphQL API,通过这个 API 可以获取到关于 GitHub 上的各种信息,包括问题的信息。我们可以使用 C# 编写程序来调用这个 API,从而获取问题的关闭日期。

以下是一个基本的 C# 程序,用于调用 GitHub GraphQL API 并获取一个问题的关闭日期:

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using Newtonsoft.Json.Linq;

class Program
{
    static async System.Threading.Tasks.Task Main(string[] args)
    {
        // 定义查询字符串,并将 {OWNER}、{REPO} 和 {ISSUE_NUMBER} 替换为实际的值
        string query = @"
        {
            repository(owner: '{OWNER}', name: '{REPO}') {
                issue(number: {ISSUE_NUMBER}) {
                    closedAt
                }
            }
        }
        ";
        query = query.Replace("{OWNER}", "your-username")
                     .Replace("{REPO}", "your-repository")
                     .Replace("{ISSUE_NUMBER}", "123");

        // 创建 HttpClient 对象,并设置 GitHub API 的请求头
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("User-Agent", "GitHubAPI (C#)");

            // 构造 HTTP POST 请求的内容
            var content = new StringContent("{\"query\": \"" + query.Replace("\"", "\\\"") + "\"}", Encoding.UTF8, "application/json");

            // 发送 HTTP POST 请求,并从响应中获取关闭日期信息
            var response = await client.PostAsync("https://api.github.com/graphql", content);
            var result = await response.Content.ReadAsStringAsync();
            var data = JObject.Parse(result)["data"];
            var closedAt = (DateTime?)data?["repository"]?["issue"]?["closedAt"];

            // 输出关闭日期信息
            if (closedAt != null)
            {
                Console.WriteLine($"This issue was closed at: {closedAt}");
            }
            else
            {
                Console.WriteLine("This issue is not closed yet.");
            }
        }
    }
}

使用这个程序,你需要将 {OWNER}{REPO}{ISSUE_NUMBER} 替换为实际的值,然后执行程序即可。

总结

本文介绍了如何使用 C# 语言找到 GitHub 问题的关闭日期。通过使用 GitHub GraphQL API,我们可以轻松地获取问题的关闭日期信息,从而更好地管理和跟踪我们的项目。