namespace BlueLaminate.Scraper.Proxies; /// /// A concrete, ready-to-use proxy endpoint handed back by an /// . This is the only proxy type a consumer ever /// sees, so swapping providers (or mixing several in a grab-bag) never touches /// the calling code. and are the /// literal credentials to present to the gateway — for providers like IPRoyal /// the targeting/session parameters are already baked into them. /// /// Gateway host, e.g. "geo.iproyal.com". /// Gateway port, e.g. 12321. /// Credential username for the gateway. /// Credential password (may carry encoded session/geo params). /// Name of the provider that issued this lease. /// The sticky session key, if this is a pinned IP. /// When a sticky IP may be recycled; null if rotating/unbounded. public sealed record ProxyLease( string Host, int Port, string Username, string Password, string Provider, string? SessionId = null, DateTimeOffset? ExpiresAt = null) { /// "host:port" form used by browser proxy settings. public string Endpoint => $"{Host}:{Port}"; }