/// <summary> /// <see cref="Create" /> creates an instance of /// <see cref="HttpClient" />, based on an instance of /// <see cref="NewRelicInsightsMetadata" />. /// </summary> /// <param name="newRelicInsightsMetadata"> /// The /// <see cref="NewRelicInsightsMetadata" /> used to create a /// <see cref="HttpClient" /> instance. /// </param> /// <param name="httpClientHandler"> /// The <see cref="HttpClientHandler" /> that acts /// as an intermediary between <see cref="HttpClient" /> and /// <see cref="NewRelicInsightsMetadata" />, during creation of a /// <see cref="HttpClient" /> instance. /// </param> /// <returns> /// A <see cref="HttpClient" />, based on /// <see cref="NewRelicInsightsMetadata" />. /// </returns> public HttpClient Create(NewRelicInsightsMetadata newRelicInsightsMetadata, out HttpClientHandler httpClientHandler) { HttpClient httpClient; if (newRelicInsightsMetadata.UseWebProxy) { httpClientHandler = new HttpClientHandler { UseProxy = true, Proxy = newRelicInsightsMetadata.WebProxy }; httpClient = new HttpClient(httpClientHandler); } else { httpClientHandler = null; httpClient = new HttpClient(); } if (newRelicInsightsMetadata.UseNonDefaultTimeout) { httpClient.Timeout = newRelicInsightsMetadata.NonDefaultTimeout; } return(httpClient); }
/// <summary> /// <see cref="TryValidate" /> ensures that /// <see cref="newRelicInsightsMetadata" /> /// is instantiated correctly. If any <see cref="NewRelicInsightsMetadata" /> /// properties are not instantiated correctly, the method returns <c>false</c>, /// and outputs a <see cref="NewRelicInsightsMetadataException" />. /// </summary> /// <param name="newRelicInsightsMetadata"> /// The /// <see cref="NewRelicInsightsMetadata" /> instance to validate. /// </param> /// <param name="newRelicInsightsMetadataException"> /// A /// <see cref="NewRelicInsightsMetadataException" />, returned if any /// <see cref="NewRelicInsightsMetadata" /> properties are not instantiated /// correctly. /// </param> /// <returns> /// <c>True</c> if all <see cref="newRelicInsightsMetadata" /> properties are /// instantiated correctly. /// </returns> public static bool TryValidate(NewRelicInsightsMetadata newRelicInsightsMetadata, out NewRelicInsightsMetadataException newRelicInsightsMetadataException) { newRelicInsightsMetadataException = null; if (newRelicInsightsMetadata == null) { newRelicInsightsMetadataException = new NewRelicInsightsMetadataException( "New Relic Insights metadata not specified."); return(false); } if (string.IsNullOrEmpty(newRelicInsightsMetadata.AccountID)) { newRelicInsightsMetadataException = new NewRelicInsightsMetadataException("Invalid Account ID."); return(false); } if (string.IsNullOrEmpty(newRelicInsightsMetadata.APIKey)) { newRelicInsightsMetadataException = new NewRelicInsightsMetadataException("Invalid API key."); return(false); } if (newRelicInsightsMetadata.URI == null) { newRelicInsightsMetadataException = new NewRelicInsightsMetadataException("URI not specified."); return(false); } if (newRelicInsightsMetadata.UseWebProxy && newRelicInsightsMetadata.WebProxy == null) { newRelicInsightsMetadataException = new NewRelicInsightsMetadataException( "UseWebProxy is true, but no proxy is specified."); return(false); } if (newRelicInsightsMetadata.UseNonDefaultTimeout && newRelicInsightsMetadata.NonDefaultTimeout == TimeSpan.Zero) { newRelicInsightsMetadataException = new NewRelicInsightsMetadataException( "UseNonDefaultTimeout is true, but no timeout is specified."); return(false); } return(true); }