Example #1
0
        /// <summary>
        /// Given a ReleaseChannel and a keyName, attempt to load the corresponding ChannelInfo objecvt
        /// </summary>
        /// <param name="releaseChannel">The ReleaseChannel being queried</param>
        /// <param name="channelInfo">Returns the ChannelInfo here</param>
        /// <param name="gitHubWrapper">An optional wrapper to the GitHub data</param>
        /// <param name="keyName">An optional override of the key to use when reading the ChannelInfo data</param>
        /// <param name="exceptionReporter">An optional IExceptionReporter if you want exception details</param>
        /// <returns>true if we found data</returns>
        public static bool TryGetChannelInfo(ReleaseChannel releaseChannel, out ChannelInfo channelInfo, IGitHubWrapper gitHubWrapper, string keyName = "default", IExceptionReporter exceptionReporter = null)
        {
            try
            {
                IGitHubWrapper wrapper = gitHubWrapper ?? new GitHubWrapper(exceptionReporter);
                using (Stream stream = new MemoryStream())
                {
                    wrapper.LoadChannelInfoIntoStream(releaseChannel, stream);
                    channelInfo = GetChannelFromStream(stream, keyName);
                    return(true);
                }
            }
#pragma warning disable CA1031 // Do not catch general exception types
            catch (Exception e)
            {
                if (exceptionReporter != null)
                {
                    exceptionReporter.ReportException(e);
                }
            }
#pragma warning restore CA1031 // Do not catch general exception types

            // Default values
            channelInfo = null;
            return(false);
        }
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="gitHubWrapper">Provides access to GitHub</param>
 /// <param name="exceptionReporter">Provides a way to report exceptions</param>
 public ProductionChannelInfoProvider(IGitHubWrapper gitHubWrapper, IExceptionReporter exceptionReporter)
 {
     _gitHubWrapper     = gitHubWrapper;
     _exceptionReporter = exceptionReporter;
 }
 /// <summary>
 /// Unit test ctor - allows dependency injection for testing
 /// </summary>
 /// <param name="wrapper">Provides GitHub support</param>
 /// <param name="installedVersionProvider">Where to get the installed version</param>
 internal AutoUpdate(IGitHubWrapper wrapper, Func <string> installedVersionProvider)
 {
     _gitHub = wrapper;
     _installedVersionProvider = installedVersionProvider;
     _initTask = Task.Run(() => InitializeWithTimer());
 }