public static SingleSourceHTTPDownloadInfo?LoadSingleSourceHTTPDownloadInfo(string id) { try { using var s = new FileStream(Path.Combine(Config.DataDir, id + ".info"), FileMode.Open); using var r = new BinaryReader(s); var info = new SingleSourceHTTPDownloadInfo { Uri = StreamHelper.ReadString(r), File = StreamHelper.ReadString(r), ContentLength = r.ReadInt64() }; StreamHelper.ReadStateHeaders(r, out Dictionary <string, List <string> > headers); info.Headers = headers; StreamHelper.ReadStateCookies(r, out Dictionary <string, string> cookies); info.Cookies = cookies; return(info); } catch (Exception ex) { Log.Debug(ex, ex.Message); } return(null); }
public bool LinkAccepted(SingleSourceHTTPDownloadInfo info) { if (refreshLinkCandidate != null && IsMatchingSingleSourceLink(info)) { HandleSingleSourceLinkRefresh(info); return(true); } return(false); }
private bool IsMatchingSingleSourceLink(SingleSourceHTTPDownloadInfo info) { if (!(refreshLinkCandidate is SingleSourceHTTPDownloader)) { return(false); } var contentLength = info.ContentLength; return(refreshLinkCandidate.FileSize == contentLength && refreshLinkCandidate.FileSize > 0); }
public static void SaveDownloadInfo(string id, SingleSourceHTTPDownloadInfo info) { using var s = new FileStream(Path.Combine(Config.DataDir, id + ".info"), FileMode.Create); using var w = new BinaryWriter(s); WriteStringSafe(info.Uri, w); WriteStringSafe(info.File, w); w.Write(info.ContentLength); StreamHelper.WriteStateHeaders(info.Headers, w); StreamHelper.WriteStateCookies(info.Cookies, w); //File.WriteAllText(Path.Combine(Config.DataDir, id + ".info"), JsonConvert.SerializeObject(downloadInfo)); }
private void HandleSingleSourceLinkRefresh(SingleSourceHTTPDownloadInfo info) { if (refreshLinkCandidate == null) { return; } ((SingleSourceHTTPDownloader)refreshLinkCandidate).SetDownloadInfo(info); refreshLinkCandidate = null; RefreshedLinkReceived?.Invoke(this, EventArgs.Empty); ClearRefreshRecivedEvents(); }
private void HandleSingleSourceLinkRefresh(Message message) { if (refreshLinkCandidate == null) { return; } var info = new SingleSourceHTTPDownloadInfo { Uri = message.Url, Headers = message?.RequestHeaders, Cookies = message?.Cookies }; ((SingleSourceHTTPDownloader)refreshLinkCandidate).SetDownloadInfo(info); refreshLinkCandidate = null; RefreshedLinkReceived?.Invoke(this, EventArgs.Empty); ClearRefreshRecivedEvents(); }