using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using gehGassi.Pwned.Models;
namespace gehGassi.Pwned
{
///
/// Ein Client der mit der Pwned API kommuniziert um Passwörter zu prüfen
///
public interface IPwnedBreachService
{
///
/// via DI.
///
HttpClient Client { get; }
///
/// Returns full or short breach information about compromised email account.
///
/// An email address of the compromised user.
/// Default is false, unverified breaches.
/// Filters breaches that have been flagged as "unverified".
/// By default, only verified breaches are returned web performing a search.
///
/// Default is true and returns a full set of data about the breach.
/// Filters the result set to only breaches against the domain specified.
/// It is possible that one site (and consequently domain), is compromised on multiple occasions.
///
///
Task> GetBreachesByAccountAsync(string emailAccount, bool unVerified = false, bool fullResponse = true, string domain = "", CancellationToken token = default);
///
/// A "breach" is an instance of a system having been compromised by an attacker and the data disclosed.
/// For example, Adobe was a breach, Gawker was a breach etc.
/// It is possible to return the details of each of breach in the system which currently stands at 300 breaches.
///
///
/// Filters the result set to only breaches against the domain specified.
/// It is possible that one site (and consequently domain), is compromised on multiple occasions.
///
///
///
Task> GetAllBreachesAsync(string domain = "", CancellationToken token = default);
///
/// A "data class" is an attribute of a record compromised in a breach.
/// For example, many breaches expose data classes such as "Email addresses" and "Passwords".
/// The values returned by this service are ordered alphabetically in a string array
/// and will expand over time as new breaches expose previously unseen classes of data.
///
///
///
Task> GetAllDataClassesAsync(CancellationToken token = default);
///
/// Unlike searching for breaches, usernames that are not email addresses cannot be searched for.
///
///
///
///
Task> GetPastByAccountAsync(string emailAccount, CancellationToken token = default);
}
}