using System;
using System.Diagnostics.CodeAnalysis;
using System.Reactive;
namespace Octokit.Reactive
{
public interface IObservableReferencesClient
{
///
/// Gets a reference for a given repository by reference name
///
///
/// http://developer.github.com/v3/git/refs/#get-a-reference
///
/// The owner of the repository
/// The name of the repository
/// The name of the reference
///
[SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get",
Justification = "Method makes a network request")]
IObservable Get(string owner, string name, string reference);
///
/// Gets all references for a given repository
///
///
/// http://developer.github.com/v3/git/refs/#get-all-references
///
/// The owner of the repository
/// The name of the repository
///
IObservable GetAll(string owner, string name);
///
/// Gets references for a given repository by sub-namespace, i.e. "tags" or "heads"
///
///
/// http://developer.github.com/v3/git/refs/#get-all-references
///
/// The owner of the repository
/// The name of the repository
/// The sub-namespace to get references for
///
IObservable GetAllForSubNamespace(string owner, string name, string subNamespace);
///
/// Creates a reference for a given repository
///
///
/// http://developer.github.com/v3/git/refs/#create-a-reference
///
/// The owner of the repository
/// The name of the repository
/// The reference to create
///
IObservable Create(string owner, string name, NewReference reference);
///
/// Updates a reference for a given repository by reference name
///
///
/// http://developer.github.com/v3/git/refs/#update-a-reference
///
/// The owner of the repository
/// The name of the repository
/// The name of the reference
/// The updated reference data
///
IObservable Update(string owner, string name, string reference, ReferenceUpdate referenceUpdate);
///
/// Deletes a reference for a given repository by reference name
///
///
/// http://developer.github.com/v3/git/refs/#delete-a-reference
///
/// The owner of the repository
/// The name of the repository
/// The name of the reference
///
IObservable Delete(string owner, string name, string reference);
}
}