public abstract MailMessage GetMessage(uint uid, FetchOption options, bool flag);
public abstract IEnumerable<MailMessage> GetMessages(IEnumerable<uint> uids, FetchOption options, bool flag);
public override MailMessage GetMessage(uint uid, FetchOption options = FetchOption.Normal, bool flag = false) { if (!Authed) { throw new NotAuthenticatedException(); } string command = options == FetchOption.HeadersOnly ? ("TOP " + uid + " 0") : ("RETR " + uid); StringBuilder builder = new StringBuilder(); lock (sequenceLock) { string response = SendCommandGetResponse(command); if (!IsResponseOK(response)) { throw new BadServerResponseException(response); } while ((response = GetResponse()) != ".") { builder.AppendLine(response); } if (flag) { DeleteMessage(uid); } } return options == FetchOption.HeadersOnly ? MessageBuilder.FromHeader(builder.ToString()) : MessageBuilder.FromMIME822(builder.ToString()); }
public override IEnumerable<MailMessage> GetMessages(IEnumerable<uint> uids = null, FetchOption options = FetchOption.Normal, bool flag = false) { List<MailMessage> list = new List<MailMessage>(); if (uids == null) { uids = GetMessageNumbers(); } foreach (uint n in uids) { list.Add(GetMessage(n, options, flag)); } return list.ToArray(); }
/// <summary> /// アドオンを初期化する /// </summary> /// <returns></returns> public async Task <IAttemptResult> InitializeAsync() { if (this.isInitialized) { return(new AttemptResult() { Message = "既に初期化されています。" }); } this._initializeAwaiterHandler.RegisterStep(AwaiterNames.Addon, typeof(VM::MainWindowViewModel)); await this._initializeAwaiterHandler.GetAwaiter(AwaiterNames.Addon); IAttemptResult dResult = this._uninstaller.DeleteListed(); if (!dResult.IsSucceeded) { return(new AttemptResult() { Message = "アンインストール済みアドオンフォルダーの削除に失敗しました。", Exception = dResult.Exception }); } IAttemptResult mResult = this._installer.ReplaceTemporaryFiles(); if (!mResult.IsSucceeded) { return(new AttemptResult() { Message = mResult.Message, Exception = mResult.Exception }); } List <string> packages; try { packages = this._directoryIO.GetDirectorys(FileFolder.AddonsFolder); } catch (Exception e) { this._logger.Error("アドオンパッケージ一覧の取得に失敗しました。", e); return(new AttemptResult() { Message = "アドオンパッケージ一覧の取得に失敗しました。", Exception = e }); } bool isDevMode = this._settingHandler.GetBoolSetting(SettingsEnum.IsDevMode); bool isAddonDebuggingEnable = this._settingHandler.GetBoolSetting(SettingsEnum.IsAddonDebugEnable); foreach (var packagePath in packages) { string package = Path.GetFileName(packagePath); IAttemptResult <bool> result = await this._engine.InitializeAsync(package, isDevMode); if (!result.IsSucceeded) { var failedResult = new FailedAddonResult(package, result.Message ?? string.Empty, result.Data); this.LoadFailedAddons.Add(failedResult); } } foreach (KeyValuePair <int, IAddonContext> item in this._contexts.Contexts) { AddonInfomation info = this._container.GetAddon(item.Key); IAPIEntryPoint entryPoint = DIFactory.Provider.GetRequiredService <IAPIEntryPoint>(); IAttemptResult result = item.Value.Initialize(info, engine => { entryPoint.Initialize(info, engine); engine.AddHostObject("application", entryPoint); IFetch fetch = DIFactory.Provider.GetRequiredService <IFetch>(); fetch.Initialize(info); Func <string, dynamic?, Task <Response> > fetchFunc = (url, optionObj) => { var option = new FetchOption() { method = optionObj?.method, body = optionObj?.body, credentials = optionObj?.credentials, }; return(fetch.FetchAsync(url, option)); }; engine.AddHostObject("fetch", fetchFunc); }, entryPoint, isAddonDebuggingEnable); if (!result.IsSucceeded) { var failedResult = new FailedAddonResult(info.PackageID.Value, result.Message ?? string.Empty, true); this.LoadFailedAddons.Add(failedResult); } } IAttemptResult <IEnumerable <string> > packageIds = this._storeHandler.GetAllAddonsPackageID(); if (packageIds.IsSucceeded && packageIds.Data is not null) { List <string> loaded = this._contexts.Contexts.Select(v => v.Value.AddonInfomation !.PackageID.Value).ToList(); foreach (var package in packageIds.Data) { if (!loaded.Contains(package)) { var failedResult = new FailedAddonResult(package, "インストールされていますが、ファイルが見つかりませんでした。", true); this.LoadFailedAddons.Add(failedResult); } } } this.isInitialized = true; return(new AttemptResult() { IsSucceeded = true }); }
public override IEnumerable<MailMessage> GetMessages(IEnumerable<uint> uids, FetchOption options, bool flag) { MailMessages = imapadapt.GetMessages(uids, options, true, null).ToList(); return imapadapt.GetMessages(uids, options, true, null); }
public override MailMessage GetMessage(uint uid, FetchOption options, bool flag) { return imapadapt.GetMessage(uid, options); }
public IEnumerable<MailMessage> GetMessages(IEnumerable<uint> uids, FetchOption options, bool seen = true, string mailbox = null) { uids.ThrowIfNull("uids"); List<MailMessage> list = new List<MailMessage>(); foreach (uint uid in uids) { list.Add(GetMessage(uid, options, seen, mailbox)); } return list; }
public MailMessage GetMessage(uint uid, FetchOption options, bool seen = false, string mailbox = null) { AssertValid(); switch (options) { case FetchOption.HeadersOnly: return MessageBuilder.FromHeader(GetMailHeader(uid, seen, mailbox)); case FetchOption.NoAttachments: return GetMessage( uid, p => { return p.Disposition.ContentType != ContentDispositionType.Attachment; }, seen, mailbox); case FetchOption.TextOnly: return GetMessage( uid, p => { return p.ContentType == ContentType.Text; }, seen, mailbox); default: return MessageBuilder.FromMIME822(GetMessageData(uid, seen, mailbox)); } }