[FEAT]: Adds codespaces APIs

This commit is contained in:
Alexander Sklar
2023-06-16 10:26:39 -07:00
committed by GitHub
parent 8f0b3a7537
commit da5c4d7d3c
17 changed files with 480 additions and 1 deletions
+80
View File
@@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Octokit
{
/// <summary>
/// A client for GitHub's Codespaces API.
/// Gets and creates Codespaces.
/// </summary>
/// <remarks>
/// See the <a href="https://docs.github.com/en/rest/codespaces/codespaces?apiVersion=2022-11-28">Codespaces API documentation</a> for more information.
/// </remarks>
public class CodespacesClient : ApiClient, ICodespacesClient
{
/// <summary>
/// Instantiates a new GitHub Codespaces API client.
/// </summary>
/// <param name="apiConnection"></param>
public CodespacesClient(IApiConnection apiConnection) : base(apiConnection)
{
}
/// <summary>
/// Returns all the codespaces for the authenticated user.
/// </summary>
/// <returns>A codespaces collection</returns>
[ManualRoute("GET", "/user/codespaces")]
public Task<CodespacesCollection> GetAll()
{
return ApiConnection.Get<CodespacesCollection>(ApiUrls.Codespaces());
}
/// <summary>
/// Returns all the codespaces for the specified repository.
/// </summary>
/// <param name="owner"></param>
/// <param name="repo"></param>
/// <returns>A codespaces collection</returns>
[ManualRoute("GET", "/repos/{owner}/{repo}/codespaces")]
public Task<CodespacesCollection> GetForRepository(string owner, string repo)
{
return ApiConnection.Get<CodespacesCollection>(ApiUrls.CodespacesForRepository(owner, repo));
}
/// <summary>
/// Gets a codespace for the authenticated user.
/// </summary>
/// <param name="codespaceName"></param>
/// <returns>A codespace</returns>
[ManualRoute("GET", "/user/codespaces/{codespace_name}")]
public Task<Codespace> Get(string codespaceName)
{
return ApiConnection.Get<Codespace>(ApiUrls.Codespace(codespaceName));
}
/// <summary>
/// Starts a codespace for the authenticated user.
/// </summary>
/// <param name="codespaceName"></param>
/// <returns></returns>
[ManualRoute("POST", "/user/codespaces/{codespace_name}/start")]
public Task<Codespace> Start(string codespaceName)
{
return ApiConnection.Post<Codespace>(ApiUrls.CodespaceStart(codespaceName));
}
/// <summary>
/// Stops a codespace for the authenticated user.
/// </summary>
/// <param name="codespaceName"></param>
/// <returns></returns>
[ManualRoute("POST", "/user/codespaces/{codespace_name}/stop")]
public Task<Codespace> Stop(string codespaceName)
{
return ApiConnection.Post<Codespace>(ApiUrls.CodespaceStop(codespaceName));
}
}
}