/// <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)); } } } }
/// <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; }
protected void TriggerUpdating(UpdateSegment segment, UpdateError err, string msg, float percent) { if (OnUpdating != null) { OnUpdating(segment, err, msg, percent); } }
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)); }
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(); }
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)) ); }
/// <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); } }); }
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); }
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); }