/// <summary> /// Registers an HTTP request interception, replacing any existing registration. /// </summary> /// <param name="builder">The <see cref="HttpRequestInterceptionBuilder"/> to use to create the registration.</param> /// <returns> /// The current <see cref="HttpClientInterceptorOptions"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="builder"/> is <see langword="null"/>. /// </exception> public HttpClientInterceptorOptions Register(HttpRequestInterceptionBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } HttpInterceptionResponse interceptor = builder.Build(); ConfigureMatcherAndRegister(interceptor); return(this); }
/// <summary> /// Deregisters an existing HTTP request interception, if it exists. /// </summary> /// <param name="builder">The HTTP interception to deregister.</param> /// <returns> /// The current <see cref="HttpClientInterceptorOptions"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="builder"/> is <see langword="null"/>. /// </exception> /// <remarks> /// If <paramref name="builder"/> has been reconfigured since it was used /// to register a previous HTTP request interception it will not remove that /// registration. In such cases, use <see cref="Clear"/>. /// </remarks> public HttpClientInterceptorOptions Deregister(HttpRequestInterceptionBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } HttpInterceptionResponse interceptor = builder.Build(); string key = BuildKey(interceptor); _mappings.Remove(key); return(this); }