/// <summary> /// Adds zero or more URL prefixes. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="urlPrefixes">An enumeration of URL prefixes to add.</param> /// <returns><paramref name="this"/> with every non-<see langword="null"/> element /// of <paramref name="urlPrefixes"/> added.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <exception cref="ArgumentNullException"><paramref name="urlPrefixes"/> is <see langword="null"/>.</exception> /// <exception cref="ArgumentException"> /// <para>One or more of the elements of <paramref name="urlPrefixes"/> is the empty string.</para> /// <para>- or -</para> /// <para>One or more of the elements of <paramref name="urlPrefixes"/> is already registered.</para> /// </exception> public static WebServerOptions WithUrlPrefixes(this WebServerOptions @this, IEnumerable <string> urlPrefixes) { foreach (var urlPrefix in Validate.NotNull(nameof(urlPrefixes), urlPrefixes)) { @this.AddUrlPrefix(urlPrefix); } return(@this); }
/// <summary> /// Sets the type of HTTP listener to <see cref="HttpListenerMode.EmbedIO"/>. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.Mode">Mode</see> property /// set to <see cref="HttpListenerMode.EmbedIO"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> public static WebServerOptions WithEmbedIOHttpListener(this WebServerOptions @this) { @this.Mode = HttpListenerMode.EmbedIO; return(@this); }
/// <summary> /// Sets the type of HTTP listener. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="value">The type of HTTP listener.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.Mode">Mode</see> property /// set to <paramref name="value"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> public static WebServerOptions WithMode(this WebServerOptions @this, HttpListenerMode value) { @this.Mode = value; return(@this); }
/// <summary> /// Adds zero or more URL prefixes. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="urlPrefixes">An array of URL prefixes to add.</param> /// <returns><paramref name="this"/> with every non-<see langword="null"/> element /// of <paramref name="urlPrefixes"/> added.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <exception cref="ArgumentNullException"><paramref name="urlPrefixes"/> is <see langword="null"/>.</exception> /// <exception cref="ArgumentException"> /// <para>One or more of the elements of <paramref name="urlPrefixes"/> is the empty string.</para> /// <para>- or -</para> /// <para>One or more of the elements of <paramref name="urlPrefixes"/> is already registered.</para> /// </exception> public static WebServerOptions WithUrlPrefixes(this WebServerOptions @this, params string[] urlPrefixes) => WithUrlPrefixes(@this, urlPrefixes as IEnumerable <string>);
/// <summary> /// Sets the name and location of the X.509 certificate store where to load the certificate from. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="name">One of the <see cref="StoreName"/> constants.</param> /// <param name="location">One of the <see cref="StoreLocation"/> constants.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.StoreName">StoreName</see> property /// set to <paramref name="name"/> and its <see cref="WebServerOptions.StoreLocation">StoreLocation</see> property /// set to <paramref name="location"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <seealso cref="StoreName"/> /// <seealso cref="StoreLocation"/> public static WebServerOptions WithStore(this WebServerOptions @this, StoreName name, StoreLocation location) { @this.StoreName = name; @this.StoreLocation = location; return(@this); }
/// <summary> /// Adds a URL prefix. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="urlPrefix">The URL prefix.</param> /// <returns><paramref name="this"/> with <paramref name="urlPrefix"/> added.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <exception cref="ArgumentNullException"><paramref name="urlPrefix"/> is <see langword="null"/>.</exception> /// <exception cref="ArgumentException"> /// <para><paramref name="urlPrefix"/> is the empty string.</para> /// <para>- or -</para> /// <para><paramref name="urlPrefix"/> is already registered.</para> /// </exception> public static WebServerOptions WithUrlPrefix(this WebServerOptions @this, string urlPrefix) { @this.AddUrlPrefix(urlPrefix); return(@this); }
/// <summary> /// Sets a value indicating the location of the X.509 certificate store where to load the certificate from. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="value">One of the <see cref="StoreLocation"/> constants.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.StoreLocation">StoreLocation</see> property /// set to <paramref name="value"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <seealso cref="StoreLocation"/> public static WebServerOptions WithStoreLocation(this WebServerOptions @this, StoreLocation value) { @this.StoreLocation = value; return(@this); }
/// <summary> /// Instructs a <see cref="WebServerOptions"/> instance to not bind the X.509 certificate automatically. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.AutoRegisterCertificate">AutoRegisterCertificate</see> property /// set to <see langword="false"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> public static WebServerOptions WithoutAutoRegisterCertificate(this WebServerOptions @this) { @this.AutoRegisterCertificate = false; return(@this); }
/// <summary> /// Sets a value indicating the X.509 certificate store where to load the certificate from. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="value">One of the <see cref="StoreName"/> constants.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.StoreName">StoreName</see> property /// set to <paramref name="value"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <seealso cref="StoreName"/> public static WebServerOptions WithStoreName(this WebServerOptions @this, StoreName value) { @this.StoreName = value; return(@this); }
/// <summary> /// Sets a value indicating whether to automatically bind the X.509 certificate /// to the port used for HTTPS. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="value">If <see langword="true"/>, automatically bind the X.509 certificate /// to the port used for HTTPS.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.AutoRegisterCertificate">AutoRegisterCertificate</see> property /// set to <paramref name="value"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <exception cref="PlatformNotSupportedException"><paramref name="value "/> is <see langword="true"/> /// and the underlying operating system is not Windows.</exception> public static WebServerOptions WithAutoRegisterCertificate(this WebServerOptions @this, bool value) { @this.AutoRegisterCertificate = value; return(@this); }
/// <summary> /// Instructs a <see cref="WebServerOptions"/> instance to automatically load the X.509 certificate. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.AutoLoadCertificate">AutoLoadCertificate</see> property /// set to <see langword="true"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> /// <exception cref="PlatformNotSupportedException">The underlying operating system is not Windows.</exception> public static WebServerOptions WithAutoLoadCertificate(this WebServerOptions @this) { @this.AutoLoadCertificate = true; return(@this); }
/// <summary> /// Sets the thumbprint of the X.509 certificate to use for SSL connections. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="value">The thumbprint of the X.509 certificate to use for SSL connections.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.CertificateThumbprint">CertificateThumbprint</see> property /// set to <paramref name="value"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> public static WebServerOptions WithCertificateThumbprint(this WebServerOptions @this, string value) { @this.CertificateThumbprint = value; return(@this); }
/// <summary> /// Sets the X.509 certificate to use for SSL connections. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <param name="value">The X.509 certificate to use for SSL connections.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.Certificate">Certificate</see> property /// set to <paramref name="value"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> public static WebServerOptions WithCertificate(this WebServerOptions @this, X509Certificate2 value) { @this.Certificate = value; return(@this); }
/// <summary> /// Sets the type of HTTP listener to <see cref="HttpListenerMode.Microsoft"/>. /// </summary> /// <param name="this">The <see cref="WebServerOptions"/> on which this method is called.</param> /// <returns><paramref name="this"/> with its <see cref="WebServerOptions.Mode">Mode</see> property /// set to <see cref="HttpListenerMode.Microsoft"/>.</returns> /// <exception cref="NullReferenceException"><paramref name="this"/> is <see langword="null"/>.</exception> /// <exception cref="InvalidOperationException">The configuration of <paramref name="this"/> is locked.</exception> public static WebServerOptions WithMicrosoftHttpListener(this WebServerOptions @this) { @this.Mode = HttpListenerMode.Microsoft; return(@this); }