Skip to content

Commit

Permalink
Merge pull request #1141 from devkhan/migrations-client
Browse files Browse the repository at this point in the history
Migrations API support
  • Loading branch information
ryangribble committed May 24, 2016
2 parents 26cc074 + 05bdbab commit 308234c
Show file tree
Hide file tree
Showing 32 changed files with 1,447 additions and 7 deletions.
13 changes: 13 additions & 0 deletions Octokit.Reactive/Clients/IObservableMigrationClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace Octokit.Reactive
{
public interface IObservableMigrationClient
{
/// <summary>
/// A client for GitHub's Migrations API
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/migration/migrations/">Enterprise License API documentation</a> for more information.
/// </remarks>
IObservableMigrationsClient Migrations { get; }
}
}
97 changes: 97 additions & 0 deletions Octokit.Reactive/Clients/IObservableMigrationsClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Reactive;

namespace Octokit.Reactive
{
/// <summary>
/// An interface for GitHub's Migrations API client.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/migration/migrations/">docs</a>
/// for more information.
/// </remarks>
public interface IObservableMigrationsClient
{
/// <summary>
/// Starts a new migration specified for the given organization.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#start-a-migration
/// </remarks>
/// <param name="org">The organization for which to start a migration.</param>
/// <param name="migration">Sprcifies parameters for the migration in a
/// <see cref="StartMigrationRequest"/> object.</param>
/// <returns>The started migration.</returns>
IObservable<Migration> Start(
string org,
StartMigrationRequest migration);

/// <summary>
/// Gets the list of the most recent migrations of the the organization.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#get-a-list-of-migrations
/// </remarks>
/// <param name="org">The organization of which to list migrations.</param>
/// <returns>List of most recent <see cref="Migration"/>s.</returns>
IObservable<List<Migration>> GetAll(
string org);

/// <summary>
/// Get the status of a migration.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#get-the-status-of-a-migration
/// </remarks>
/// <param name="org">The organization which is migrating.</param>
/// <param name="id">Migration ID of the organization.</param>
/// <returns>A <see cref="Migration"/> object representing the state of migration.</returns>
[SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get")]
IObservable<Migration> Get(
string org,
int id);

/// <summary>
/// Get the migration archive.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#download-a-migration-archive
/// </remarks>
/// <param name="org">The organization of which the migration was.</param>
/// <param name="id">The ID of the migration.</param>
/// <returns>The binary contents of the archive as a byte array.</returns>
IObservable<byte[]> GetArchive(
string org,
int id);

/// <summary>
/// Deletes a previous migration archive.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#delete-a-migration-archive
/// </remarks>
/// <param name="org">The organization of which the migration was.</param>
/// <param name="id">The ID of the migration.</param>
/// <returns></returns>
IObservable<Unit> DeleteArchive(
string org,
int id);

/// <summary>
/// Unlocks a repository that was locked for migration.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#unlock-a-repository
/// </remarks>
/// <param name="org">The organization of which the migration was.</param>
/// <param name="id">The ID of the migration.</param>
/// <param name="repo">The repo to unlock.</param>
/// <returns></returns>
IObservable<Unit> UnlockRepository(
string org,
int id,
string repo);
}
}
20 changes: 20 additions & 0 deletions Octokit.Reactive/Clients/ObservableMigrationClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace Octokit.Reactive
{
public class ObservableMigrationClient : IObservableMigrationClient
{
public ObservableMigrationClient(IGitHubClient client)
{
Ensure.ArgumentNotNull(client, "client");

Migrations = new ObservableMigrationsClient(client);
}

/// <summary>
/// A client for GitHub's Enterprise Migrations API.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/#enterprise-migrations
/// </remarks>
public IObservableMigrationsClient Migrations { get; private set; }
}
}
115 changes: 115 additions & 0 deletions Octokit.Reactive/Clients/ObservableMigrationsClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
using System;
using System.Collections.Generic;
using System.Reactive;
using System.Reactive.Threading.Tasks;

namespace Octokit.Reactive
{
/// <summary>
/// An interface for GitHub's Migrations API client.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/migration/migrations/">docs</a>
/// for more information.
/// </remarks>
public class ObservableMigrationsClient : IObservableMigrationsClient
{
private readonly IMigrationsClient _client;

/// <summary>
/// Instantiates a GitHub Migrations API client.
/// </summary>
/// <param name="client">An <see cref="IGitHubClient"/> for making requests.</param>
public ObservableMigrationsClient(IGitHubClient client)
{
Ensure.ArgumentNotNull(client, "client");

_client = client.Migration.Migrations;
}

/// <summary>
/// Starts a new migration specified for the given organization.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#start-a-migration
/// </remarks>
/// <param name="org">The organization for which to start a migration.</param>
/// <param name="migration">Sprcifies parameters for the migration in a
/// <see cref="StartMigrationRequest"/> object.</param>
/// <returns>The started migration.</returns>
public IObservable<Migration> Start(string org, StartMigrationRequest migration)
{
return _client.Start(org, migration).ToObservable();
}

/// <summary>
/// Gets the list of the most recent migrations of the the organization.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#get-a-list-of-migrations
/// </remarks>
/// <param name="org">The organization of which to list migrations.</param>
/// <returns>List of most recent <see cref="Migration"/>s.</returns>
public IObservable<List<Migration>> GetAll(string org)
{
return _client.GetAll(org).ToObservable();
}

/// <summary>
/// Get the status of a migration
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#get-the-status-of-a-migration
/// </remarks>
/// <param name="org">The organization which is migrating.</param>
/// <param name="id">Migrations ID of the organization.</param>
/// <returns>A <see cref="Migration"/> object representing the state of migration.</returns>
public IObservable<Migration> Get(string org, int id)
{
return _client.Get(org, id).ToObservable();
}

/// <summary>
/// Get the migration archive.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#download-a-migration-archive
/// </remarks>
/// <param name="org">The organization of which the migration was.</param>
/// <param name="id">The ID of the migration.</param>
/// <returns>The binary contents of the archive as a byte array.</returns>
public IObservable<byte[]> GetArchive(string org, int id)
{
return _client.GetArchive(org, id).ToObservable();
}

/// <summary>
/// Deletes a previous migration archive.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#delete-a-migration-archive
/// </remarks>
/// <param name="org">The organization of which the migration was.</param>
/// <param name="id">The ID of the migration.</param>
/// <returns></returns>
public IObservable<Unit> DeleteArchive(string org, int id)
{
return _client.DeleteArchive(org, id).ToObservable();
}

/// <summary>
/// Unlocks a repository that was locked for migration.
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/migration/migrations/#unlock-a-repository
/// </remarks>
/// <param name="org">The organization of which the migration was.</param>
/// <param name="id">The ID of the migration.</param>
/// <param name="repo">The repo to unlock.</param>
/// <returns></returns>
public IObservable<Unit> UnlockRepository(string org, int id, string repo)
{
return _client.UnlockRepository(org, id, repo).ToObservable();
}
}
}
1 change: 1 addition & 0 deletions Octokit.Reactive/IObservableGitHubClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ public interface IObservableGitHubClient : IApiInfoProvider
IObservableGitDatabaseClient GitDatabase { get; }
IObservableSearchClient Search { get; }
IObservableEnterpriseClient Enterprise { get; }
IObservableMigrationClient Migration { get; }
}
}
2 changes: 2 additions & 0 deletions Octokit.Reactive/ObservableGitHubClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public ObservableGitHubClient(IGitHubClient gitHubClient)
Gist = new ObservableGistsClient(gitHubClient);
Search = new ObservableSearchClient(gitHubClient);
Enterprise = new ObservableEnterpriseClient(gitHubClient);
Migration = new ObservableMigrationClient(gitHubClient);
}

