using System; using System.Reactive.Threading.Tasks; namespace Octokit.Reactive { /// /// A client for GitHub's Git Blobs API. /// /// /// See the Git Blobs API documentation for more information. /// public class ObservableBlobClient : IObservableBlobsClient { readonly IBlobsClient _client; public ObservableBlobClient(IGitHubClient client) { Ensure.ArgumentNotNull(client, nameof(client)); _client = client.Git.Blob; } /// /// Gets a single Blob by SHA. /// /// /// http://developer.github.com/v3/git/blobs/#get-a-blob /// /// The owner of the repository /// The name of the repository /// The SHA of the blob public IObservable Get(string owner, string name, string reference) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); Ensure.ArgumentNotNullOrEmptyString(reference, nameof(reference)); return _client.Get(owner, name, reference).ToObservable(); } /// /// Gets a single Blob by SHA. /// /// /// http://developer.github.com/v3/git/blobs/#get-a-blob /// /// The Id of the repository /// The SHA of the blob public IObservable Get(long repositoryId, string reference) { Ensure.ArgumentNotNullOrEmptyString(reference, nameof(reference)); return _client.Get(repositoryId, reference).ToObservable(); } /// /// Creates a new Blob /// /// /// http://developer.github.com/v3/git/blobs/#create-a-blob /// /// The owner of the repository /// The name of the repository /// The new Blob public IObservable Create(string owner, string name, NewBlob newBlob) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); Ensure.ArgumentNotNull(newBlob, nameof(newBlob)); return _client.Create(owner, name, newBlob).ToObservable(); } /// /// Creates a new Blob /// /// /// http://developer.github.com/v3/git/blobs/#create-a-blob /// /// The Id of the repository /// The new Blob public IObservable Create(long repositoryId, NewBlob newBlob) { Ensure.ArgumentNotNull(newBlob, nameof(newBlob)); return _client.Create(repositoryId, newBlob).ToObservable(); } } }