コード例 #1
0
        /// <summary>
        /// Performs an update to the value if necessary.
        /// </summary>
        public void Update()
        {
            CheckAccess();

            if (HasExpired)
            {
                try
                {
                    if (_updater != null)
                    {
                        Value = _updater.Invoke();
                    }
                }
                catch (Exception ex)
                {
                    if (UpdateErrorCallback == null && UpdateError == null)
                    {
                        throw;
                    }
                    else
                    {
                        UpdateErrorCallback?.Invoke(this, new UpdateErrorEventArgs(ex));
                        UpdateError?.Invoke(this, new UpdateErrorEventArgs(ex));
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Does the update.
        /// </summary>
        public void Update()
        {
            InProgress = true;

            var i   = 0d;
            var cnt = Database.TVShows.Values.Count(s => s.Airing);
            var ids = Database.TVShows.Values.Where(s => s.Airing).OrderBy(s => s.Title).Select(s => s.ID).ToList();

            foreach (var id in ids)
            {
                UpdateProgressChanged.Fire(this, Database.TVShows[id].Title, ++i / cnt * 100);

                var tv = Database.Update(Database.TVShows[id], (e, s) =>
                {
                    if (e == -1)
                    {
                        UpdateError.Fire(this, s, null, true, false);
                    }
                });

                if (tv != null && tv.Language == "en")
                {
                    UpdateRemoteCache(tv);
                }
            }

            Database.Setting("update", DateTime.Now.ToUnixTimestamp().ToString());
            MainWindow.Active.DataChanged();
            UpdateDone.Fire(this);

            InProgress = false;
        }
コード例 #3
0
ファイル: AssetsUpdater.cs プロジェクト: vinhphu3000/unitylib
 protected void TriggerUpdating(UpdateSegment segment, UpdateError err, string msg, float percent)
 {
     if (OnUpdating != null)
     {
         OnUpdating(segment, err, msg, percent);
     }
 }
コード例 #4
0
ファイル: BaseAPI.cs プロジェクト: UtahJazz/shelltwit
        public static async Task <T> GetData <T>(HttpRequestMessage reqMsg)
        {
            HttpResponseMessage response = await Util.Client.SendAsync(reqMsg);

            Stream stream = await response.Content.ReadAsStreamAsync();

            if (!response.IsSuccessStatusCode)
            {
                UpdateError err = null;
                Stream      aux = new MemoryStream();
                stream.CopyTo(aux);
                stream.Position = 0;
                aux.Position    = 0;
                try
                {
                    err = Util.Deserialize <UpdateError>(stream);
                }
                catch (Exception)
                {
                    string strData;
                    using (StreamReader reader = new StreamReader(aux))
                        strData = reader.ReadToEnd();

                    throw new Exception($"{response.StatusCode}:{strData}");
                }

                throw new Exception(err.ToString());
            }

            return(Util.Deserialize <T>(stream));
        }
コード例 #5
0
        public void ExecuteUpdate()
        {
            _downloadWorker = new BackgroundWorker()
            {
                WorkerSupportsCancellation = true,
                WorkerReportsProgress      = true
            };

            _downloadWorker.DoWork += (s, e) =>
            {
                var fileRequest  = WebRequest.Create(Manifest.PackageUrl);
                var fileResponse = fileRequest.GetResponse();

                InstallerPath = Path.GetTempPath() + @"\" + GetFilenameFromUrl(Manifest.PackageUrl);
                using (var stream = fileResponse.GetResponseStream())
                {
                    ReadStreamToFile(stream, InstallerPath, (int)fileResponse.ContentLength);
                }

                if (_downloadWorker.CancellationPending)
                {
                    e.Cancel = true;
                }
                else
                {
                    CheckSignature(InstallerPath);     // will throw on error
                }
            };

            _downloadWorker.RunWorkerCompleted += (s, e) =>
            {
                if (e.Cancelled)
                {
                    Logger.Warn("update cancelled");
                    UpdateComplete?.Invoke(this, EventArgs.Empty);
                }
                else if (e.Error != null)
                {
                    Logger.WarnException("an error occured processing update", e.Error);
                    UpdateError?.Invoke(e.Error, EventArgs.Empty);
                }
                else
                {
                    Process.Start(InstallerPath);
                    Thread.Sleep(2000);
                    UpdateComplete?.Invoke(this, EventArgs.Empty);
                    App.Shutdown();
                }
            };

            _downloadWorker.ProgressChanged += (s, e) =>
            {
                ProgressUpdate?.Invoke(e.ProgressPercentage);
            };

            _downloadWorker.RunWorkerAsync();
        }
コード例 #6
0
        public void can_create_an_error_result_for_a_single_error()
        {
            var error  = new UpdateError();
            var result = UpdateResult <object> .WasError(error);


            result
            .Match(
                success: value => Assert.False(true),
                notFound: () => Assert.False(true),
                error: errors => Assert.True(errors.Contains(error))
                );
        }
コード例 #7
0
 /// <summary>
 /// Does the update asynchronously.
 /// </summary>
 public void UpdateAsync()
 {
     Task.Factory.StartNew(() =>
     {
         try
         {
             Update();
         }
         catch (Exception ex)
         {
             UpdateError.Fire(this, "The update function has quit with an exception.", ex, false, true);
         }
     });
 }
コード例 #8
0
        static void Main(string[] args)
        {
            try
            {
                //Debug.Assert(false, "Attach VS here!");

                //http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx
                //AppDomain.CurrentDomain.AssemblyResolve += (sender, arg) => {
                //	string resourceName = "AssemblyLoadingAndReflection." +
                //	new AssemblyName(arg.Name).Name + ".dll";

                //	using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) {
                //		Byte[] assemblyData = new Byte[stream.Length];
                //		stream.Read(assemblyData, 0, assemblyData.Length);
                //		return Assembly.Load(assemblyData);
                //	}
                //};

                shelltwitlib.API.OAuth.OAuthHelper.Initilize(CONSUMER_KEY, CONSUMER_SECRET);
                shelltwitlib.API.Tweets.Update.SetMessageAction(message => Console.WriteLine(message));

                if (args.Length == 0)
                {
                    PrintTwits(shelltwitlib.API.Tweets.Timeline.GetTimeline());
                    return;
                }


                if (args[0].StartsWith("/"))
                {
                    string flag = args[0].ToLower().Trim();
                    switch (flag)
                    {
                    case CLEAR:
                        TwUser.ClearCredentials();
                        Console.WriteLine("User credentials cleared!");
                        return;

                    case HELP:
                        ShowUsage();
                        return;

                    case TIME_LINE:
                        PrintTwits(shelltwitlib.API.Tweets.Timeline.GetTimeline());
                        return;

                    case MENTIONS:
                        PrintTwits(shelltwitlib.API.Tweets.Mentions.GetMentions());
                        return;

                    default:
                        Console.WriteLine("Invalid flag: " + flag);
                        ShowUsage();
                        return;
                    }
                }

                if (args[0].StartsWith("\\"))
                {
                    Console.WriteLine("Really? do you really wanna twit that?. [T]wit, or [N]o sorry, I messed up...");
                    ConsoleKeyInfo input = Console.ReadKey();
                    while (input.Key != ConsoleKey.T && input.Key != ConsoleKey.N)
                    {
                        Console.WriteLine();
                        Console.WriteLine("[T]wit, or [N]o sorry, I messed up...");
                        input = Console.ReadKey();
                    }
                    Console.WriteLine();

                    if (input.Key == ConsoleKey.N)
                    {
                        Console.WriteLine("That's what I thought! ;)");
                        return;
                    }
                }

                shelltwitlib.API.OAuth.OAuthHelper.Initilize(CONSUMER_KEY, CONSUMER_SECRET);
                string status   = BitLyHelper.Util.GetShortenString(args);
                string response = shelltwitlib.API.Tweets.Update.UpdateStatus(status);

                if (response != "OK")
                {
                    Console.WriteLine("Response was not OK: " + response);
                }
                //ConsoleWriter.WriteWarning("Response was not OK: " + response);
            }
            catch (WebException wex)
            {
                //ConsoleWriter.WriteError(wex.Message);
                Console.WriteLine(wex.Message);

                HttpWebResponse res = (HttpWebResponse)wex.Response;
                if (res != null)
                {
                    UpdateError errors = UpdateError.GetFromStream(res.GetResponseStream());
                    errors.Errors.ForEach(e => Console.WriteLine(e.ToString()) /* ConsoleWriter.WriteWarning(e.ToString())*/);
                }
            }
            catch (Exception ex)
            {
                //ConsoleWriter.WriteError(ex.Message);
                Console.WriteLine(ex.Message);
            }
            finally
            {
#if DEBUG
                if (Debugger.IsAttached)
                {
                    //ConsoleWriter.WriteWarning("Press <enter> to exit...");
                    Console.WriteLine("Press <enter> to exit...");
                    Console.ReadLine();
                }
#endif
            }

            Environment.Exit(0);
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: UtahJazz/shelltwit
        static void Main(string[] args)
        {
            try
            {
                //Debug.Assert(false, "Attach VS here!");

                Console.OutputEncoding = new UTF8Encoding();

                PrintHeader();

                BaseAPI.SetMessageAction(message => Console.WriteLine(message));

                if (args.Length == 0)
                {
                    PrintTwits(Timeline.GetTimeline().Result);
                    return;
                }


                if (args[0].StartsWith("/"))
                {
                    string flag = args[0].ToLower().Trim();
                    switch (flag)
                    {
                    case CLEAR:
                        AuthenticatedUser.ClearCredentials();
                        Console.WriteLine("User credentials cleared!");
                        return;

                    case HELP:
                        ShowUsage();
                        return;

                    case TIME_LINE:
                        PrintTwits(Timeline.GetTimeline().Result);
                        return;

                    case MENTIONS:
                        PrintTwits(Mentions.GetMentions().Result);
                        return;

                    case SEARCH:
                        SearchOptions options = new SearchOptions {
                            Query = string.Join(" ", args).Substring(2), User = AuthenticatedUser.LoadCredentials()
                        };
                        PrintTwits(Search.SearchTweets(options).Result);
                        return;

                    case LIKES:
                        PrintTwits(Likes.GetUserLikes(new LikesOptions()).Result);
                        return;

                    case USER:
                        if (args.Length != 2)
                        {
                            throw new ArgumentNullException("screenname", "The user' screen name must be provided");
                        }
                        UserTimelineOptions usrOptions = new UserTimelineOptions {
                            ScreenName = args[1]
                        };
                        PrintTwits(UserTimeline.GetUserTimeline(usrOptions).Result);
                        return;

                    case STREAMING:
                        if (args.Length != 2)
                        {
                            throw new ArgumentNullException("streaming", "The track must be provided");
                        }
                        StreammingFilterOptions streamingOptions = new StreammingFilterOptions {
                            Track = args[1]
                        };
                        Console.WriteLine("Starting live streaming, press ctrl+c to quit");
                        foreach (Status s in StreamingFilter.GetStreamingTimeline(streamingOptions))
                        {
                            PrintTwit(s);
                        }
                        return;

                    default:
                        Console.WriteLine($"Invalid flag: {flag}");
                        ShowUsage();
                        return;
                    }
                }

                if (args[0].StartsWith("\\") || args[0].Length == 1)
                {
                    Console.WriteLine("Really? do you really wanna twit that?. [T]wit, or [N]o sorry, I messed up...");
                    ConsoleKeyInfo input = Console.ReadKey();
                    while (input.Key != ConsoleKey.T && input.Key != ConsoleKey.N)
                    {
                        Console.WriteLine();
                        Console.WriteLine("[T]wit, or [N]o sorry, I messed up...");
                        input = Console.ReadKey();
                    }
                    Console.WriteLine();

                    if (input.Key == ConsoleKey.N)
                    {
                        Console.WriteLine("That's what I thought! ;)");
                        return;
                    }
                }

                string response = Update.UpdateStatus(string.Join(" ", args)).Result;

                if (response != "OK")
                {
                    Console.WriteLine($"Response was not OK: {response}");
                }
            }
            catch (WebException wex)
            {
                Console.WriteLine(wex.Message);

                HttpWebResponse res = (HttpWebResponse)wex.Response;
                if (res != null)
                {
                    UpdateError errors = ShelltwitLib.Helpers.Util.Deserialize <UpdateError>(res.GetResponseStream());
                    errors.errors.ForEach(e => Console.WriteLine(e.ToString()));
                }
            }
            catch (Exception ex)
            {
                PrintException(ex);
            }
            finally
            {
#if DEBUG
                if (Debugger.IsAttached)
                {
                    Console.WriteLine("Press <enter> to exit...");
                    Console.ReadLine();
                }
#endif
            }

            Environment.Exit(0);
        }