public IConnection Connection
Expand All @@ -72,6 +73,7 @@ public IConnection Connection
public IObservableGitDatabaseClient Git { get; private set; }
public IObservableSearchClient Search { get; private set; }
public IObservableEnterpriseClient Enterprise { get; private set; }
public IObservableMigrationClient Migration { get; private set; }

/// <summary>
/// Gets the latest API Info - this will be null if no API calls have been made
Expand Down
4 changes: 4 additions & 0 deletions Octokit.Reactive/Octokit.Reactive-Mono.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,10 @@
<Compile Include="Clients\Enterprise\ObservableEnterpriseSearchIndexingClient.cs" />
<Compile Include="Clients\Enterprise\IObservableEnterpriseLdapClient.cs" />
<Compile Include="Clients\Enterprise\ObservableEnterpriseLdapClient.cs" />
<Compile Include="Clients\IObservableMigrationClient.cs" />
<Compile Include="Clients\IObservableMigrationsClient.cs" />
<Compile Include="Clients\ObservableMigrationClient.cs" />
<Compile Include="Clients\ObservableMigrationsClient.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
Expand Down
4 changes: 4 additions & 0 deletions Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,10 @@
<Compile Include="Clients\Enterprise\ObservableEnterpriseSearchIndexingClient.cs" />
<Compile Include="Clients\Enterprise\IObservableEnterpriseLdapClient.cs" />
<Compile Include="Clients\Enterprise\ObservableEnterpriseLdapClient.cs" />
<Compile Include="Clients\IObservableMigrationClient.cs" />
<Compile Include="Clients\IObservableMigrationsClient.cs" />
<Compile Include="Clients\ObservableMigrationClient.cs" />
<Compile Include="Clients\ObservableMigrationsClient.cs" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />
<ItemGroup>
Expand Down
4 changes: 4 additions & 0 deletions Octokit.Reactive/Octokit.Reactive-Monotouch.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,10 @@
<Compile Include="Clients\Enterprise\ObservableEnterpriseSearchIndexingClient.cs" />
<Compile Include="Clients\Enterprise\IObservableEnterpriseLdapClient.cs" />
<Compile Include="Clients\Enterprise\ObservableEnterpriseLdapClient.cs" />
<Compile Include="Clients\IObservableMigrationClient.cs" />
<Compile Include="Clients\IObservableMigrationsClient.cs" />
<Compile Include="Clients\ObservableMigrationClient.cs" />
<Compile Include="Clients\ObservableMigrationsClient.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
Expand Down
4 changes: 4 additions & 0 deletions Octokit.Reactive/Octokit.Reactive.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,18 @@
<Compile Include="Clients\Enterprise\ObservableEnterpriseSearchIndexingClient.cs" />
<Compile Include="Clients\Enterprise\ObservableEnterpriseOrganizationClient.cs" />
<Compile Include="Clients\Enterprise\ObservableEnterpriseLicenseClient.cs" />
<Compile Include="Clients\IObservableMigrationsClient.cs" />
<Compile Include="Clients\IObservableMergingClient.cs" />
<Compile Include="Clients\IObservableMigrationClient.cs" />
<Compile Include="Clients\IObservableOauthClient.cs" />
<Compile Include="Clients\IObservableRepositoryCommitsClients.cs" />
<Compile Include="Clients\IObservableRepositoryDeployKeysClient.cs" />
<Compile Include="Clients\IObservableRepositoryPagesClient.cs" />
<Compile Include="Clients\IObservableUserAdministrationClient.cs" />
<Compile Include="Clients\IObservableUserKeysClient.cs" />
<Compile Include="Clients\ObservableMigrationsClient.cs" />
<Compile Include="Clients\ObservableMergingClient.cs" />
<Compile Include="Clients\ObservableMigrationClient.cs" />
<Compile Include="Clients\ObservableRepositoryDeployKeysClient.cs" />
<Compile Include="Clients\ObservableOauthClient.cs" />
<Compile Include="Clients\IObservableRepositoryContentsClient.cs" />
Expand Down
Loading

0 comments on commit 308234c

Please sign in to comment.