-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Replay #2221: Implement GitHub Actions Secrets API for both Organizat…
…ion and Repository (#2598) * created the interface and models for the repository secrets client * created a repository actions client to sit between repository and secrets for future extensibility * created the repository secret client and supporting objects to enable data transfer * created object for create or update secret body and made fixes to pass unit tests * created repository action unit tests * created unit tests for RepositorySecretsClient * removed set from secrets interface * fixed docs and added observable actions client * added Actions to repository client * created IObservable repository secrets client * fixed property in wrong interface fixed wrong Ctor unit test * created repository decrets reactive tests and clients * created organization actions and scerets classes and made them available through the oprganizations client * fixed intellisense text * removed uneeded getall call after return type change * created organization secret client and classes to support it * created the observable org secrets client and fixed a typo in a method name * added more ensure checks * removed unused xml doc setting * created the unit tests for the organization secrets client fixed broken unit test for repository secrets client * created observable organization actions and secrets client unit tests * added sodium.core to the integration tests to test secret creation * fixed keyid type * added actions client integration test classes (empty since the class currently doesn't have any native methods) * fixed deserialization issue * changed property name for deserialization issues * added doc for repoid on orginzation secrets url generator * created integration tests for repository and organization secrets * changed how return occurs for setting list of repos for secret * fixed some names and removed reset org name * created integration tests for observable org secrets client * removed default org value * created the integration tests for the observable repository secrets client * removed default owner project value * fixed unit tests * Update links to new docs site * Update doc links to new docs site * Update docs links to new docs site * Fix doc link to point to new docs site * Update links to new docs site * Update doc links to new docs site * Update docs links * Update docs * Update docs * Update doc links * Update docs * Update doc links * Update doc links * Update doc links * updated documentation links in actions and secrets clients * Update Octokit/Models/Response/SecretsPublicKey.cs Removing line for consistency. Co-authored-by: Thomas Hughes <[email protected]> * Update Octokit/Models/Response/RepositorySecret.cs Removing line for consistency. Co-authored-by: Thomas Hughes <[email protected]> * set default owner and repo * switched to using the Helper.Organization from a ORG constant set at the top of the file * swapped out variable at top of file for the Helper.Organization property * switched to helper method to create new repositories * Protected setters --> private setters in response models * RepositorySecret needs protected setters Co-authored-by: Mike Tolly <[email protected]> Co-authored-by: Thomas Hughes <[email protected]> Co-authored-by: mptolly-takeda <[email protected]>
- Loading branch information
1 parent
9c5392b
commit 131ba87
Showing
51 changed files
with
3,607 additions
and
3 deletions.
There are no files selected for viewing
23 changes: 23 additions & 0 deletions
23
Octokit.Reactive/Clients/IObservableOrganizationActionsClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Text; | ||
|
||
namespace Octokit.Reactive | ||
{ | ||
/// <summary> | ||
/// A client for GitHub's Org Actions API. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions"> Actions API documentation</a> for more information. | ||
/// </remarks> | ||
public interface IObservableOrganizationActionsClient | ||
{ | ||
/// <summary> | ||
/// Returns a client to manage organization secrets. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#secrets"> Secrets API documentation</a> for more information. | ||
/// </remarks> | ||
IObservableOrganizationSecretsClient Secrets { get; } | ||
} | ||
} |
119 changes: 119 additions & 0 deletions
119
Octokit.Reactive/Clients/IObservableOrganizationSecretsClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
using System; | ||
using System.Reactive; | ||
|
||
namespace Octokit.Reactive | ||
{ | ||
/// <summary> | ||
/// A client for GitHub's Organization Secrets API. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#secrets">Organization Secrets API documentation</a> for more details. | ||
/// </remarks> | ||
public interface IObservableOrganizationSecretsClient | ||
{ | ||
/// <summary> | ||
/// Get the public signing key to encrypt secrets for an organization. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#get-an-organization-public-key">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="SecretsPublicKey"/> instance for the organization public key.</returns> | ||
IObservable<SecretsPublicKey> GetPublicKey(string org); | ||
|
||
/// <summary> | ||
/// List the secrets for an organization. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#list-organization-secrets">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="OrganizationSecretsCollection"/> instance for the list of organization secrets.</returns> | ||
IObservable<OrganizationSecretsCollection> GetAll(string org); | ||
|
||
/// <summary> | ||
/// Get a secret from an organization. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#get-an-organization-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="OrganizationSecret"/> instance for the organization secret.</returns> | ||
IObservable<OrganizationSecret> Get(string org, string secretName); | ||
|
||
/// <summary> | ||
/// Create or update a secret in an organization. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#create-or-update-an-organization-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <param name="upsertSecret">The encrypted value, id of the encryption key, and visibility info to upsert</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="OrganizationSecret"/> instance for the organization secret that was created or updated.</returns> | ||
IObservable<OrganizationSecret> CreateOrUpdate(string org, string secretName, UpsertOrganizationSecret upsertSecret); | ||
|
||
/// <summary> | ||
/// Delete a secret in an organization. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#delete-an-organization-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
IObservable<Unit> Delete(string org, string secretName); | ||
|
||
/// <summary> | ||
/// Get the list of selected sites that have access to a secret. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#list-selected-repositories-for-an-organization-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
IObservable<OrganizationSecretRepositoryCollection> GetSelectedRepositoriesForSecret(string org, string secretName); | ||
|
||
/// <summary> | ||
/// Set the list of selected sites that have access to a secret. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#set-selected-repositories-for-an-organization-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <param name="repositories">The list of repositories that should have access to view and use the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
IObservable<Unit> SetSelectedRepositoriesForSecret(string org, string secretName, SelectedRepositoryCollection repositories); | ||
|
||
/// <summary> | ||
/// Add a selected site to the visibility list of a secret. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#add-selected-repository-to-an-organization-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <param name="repoId">The id of the repo to add to the visibility list of the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
IObservable<Unit> AddRepoToOrganizationSecret(string org, string secretName, long repoId); | ||
|
||
/// <summary> | ||
/// ARemoved a selected site from the visibility list of a secret. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#remove-selected-repository-from-an-organization-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="org">The name of the organization</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <param name="repoId">The id of the repo to add to the visibility list of the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
IObservable<Unit> RemoveRepoFromOrganizationSecret(string org, string secretName, long repoId); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
23 changes: 23 additions & 0 deletions
23
Octokit.Reactive/Clients/IObservableRepositoryActionsClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Text; | ||
|
||
namespace Octokit.Reactive | ||
{ | ||
/// <summary> | ||
/// A client for GitHub's Repository Actions API. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions">Repository Actions API documentation</a> for more details. | ||
/// </remarks> | ||
public interface IObservableRepositoryActionsClient | ||
{ | ||
/// <summary> | ||
/// Client for GitHub's Repository Actions API | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions">Deployments API documentation</a> for more details | ||
/// </remarks> | ||
IObservableRepositorySecretsClient Secrets { get; } | ||
} | ||
} |
79 changes: 79 additions & 0 deletions
79
Octokit.Reactive/Clients/IObservableRepositorySecretsClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Reactive; | ||
using System.Text; | ||
|
||
namespace Octokit.Reactive | ||
{ | ||
/// <summary> | ||
/// A client for GitHub's Repository Secrets API. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="http://developer.github.com/v3/actions/secrets/">Repository Secrets API documentation</a> for more details. | ||
/// </remarks> | ||
public interface IObservableRepositorySecretsClient | ||
{ | ||
/// <summary> | ||
/// Get the public signing key to encrypt secrets for a repository. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#get-a-repository-public-key">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="repoName">The owner of the repository</param> | ||
/// <param name="owner">The name of the repository</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="SecretsPublicKey"/> instance for the repository public key.</returns> | ||
IObservable<SecretsPublicKey> GetPublicKey(string owner, string repoName); | ||
|
||
/// <summary> | ||
/// List the secrets for a repository. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#list-repository-secrets">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="repoName">The owner of the repository</param> | ||
/// <param name="owner">The name of the repository</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="IEnumerable{RepositorySecret}"/> instance for the list of repository secrets.</returns> | ||
IObservable<RepositorySecretsCollection> GetAll(string owner, string repoName); | ||
|
||
/// <summary> | ||
/// Get a secret from a repository. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#get-a-repository-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="repoName">The owner of the repository</param> | ||
/// <param name="owner">The name of the repository</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="RepositorySecret"/> instance for the repository secret.</returns> | ||
IObservable<RepositorySecret> Get(string owner, string repoName, string secretName); | ||
|
||
/// <summary> | ||
/// Create or update a secret in a repository. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#create-or-update-a-repository-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="repoName">The owner of the repository</param> | ||
/// <param name="owner">The name of the repository</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <param name="upsertSecret">The encrypted value and id of the encryption key</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
/// <returns>A <see cref="RepositorySecret"/> instance for the repository secret that was created or updated.</returns> | ||
IObservable<RepositorySecret> CreateOrUpdate(string owner, string repoName, string secretName, UpsertRepositorySecret upsertSecret); | ||
|
||
/// <summary> | ||
/// Delete a secret in a repository. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#delete-a-repository-secret">API documentation</a> for more information. | ||
/// </remarks> | ||
/// <param name="repoName">The owner of the repository</param> | ||
/// <param name="owner">The name of the repository</param> | ||
/// <param name="secretName">The name of the secret</param> | ||
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception> | ||
IObservable<Unit> Delete(string owner, string repoName, string secretName); | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
Octokit.Reactive/Clients/ObservableOrganizationActionsClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Text; | ||
|
||
namespace Octokit.Reactive | ||
{ | ||
/// <summary> | ||
/// A client for GitHub's Org Actions API. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions"> Actions API documentation</a> for more information. | ||
/// </remarks> | ||
public class ObservableOrganizationActionsClient : IObservableOrganizationActionsClient | ||
{ | ||
readonly IOrganizationActionsClient _client; | ||
readonly IConnection _connection; | ||
|
||
/// <summary> | ||
/// Initializes a new Organization API client. | ||
/// </summary> | ||
/// <param name="client">An <see cref="IGitHubClient" /> used to make the requests</param> | ||
public ObservableOrganizationActionsClient(IGitHubClient client) | ||
{ | ||
Ensure.ArgumentNotNull(client, nameof(client)); | ||
|
||
Secrets = new ObservableOrganizationSecretsClient(client); | ||
|
||
_client = client.Organization.Actions; | ||
_connection = client.Connection; | ||
} | ||
|
||
/// <summary> | ||
/// Returns a client to manage organization secrets. | ||
/// </summary> | ||
/// <remarks> | ||
/// See the <a href="https://docs.github.com/en/rest/reference/actions#secrets"> Secrets API documentation</a> for more information. | ||
/// </remarks> | ||
public IObservableOrganizationSecretsClient Secrets { get; private set; } | ||
} | ||
} |
Oops, something went wrong.