Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }