diff options
author | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2014-10-23 21:07:31 -0700 |
---|---|---|
committer | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2014-10-23 21:07:31 -0700 |
commit | 2edc88f7cbd395d450cdee076afd698bed9cb25a (patch) | |
tree | 5fdd90ab6d32f910f53f200fe97de62b4335945f | |
parent | 8be6102aeb58ae756a2646086c3ce7a23f298a2e (diff) | |
parent | 5a2dae95647818843027b1c09c812c8a99c98c35 (diff) |
Merge pull request #924 from CodaFi/NNTP-Cleanup
NNTP Cleanup
35 files changed, 1045 insertions, 113 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj index 1c025752..8f9f6803 100755 --- a/build-mac/mailcore2.xcodeproj/project.pbxproj +++ b/build-mac/mailcore2.xcodeproj/project.pbxproj @@ -35,7 +35,7 @@ 27780D4A19CFA32900C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376B199C005A005124E5 /* MCONNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780D4B19CFA32900C77E44 /* MCONNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376F199C007E005124E5 /* MCONNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780D4C19CFA32900C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73789199C0260005124E5 /* MCONNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27780D4D19CFA32900C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4D19CFA32900C77E44 /* MCONNTPFetchAllArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780D4E19CFA32900C77E44 /* MCONNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7378D199C02A8005124E5 /* MCONNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780D4F19CFA32900C77E44 /* MCONNTPGroupInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73791199C0511005124E5 /* MCONNTPGroupInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780D5019CFA32900C77E44 /* MCOAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23616EDAA2B000DB34C /* MCOAbstract.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -158,7 +158,7 @@ 27780DC519CFA33500C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73736199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780DC619CFA33600C77E44 /* MCNNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780DC719CFA33600C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7375B199BFDCA005124E5 /* MCNNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27780DC819CFA33600C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC819CFA33600C77E44 /* MCNNTPFetchAllArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780DC919CFA33600C77E44 /* MCNNTPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780DCA19CFA33600C77E44 /* MCNNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73757199BFC8A005124E5 /* MCNNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 27780DCB19CFA33700C77E44 /* MCNNTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7372F199BF704005124E5 /* MCNNTPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -287,7 +287,7 @@ 27780E4619CFA3F500C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376B199C005A005124E5 /* MCONNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780E4719CFA3F500C77E44 /* MCONNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376F199C007E005124E5 /* MCONNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780E4819CFA3F500C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73789199C0260005124E5 /* MCONNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 27780E4919CFA3F500C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4919CFA3F500C77E44 /* MCONNTPFetchAllArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780E4A19CFA3F500C77E44 /* MCONNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7378D199C02A8005124E5 /* MCONNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780E4B19CFA3F500C77E44 /* MCONNTPGroupInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73791199C0511005124E5 /* MCONNTPGroupInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780E4C19CFA3F500C77E44 /* MCOAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23616EDAA2B000DB34C /* MCOAbstract.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -404,7 +404,7 @@ 27780EBB19CFA40000C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73736199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780EBC19CFA40100C77E44 /* MCNNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780EBD19CFA40100C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7375B199BFDCA005124E5 /* MCNNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 27780EBE19CFA40100C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EBE19CFA40100C77E44 /* MCNNTPFetchAllArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780EBF19CFA40100C77E44 /* MCNNTPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780EC019CFA40100C77E44 /* MCNNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73757199BFC8A005124E5 /* MCNNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 27780EC119CFA40200C77E44 /* MCNNTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7372F199BF704005124E5 /* MCNNTPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -558,6 +558,22 @@ 84B639F417F2839C003B5BA2 /* MCIMAPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639EC17F280F3003B5BA2 /* MCIMAPNoopOperation.h */; }; 84B639F517F2839C003B5BA2 /* MCPOPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639E717F27EBD003B5BA2 /* MCPOPNoopOperation.h */; }; 84B639F617F2839C003B5BA2 /* MCSMTPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639E217F279BB003B5BA2 /* MCSMTPNoopOperation.h */; }; + 84CFA98319F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA98219F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm */; }; + 84CFA98419F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA98219F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm */; }; + 84CFA98719F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA98519F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc */; }; + 84CFA98819F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA98519F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc */; }; + 84CFA98919F7168300FE35D2 /* MCNNTPFetchOverviewOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA98619F7159700FE35D2 /* MCNNTPFetchOverviewOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84CFA98A19F7168400FE35D2 /* MCNNTPFetchOverviewOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA98619F7159700FE35D2 /* MCNNTPFetchOverviewOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 84CFA98B19F716EE00FE35D2 /* MCONNTPFetchOverviewOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA98119F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 84CFA98C19F716EF00FE35D2 /* MCONNTPFetchOverviewOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA98119F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84CFA98F19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA98D19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc */; }; + 84CFA99019F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA98D19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc */; }; + 84CFA99119F725AF00FE35D2 /* MCNNTPFetchServerTimeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA98E19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 84CFA99219F725B000FE35D2 /* MCNNTPFetchServerTimeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA98E19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84CFA99519F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA99419F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm */; }; + 84CFA99619F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84CFA99419F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm */; }; + 84CFA99719F725D300FE35D2 /* MCONNTPFetchServerTimeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA99319F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 84CFA99819F725D400FE35D2 /* MCONNTPFetchServerTimeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84CFA99319F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84D7372C199BF66C005124E5 /* MCNNTPAsyncSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D7372A199BF66C005124E5 /* MCNNTPAsyncSession.cc */; }; 84D7372D199BF66C005124E5 /* MCNNTPAsyncSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D7372A199BF66C005124E5 /* MCNNTPAsyncSession.cc */; }; 84D73730199BF704005124E5 /* MCNNTPOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D7372E199BF704005124E5 /* MCNNTPOperation.cc */; }; @@ -570,8 +586,8 @@ 84D7373A199BF81D005124E5 /* MCNNTPOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7372F199BF704005124E5 /* MCNNTPOperation.h */; }; 84D7373D199BF83B005124E5 /* MCNNTPFetchArticleOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D7373B199BF83B005124E5 /* MCNNTPFetchArticleOperation.cc */; }; 84D7373E199BF83B005124E5 /* MCNNTPFetchArticleOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D7373B199BF83B005124E5 /* MCNNTPFetchArticleOperation.cc */; }; - 84D73742199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D73740199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc */; }; - 84D73743199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D73740199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc */; }; + 84D73742199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D73740199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc */; }; + 84D73743199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D73740199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc */; }; 84D73746199BFA8C005124E5 /* MCNNTPCheckAccountOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D73744199BFA8C005124E5 /* MCNNTPCheckAccountOperation.cc */; }; 84D73747199BFA8C005124E5 /* MCNNTPCheckAccountOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84D73744199BFA8C005124E5 /* MCNNTPCheckAccountOperation.cc */; }; 84D73748199BFACA005124E5 /* MCNNTPAsyncSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7372B199BF66C005124E5 /* MCNNTPAsyncSession.h */; }; @@ -581,9 +597,9 @@ 84D7374C199BFB9C005124E5 /* MCNNTPFetchHeaderOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73736199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.h */; }; 84D7374D199BFB9F005124E5 /* MCNNTPFetchArticleOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */; }; 84D7374E199BFBBA005124E5 /* MCNNTPFetchHeaderOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73736199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.h */; }; - 84D7374F199BFBC8005124E5 /* MCNNTPFetchArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */; }; + 84D7374F199BFBC8005124E5 /* MCNNTPFetchAllArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.h */; }; 84D73750199BFBD9005124E5 /* MCNNTPFetchArticleOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */; }; - 84D73751199BFBDF005124E5 /* MCNNTPFetchArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */; }; + 84D73751199BFBDF005124E5 /* MCNNTPFetchAllArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.h */; }; 84D73752199BFBE3005124E5 /* MCNNTPCheckAccountOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */; }; 84D73753199BFBE6005124E5 /* MCNNTPCheckAccountOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */; }; 84D73754199BFBEC005124E5 /* MCNNTPOperationCallback.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7373F199BF887005124E5 /* MCNNTPOperationCallback.h */; }; @@ -602,8 +618,8 @@ 84D7376E199C005A005124E5 /* MCONNTPFetchHeaderOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D7376C199C005A005124E5 /* MCONNTPFetchHeaderOperation.mm */; }; 84D73771199C007E005124E5 /* MCONNTPFetchArticleOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D73770199C007E005124E5 /* MCONNTPFetchArticleOperation.mm */; }; 84D73772199C007E005124E5 /* MCONNTPFetchArticleOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D73770199C007E005124E5 /* MCONNTPFetchArticleOperation.mm */; }; - 84D73775199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D73774199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm */; }; - 84D73776199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D73774199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm */; }; + 84D73775199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D73774199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm */; }; + 84D73776199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D73774199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm */; }; 84D7377B199C00F5005124E5 /* MCONNTP.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73761199BFF80005124E5 /* MCONNTP.h */; }; 84D7377C199C00F7005124E5 /* MCONNTP.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73761199BFF80005124E5 /* MCONNTP.h */; }; 84D7377D199C00FE005124E5 /* MCONNTPSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73762199BFFC7005124E5 /* MCONNTPSession.h */; }; @@ -611,11 +627,11 @@ 84D7377F199C0104005124E5 /* MCONNTPOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73766199BFFFC005124E5 /* MCONNTPOperation.h */; }; 84D73780199C0107005124E5 /* MCONNTPFetchHeaderOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7376B199C005A005124E5 /* MCONNTPFetchHeaderOperation.h */; }; 84D73781199C010A005124E5 /* MCONNTPFetchArticleOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7376F199C007E005124E5 /* MCONNTPFetchArticleOperation.h */; }; - 84D73782199C010B005124E5 /* MCONNTPFetchArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */; }; + 84D73782199C010B005124E5 /* MCONNTPFetchAllArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.h */; }; 84D73784199C0114005124E5 /* MCONNTPOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73766199BFFFC005124E5 /* MCONNTPOperation.h */; }; 84D73785199C0117005124E5 /* MCONNTPFetchHeaderOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7376B199C005A005124E5 /* MCONNTPFetchHeaderOperation.h */; }; 84D73786199C0118005124E5 /* MCONNTPFetchArticleOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D7376F199C007E005124E5 /* MCONNTPFetchArticleOperation.h */; }; - 84D73787199C011A005124E5 /* MCONNTPFetchArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */; }; + 84D73787199C011A005124E5 /* MCONNTPFetchAllArticlesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.h */; }; 84D7378B199C0260005124E5 /* MCONNTPListNewsgroupsOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D7378A199C0260005124E5 /* MCONNTPListNewsgroupsOperation.mm */; }; 84D7378C199C0260005124E5 /* MCONNTPListNewsgroupsOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D7378A199C0260005124E5 /* MCONNTPListNewsgroupsOperation.mm */; }; 84D7378F199C02A8005124E5 /* MCONNTPDisconnectOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D7378E199C02A8005124E5 /* MCONNTPDisconnectOperation.mm */; }; @@ -1459,7 +1475,7 @@ C6F61FA0170187B80073032E /* MCOIMAPFolderInfoOperation.h in CopyFiles */, C6F61FA4170187C30073032E /* MCOIMAPFetchMessagesOperation.h in CopyFiles */, 84D73781199C010A005124E5 /* MCONNTPFetchArticleOperation.h in CopyFiles */, - 84D73782199C010B005124E5 /* MCONNTPFetchArticlesOperation.h in CopyFiles */, + 84D73782199C010B005124E5 /* MCONNTPFetchAllArticlesOperation.h in CopyFiles */, C6F61FA3170187BD0073032E /* MCOIMAPCopyMessagesOperation.h in CopyFiles */, C6D6F95A171E5D60006F5B28 /* MCJSON.h in CopyFiles */, C6F61FA2170187BC0073032E /* MCOIMAPAppendMessageOperation.h in CopyFiles */, @@ -1487,7 +1503,7 @@ C623C59016FE71B2001BBEFC /* MCOIMAPOperation.h in CopyFiles */, C6F5B9F616FEBB4900D9DABD /* MCOIMAPMessage.h in CopyFiles */, 84D73750199BFBD9005124E5 /* MCNNTPFetchArticleOperation.h in CopyFiles */, - 84D7374F199BFBC8005124E5 /* MCNNTPFetchArticlesOperation.h in CopyFiles */, + 84D7374F199BFBC8005124E5 /* MCNNTPFetchAllArticlesOperation.h in CopyFiles */, C623C58916FD8B71001BBEFC /* MCOUtils.h in CopyFiles */, C64EA74F169E859600778456 /* MCAbstractMessage.h in CopyFiles */, C623C58816FD6DF6001BBEFC /* NSValue+MCO.h in CopyFiles */, @@ -1624,7 +1640,7 @@ 84E65534199BE2BF00EC8CC4 /* MCNNTPGroupInfo.h in CopyFiles */, 84D73785199C0117005124E5 /* MCONNTPFetchHeaderOperation.h in CopyFiles */, 84D73739199BF81A005124E5 /* MCNNTPOperation.h in CopyFiles */, - 84D73787199C011A005124E5 /* MCONNTPFetchArticlesOperation.h in CopyFiles */, + 84D73787199C011A005124E5 /* MCONNTPFetchAllArticlesOperation.h in CopyFiles */, 84391344199C3AB200FEFCDD /* MCONNTPDisconnectOperation.h in CopyFiles */, 84391343199C3AAA00FEFCDD /* MCONNTPListNewsgroupsOperation.h in CopyFiles */, 84D73786199C0118005124E5 /* MCONNTPFetchArticleOperation.h in CopyFiles */, @@ -1638,7 +1654,7 @@ 84D7374D199BFB9F005124E5 /* MCNNTPFetchArticleOperation.h in CopyFiles */, DAE42E8A178F7E2200E0DB8F /* MCOIMAPMessageRenderingOperation.h in CopyFiles */, C6E6652F1791B2530063F2CF /* MCIMAPMessageRenderingOperation.h in CopyFiles */, - 84D73751199BFBDF005124E5 /* MCNNTPFetchArticlesOperation.h in CopyFiles */, + 84D73751199BFBDF005124E5 /* MCNNTPFetchAllArticlesOperation.h in CopyFiles */, 9E774D8B1767CD3C0065EB9B /* MCIMAPFolderStatus.h in CopyFiles */, 84D73755199BFBF2005124E5 /* MCNNTPOperationCallback.h in CopyFiles */, 9EF9AB25175F40C70027FA3B /* MCIMAPFolderStatusOperation.h in CopyFiles */, @@ -1844,19 +1860,27 @@ 84B639EC17F280F3003B5BA2 /* MCIMAPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPNoopOperation.h; sourceTree = "<group>"; }; 84B639EF17F282B4003B5BA2 /* MCOPOPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOPOPNoopOperation.h; sourceTree = "<group>"; }; 84B639F017F282B4003B5BA2 /* MCOPOPNoopOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOPOPNoopOperation.mm; sourceTree = "<group>"; }; - 84D73729199BF63F005124E5 /* MCAsyncNNTP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCAsyncNNTP.h; sourceTree = "<group>"; }; - 84D7372A199BF66C005124E5 /* MCNNTPAsyncSession.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPAsyncSession.cc; sourceTree = "<group>"; }; + 84CFA98119F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPFetchOverviewOperation.h; sourceTree = "<group>"; }; + 84CFA98219F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPFetchOverviewOperation.mm; sourceTree = "<group>"; }; + 84CFA98519F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPFetchOverviewOperation.cc; sourceTree = "<group>"; }; + 84CFA98619F7159700FE35D2 /* MCNNTPFetchOverviewOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPFetchOverviewOperation.h; sourceTree = "<group>"; }; + 84CFA98D19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPFetchServerTimeOperation.cc; sourceTree = "<group>"; }; + 84CFA98E19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPFetchServerTimeOperation.h; sourceTree = "<group>"; }; + 84CFA99319F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPFetchServerTimeOperation.h; sourceTree = "<group>"; }; + 84CFA99419F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPFetchServerTimeOperation.mm; sourceTree = "<group>"; }; + 84D73729199BF63F005124E5 /* MCAsyncNNTP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MCAsyncNNTP.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 84D7372A199BF66C005124E5 /* MCNNTPAsyncSession.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = MCNNTPAsyncSession.cc; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; 84D7372B199BF66C005124E5 /* MCNNTPAsyncSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPAsyncSession.h; sourceTree = "<group>"; }; 84D7372E199BF704005124E5 /* MCNNTPOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPOperation.cc; sourceTree = "<group>"; }; 84D7372F199BF704005124E5 /* MCNNTPOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPOperation.h; sourceTree = "<group>"; }; 84D73732199BF754005124E5 /* MCNNTPProgressCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MCNNTPProgressCallback.h; path = nntp/MCNNTPProgressCallback.h; sourceTree = "<group>"; }; 84D73735199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPFetchHeaderOperation.cc; sourceTree = "<group>"; }; 84D73736199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPFetchHeaderOperation.h; sourceTree = "<group>"; }; - 84D7373B199BF83B005124E5 /* MCNNTPFetchArticleOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPFetchArticleOperation.cc; sourceTree = "<group>"; }; - 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPFetchArticleOperation.h; sourceTree = "<group>"; }; + 84D7373B199BF83B005124E5 /* MCNNTPFetchArticleOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = MCNNTPFetchArticleOperation.cc; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; + 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MCNNTPFetchArticleOperation.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 84D7373F199BF887005124E5 /* MCNNTPOperationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPOperationCallback.h; sourceTree = "<group>"; }; - 84D73740199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPFetchArticlesOperation.cc; sourceTree = "<group>"; }; - 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPFetchArticlesOperation.h; sourceTree = "<group>"; }; + 84D73740199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = MCNNTPFetchAllArticlesOperation.cc; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; + 84D73741199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MCNNTPFetchAllArticlesOperation.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 84D73744199BFA8C005124E5 /* MCNNTPCheckAccountOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPCheckAccountOperation.cc; sourceTree = "<group>"; }; 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPCheckAccountOperation.h; sourceTree = "<group>"; }; 84D73756199BFC8A005124E5 /* MCNNTPDisconnectOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCNNTPDisconnectOperation.cc; sourceTree = "<group>"; }; @@ -1865,7 +1889,7 @@ 84D7375B199BFDCA005124E5 /* MCNNTPListNewsgroupsOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCNNTPListNewsgroupsOperation.h; sourceTree = "<group>"; }; 84D73761199BFF80005124E5 /* MCONNTP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTP.h; sourceTree = "<group>"; }; 84D73762199BFFC7005124E5 /* MCONNTPSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPSession.h; sourceTree = "<group>"; }; - 84D73763199BFFC7005124E5 /* MCONNTPSession.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPSession.mm; sourceTree = "<group>"; }; + 84D73763199BFFC7005124E5 /* MCONNTPSession.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MCONNTPSession.mm; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 84D73766199BFFFC005124E5 /* MCONNTPOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPOperation.h; sourceTree = "<group>"; }; 84D73767199BFFFC005124E5 /* MCONNTPOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPOperation.mm; sourceTree = "<group>"; }; 84D7376A199C0014005124E5 /* MCONNTPOperation+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MCONNTPOperation+Private.h"; sourceTree = "<group>"; }; @@ -1873,8 +1897,8 @@ 84D7376C199C005A005124E5 /* MCONNTPFetchHeaderOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPFetchHeaderOperation.mm; sourceTree = "<group>"; }; 84D7376F199C007E005124E5 /* MCONNTPFetchArticleOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPFetchArticleOperation.h; sourceTree = "<group>"; }; 84D73770199C007E005124E5 /* MCONNTPFetchArticleOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPFetchArticleOperation.mm; sourceTree = "<group>"; }; - 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPFetchArticlesOperation.h; sourceTree = "<group>"; }; - 84D73774199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPFetchArticlesOperation.mm; sourceTree = "<group>"; }; + 84D73773199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPFetchAllArticlesOperation.h; sourceTree = "<group>"; }; + 84D73774199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MCONNTPFetchAllArticlesOperation.mm; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 84D73789199C0260005124E5 /* MCONNTPListNewsgroupsOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPListNewsgroupsOperation.h; sourceTree = "<group>"; }; 84D7378A199C0260005124E5 /* MCONNTPListNewsgroupsOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCONNTPListNewsgroupsOperation.mm; sourceTree = "<group>"; }; 84D7378D199C02A8005124E5 /* MCONNTPDisconnectOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCONNTPDisconnectOperation.h; sourceTree = "<group>"; }; @@ -2429,8 +2453,12 @@ 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */, 84D7375A199BFDCA005124E5 /* MCNNTPListNewsgroupsOperation.cc */, 84D7375B199BFDCA005124E5 /* MCNNTPListNewsgroupsOperation.h */, - 84D73740199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc */, - 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */, + 84CFA98519F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc */, + 84CFA98619F7159700FE35D2 /* MCNNTPFetchOverviewOperation.h */, + 84D73740199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc */, + 84D73741199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.h */, + 84CFA98D19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc */, + 84CFA98E19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.h */, 84D73744199BFA8C005124E5 /* MCNNTPCheckAccountOperation.cc */, 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */, 84D73756199BFC8A005124E5 /* MCNNTPDisconnectOperation.cc */, @@ -2457,8 +2485,12 @@ 84D73770199C007E005124E5 /* MCONNTPFetchArticleOperation.mm */, 84D73789199C0260005124E5 /* MCONNTPListNewsgroupsOperation.h */, 84D7378A199C0260005124E5 /* MCONNTPListNewsgroupsOperation.mm */, - 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */, - 84D73774199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm */, + 84CFA98119F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.h */, + 84CFA98219F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm */, + 84D73773199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.h */, + 84D73774199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm */, + 84CFA99319F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.h */, + 84CFA99419F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm */, 84D7378D199C02A8005124E5 /* MCONNTPDisconnectOperation.h */, 84D7378E199C02A8005124E5 /* MCONNTPDisconnectOperation.mm */, 84D73791199C0511005124E5 /* MCONNTPGroupInfo.h */, @@ -3190,6 +3222,7 @@ 27780E3819CFA3F500C77E44 /* MCOPOPFetchMessageOperation.h in Headers */, 27780E3919CFA3F500C77E44 /* MCOPOPFetchMessagesOperation.h in Headers */, 27780E3A19CFA3F500C77E44 /* MCOPOPNoopOperation.h in Headers */, + 84CFA98B19F716EE00FE35D2 /* MCONNTPFetchOverviewOperation.h in Headers */, 27780E3B19CFA3F500C77E44 /* MCOPOPMessageInfo.h in Headers */, 27780E3C19CFA3F500C77E44 /* MCOSMTP.h in Headers */, 27780E3D19CFA3F500C77E44 /* MCOSMTPSession.h in Headers */, @@ -3202,7 +3235,7 @@ 27780E4619CFA3F500C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */, 27780E4719CFA3F500C77E44 /* MCONNTPFetchArticleOperation.h in Headers */, 27780E4819CFA3F500C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */, - 27780E4919CFA3F500C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */, + 27780E4919CFA3F500C77E44 /* MCONNTPFetchAllArticlesOperation.h in Headers */, 27780E4A19CFA3F500C77E44 /* MCONNTPDisconnectOperation.h in Headers */, 27780E4B19CFA3F500C77E44 /* MCONNTPGroupInfo.h in Headers */, 27780E4C19CFA3F500C77E44 /* MCOAbstract.h in Headers */, @@ -3214,6 +3247,7 @@ 27780E5519CFA3F600C77E44 /* MCOConstants.h in Headers */, 27780E5619CFA3F600C77E44 /* MCOMessageHeader.h in Headers */, 27780E5819CFA3F600C77E44 /* MCOHTMLRendererDelegate.h in Headers */, + 84CFA98A19F7168400FE35D2 /* MCNNTPFetchOverviewOperation.h in Headers */, 27780E5919CFA3F600C77E44 /* MCOHTMLRendererIMAPDelegate.h in Headers */, 27780E5A19CFA3F600C77E44 /* MCOAbstractMessageRendererCallback.h in Headers */, 27780E5B19CFA3F600C77E44 /* MCOIMAP.h in Headers */, @@ -3262,8 +3296,10 @@ 27780E8919CFA3FA00C77E44 /* NSIndexSet+MCO.h in Headers */, 27780E8A19CFA3FA00C77E44 /* NSSet+MCO.h in Headers */, 27780E8B19CFA3FA00C77E44 /* MCOMailProvider.h in Headers */, + 84CFA99119F725AF00FE35D2 /* MCNNTPFetchServerTimeOperation.h in Headers */, 27780E8C19CFA3FA00C77E44 /* MCOMailProvidersManager.h in Headers */, 27780E8D19CFA3FA00C77E44 /* MCONetService.h in Headers */, + 84CFA99719F725D300FE35D2 /* MCONNTPFetchServerTimeOperation.h in Headers */, 27780E8E19CFA3FA00C77E44 /* MCOProvider.h in Headers */, 27780E8F19CFA3FA00C77E44 /* MCObjC.h in Headers */, 27780E9019CFA3FA00C77E44 /* MCAsyncIMAP.h in Headers */, @@ -3312,7 +3348,7 @@ 27780EBB19CFA40000C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */, 27780EBC19CFA40100C77E44 /* MCNNTPFetchArticleOperation.h in Headers */, 27780EBD19CFA40100C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */, - 27780EBE19CFA40100C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */, + 27780EBE19CFA40100C77E44 /* MCNNTPFetchAllArticlesOperation.h in Headers */, 27780EBF19CFA40100C77E44 /* MCNNTPCheckAccountOperation.h in Headers */, 27780EC019CFA40100C77E44 /* MCNNTPDisconnectOperation.h in Headers */, 27780EC119CFA40200C77E44 /* MCNNTPOperation.h in Headers */, @@ -3449,11 +3485,12 @@ 27780D4419CFA32900C77E44 /* MCOSMTPOperation.h in Headers */, 27780D4619CFA32900C77E44 /* MCONNTP.h in Headers */, 27780D4719CFA32900C77E44 /* MCONNTPSession.h in Headers */, + 84CFA98C19F716EF00FE35D2 /* MCONNTPFetchOverviewOperation.h in Headers */, 27780D4819CFA32900C77E44 /* MCONNTPOperation.h in Headers */, 27780D4A19CFA32900C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */, 27780D4B19CFA32900C77E44 /* MCONNTPFetchArticleOperation.h in Headers */, 27780D4C19CFA32900C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */, - 27780D4D19CFA32900C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */, + 27780D4D19CFA32900C77E44 /* MCONNTPFetchAllArticlesOperation.h in Headers */, 27780D4E19CFA32900C77E44 /* MCONNTPDisconnectOperation.h in Headers */, 27780D4F19CFA32900C77E44 /* MCONNTPGroupInfo.h in Headers */, 27780D5019CFA32900C77E44 /* MCOAbstract.h in Headers */, @@ -3473,6 +3510,7 @@ 27780D6219CFA32A00C77E44 /* MCOIMAPMessage.h in Headers */, 27780D6319CFA32A00C77E44 /* MCOIMAPMessagePart.h in Headers */, 27780D6419CFA32A00C77E44 /* MCOIMAPMultipart.h in Headers */, + 84CFA98919F7168300FE35D2 /* MCNNTPFetchOverviewOperation.h in Headers */, 27780D6519CFA32A00C77E44 /* MCOIMAPNamespace.h in Headers */, 27780D6619CFA32A00C77E44 /* MCOIMAPNamespaceItem.h in Headers */, 27780D6719CFA32A00C77E44 /* MCOIMAPPart.h in Headers */, @@ -3521,8 +3559,10 @@ 27780D9519CFA32E00C77E44 /* MCOMailProvider.h in Headers */, 27780D9619CFA32E00C77E44 /* MCOMailProvidersManager.h in Headers */, 27780D9719CFA32F00C77E44 /* MCONetService.h in Headers */, + 84CFA99219F725B000FE35D2 /* MCNNTPFetchServerTimeOperation.h in Headers */, 27780D9819CFA32F00C77E44 /* MCOProvider.h in Headers */, 27780D9919CFA32F00C77E44 /* MCObjC.h in Headers */, + 84CFA99819F725D400FE35D2 /* MCONNTPFetchServerTimeOperation.h in Headers */, 27780D9A19CFA32F00C77E44 /* MCAsyncIMAP.h in Headers */, 27780D9B19CFA32F00C77E44 /* MCIMAPAsyncConnection.h in Headers */, 27780D9C19CFA32F00C77E44 /* MCIMAPAsyncSession.h in Headers */, @@ -3569,7 +3609,7 @@ 27780DC519CFA33500C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */, 27780DC619CFA33600C77E44 /* MCNNTPFetchArticleOperation.h in Headers */, 27780DC719CFA33600C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */, - 27780DC819CFA33600C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */, + 27780DC819CFA33600C77E44 /* MCNNTPFetchAllArticlesOperation.h in Headers */, 27780DC919CFA33600C77E44 /* MCNNTPCheckAccountOperation.h in Headers */, 27780DCA19CFA33600C77E44 /* MCNNTPDisconnectOperation.h in Headers */, 27780DCB19CFA33700C77E44 /* MCNNTPOperation.h in Headers */, @@ -3821,7 +3861,7 @@ C64EA52E169E772200778456 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0510; + LastUpgradeCheck = 0610; ORGANIZATIONNAME = MailCore; TargetAttributes = { C6B5AE0119F630B3001352A6 = { @@ -3981,6 +4021,7 @@ C64EA704169E847800778456 /* MCArray.cc in Sources */, C6E665B51796500B0063F2CF /* MCZip.cc in Sources */, 84B639E317F279BB003B5BA2 /* MCSMTPNoopOperation.cc in Sources */, + 84CFA98319F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm in Sources */, C64EA706169E847800778456 /* MCAssert.c in Sources */, 84D73793199C0511005124E5 /* MCONNTPGroupInfo.mm in Sources */, C64EA708169E847800778456 /* MCData.cc in Sources */, @@ -3998,8 +4039,9 @@ C64EA723169E847800778456 /* MCIMAPFolder.cc in Sources */, C64EA725169E847800778456 /* MCIMAPMessage.cc in Sources */, C64EA727169E847800778456 /* MCIMAPMessagePart.cc in Sources */, - 84D73775199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm in Sources */, + 84D73775199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm in Sources */, C64EA729169E847800778456 /* MCIMAPMultipart.cc in Sources */, + 84CFA99519F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm in Sources */, C64EA72B169E847800778456 /* MCIMAPNamespace.cc in Sources */, C64EA72D169E847800778456 /* MCIMAPNamespaceItem.cc in Sources */, C64EA72F169E847800778456 /* MCIMAPPart.cc in Sources */, @@ -4029,7 +4071,7 @@ C64EA80216A295E400778456 /* MCIMAPRenameFolderOperation.cc in Sources */, C64EA80516A2997E00778456 /* MCIMAPDeleteFolderOperation.cc in Sources */, C63D315C17C9155C00A4D993 /* MCIMAPIdentity.cc in Sources */, - 84D73742199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc in Sources */, + 84D73742199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc in Sources */, C64EA80816A2999A00778456 /* MCIMAPCreateFolderOperation.cc in Sources */, C64EA80B16A299B700778456 /* MCIMAPSubscribeFolderOperation.cc in Sources */, 84D7372C199BF66C005124E5 /* MCNNTPAsyncSession.cc in Sources */, @@ -4079,6 +4121,7 @@ C63CD68116BDCDD400DB18F1 /* MCHTMLRenderer.cc in Sources */, C63CD68216BDCDD400DB18F1 /* MCSizeFormatter.cc in Sources */, C63CD68616BE148B00DB18F1 /* MCHTMLRendererCallback.cc in Sources */, + 84CFA98F19F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc in Sources */, C63CD69116BE566E00DB18F1 /* MCHTMLCleaner.cc in Sources */, C64BB22116E34DCB000DB34C /* MCIMAPSyncResult.cc in Sources */, C64BB22B16E5C0A4000DB34C /* MCIMAPCapabilityOperation.cc in Sources */, @@ -4145,6 +4188,7 @@ C6D6F954171E5CB8006F5B28 /* MCMD5.cc in Sources */, C6D6F956171E5CB8006F5B28 /* MCNull.cc in Sources */, C6D6F967171FCF9F006F5B28 /* MCJSONParser.cc in Sources */, + 84CFA98719F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc in Sources */, 84D73768199BFFFC005124E5 /* MCONNTPOperation.mm in Sources */, C668E2C71735C8D500A2BB47 /* MCObjectMac.mm in Sources */, C668E2CC1735CB8900A2BB47 /* MCAutoreleasePoolMac.mm in Sources */, @@ -4213,6 +4257,7 @@ C6BA2BA01705F4E6003F0E9E /* MCArray.cc in Sources */, C6E665B61796500B0063F2CF /* MCZip.cc in Sources */, 84B639E417F279BB003B5BA2 /* MCSMTPNoopOperation.cc in Sources */, + 84CFA98419F7153B00FE35D2 /* MCONNTPFetchOverviewOperation.mm in Sources */, C6BA2BA11705F4E6003F0E9E /* MCAssert.c in Sources */, 84D73794199C0511005124E5 /* MCONNTPGroupInfo.mm in Sources */, C6BA2BA21705F4E6003F0E9E /* MCData.cc in Sources */, @@ -4231,7 +4276,8 @@ C6BA2BAE1705F4E6003F0E9E /* MCIMAPFolder.cc in Sources */, C6BA2BAF1705F4E6003F0E9E /* MCIMAPMessage.cc in Sources */, C6BA2BB01705F4E6003F0E9E /* MCIMAPMessagePart.cc in Sources */, - 84D73776199C00AB005124E5 /* MCONNTPFetchArticlesOperation.mm in Sources */, + 84D73776199C00AB005124E5 /* MCONNTPFetchAllArticlesOperation.mm in Sources */, + 84CFA99619F725CB00FE35D2 /* MCONNTPFetchServerTimeOperation.mm in Sources */, C6BA2BB11705F4E6003F0E9E /* MCIMAPMultipart.cc in Sources */, C6BA2BB21705F4E6003F0E9E /* MCIMAPNamespace.cc in Sources */, C6BA2BB31705F4E6003F0E9E /* MCIMAPNamespaceItem.cc in Sources */, @@ -4262,7 +4308,7 @@ C6BA2BC61705F4E6003F0E9E /* MCIMAPRenameFolderOperation.cc in Sources */, C6BA2BC71705F4E6003F0E9E /* MCIMAPDeleteFolderOperation.cc in Sources */, C63D315D17C9155C00A4D993 /* MCIMAPIdentity.cc in Sources */, - 84D73743199BF963005124E5 /* MCNNTPFetchArticlesOperation.cc in Sources */, + 84D73743199BF963005124E5 /* MCNNTPFetchAllArticlesOperation.cc in Sources */, C6BA2BC81705F4E6003F0E9E /* MCIMAPCreateFolderOperation.cc in Sources */, C6BA2BC91705F4E6003F0E9E /* MCIMAPSubscribeFolderOperation.cc in Sources */, 84D7372D199BF66C005124E5 /* MCNNTPAsyncSession.cc in Sources */, @@ -4311,6 +4357,7 @@ C6BA2BE81705F4E6003F0E9E /* MCDateFormatter.cc in Sources */, C6BA2BE91705F4E6003F0E9E /* MCHTMLRenderer.cc in Sources */, C6BA2BEA1705F4E6003F0E9E /* MCSizeFormatter.cc in Sources */, + 84CFA99019F724E500FE35D2 /* MCNNTPFetchServerTimeOperation.cc in Sources */, C6BA2BEB1705F4E6003F0E9E /* MCHTMLRendererCallback.cc in Sources */, C6BA2BEC1705F4E6003F0E9E /* MCHTMLCleaner.cc in Sources */, C6BA2BED1705F4E6003F0E9E /* MCIMAPSyncResult.cc in Sources */, @@ -4377,6 +4424,7 @@ C6D6F7FA171E595D006F5B28 /* MCJSON.cc in Sources */, C6D6F955171E5CB8006F5B28 /* MCMD5.cc in Sources */, C6D6F957171E5CB8006F5B28 /* MCNull.cc in Sources */, + 84CFA98819F7159700FE35D2 /* MCNNTPFetchOverviewOperation.cc in Sources */, C6D6F968171FCF9F006F5B28 /* MCJSONParser.cc in Sources */, 84D73769199BFFFC005124E5 /* MCONNTPOperation.mm in Sources */, C668E2C81735C8D500A2BB47 /* MCObjectMac.mm in Sources */, @@ -4717,6 +4765,7 @@ CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; + COMBINE_HIDPI_IMAGES = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -4750,6 +4799,7 @@ CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; + COMBINE_HIDPI_IMAGES = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; diff --git a/build-mac/mailcore2.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/build-mac/mailcore2.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..fd851d4d --- /dev/null +++ b/build-mac/mailcore2.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "self:mailcore2.xcodeproj"> + </FileRef> +</Workspace> diff --git a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/mailcore osx.xcscheme b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/mailcore osx.xcscheme index dfa632fb..40362a48 100644 --- a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/mailcore osx.xcscheme +++ b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/mailcore osx.xcscheme @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme - LastUpgradeVersion = "0510" + LastUpgradeVersion = "0610" version = "1.3"> <BuildAction parallelizeBuildables = "YES" @@ -39,6 +39,15 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "C6BD288C170BD71100A91AC1" + BuildableName = "MailCore.framework" + BlueprintName = "mailcore osx" + ReferencedContainer = "container:mailcore2.xcodeproj"> + </BuildableReference> + </MacroExpansion> <AdditionalOptions> </AdditionalOptions> </LaunchAction> diff --git a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 ios.xcscheme b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 ios.xcscheme index 308d9031..c0e8e223 100644 --- a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 ios.xcscheme +++ b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 ios.xcscheme @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme - LastUpgradeVersion = "0510" + LastUpgradeVersion = "0610" version = "1.3"> <BuildAction parallelizeBuildables = "YES" @@ -39,6 +39,15 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "C6BA2B091705F4E6003F0E9E" + BuildableName = "libMailCore-ios.a" + BlueprintName = "static mailcore2 ios" + ReferencedContainer = "container:mailcore2.xcodeproj"> + </BuildableReference> + </MacroExpansion> <AdditionalOptions> </AdditionalOptions> </LaunchAction> diff --git a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 osx.xcscheme b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 osx.xcscheme index 0f03d9d8..3107b4a3 100644 --- a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 osx.xcscheme +++ b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/static mailcore2 osx.xcscheme @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme - LastUpgradeVersion = "0510" + LastUpgradeVersion = "0610" version = "1.3"> <BuildAction parallelizeBuildables = "YES" @@ -39,6 +39,15 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "C64EA536169E772200778456" + BuildableName = "libMailCore.a" + BlueprintName = "static mailcore2 osx" + ReferencedContainer = "container:mailcore2.xcodeproj"> + </BuildableReference> + </MacroExpansion> <AdditionalOptions> </AdditionalOptions> </LaunchAction> diff --git a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/test-ios.xcscheme b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/test-ios.xcscheme index 197bb83a..4a32a752 100644 --- a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/test-ios.xcscheme +++ b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/test-ios.xcscheme @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme - LastUpgradeVersion = "0510" + LastUpgradeVersion = "0610" version = "1.3"> <BuildAction parallelizeBuildables = "YES" diff --git a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/tests.xcscheme b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/tests.xcscheme index 2e6592c3..8dfc0654 100644 --- a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/tests.xcscheme +++ b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/tests.xcscheme @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme - LastUpgradeVersion = "0510" + LastUpgradeVersion = "0610" version = "1.3"> <BuildAction parallelizeBuildables = "YES" diff --git a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/unittest.xcscheme b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/unittest.xcscheme index e90e0367..375e55bd 100644 --- a/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/unittest.xcscheme +++ b/build-mac/mailcore2.xcodeproj/xcshareddata/xcschemes/unittest.xcscheme @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme - LastUpgradeVersion = "0600" + LastUpgradeVersion = "0610" version = "1.3"> <BuildAction parallelizeBuildables = "YES" diff --git a/src/async/nntp/MCAsyncNNTP.h b/src/async/nntp/MCAsyncNNTP.h index 56509ff8..914cc754 100644 --- a/src/async/nntp/MCAsyncNNTP.h +++ b/src/async/nntp/MCAsyncNNTP.h @@ -14,8 +14,10 @@ #include <MailCore/MCNNTPOperation.h> #include <MailCore/MCNNTPFetchHeaderOperation.h> #include <MailCore/MCNNTPFetchArticleOperation.h> -#include <MailCore/MCNNTPFetchArticlesOperation.h> +#include <MailCore/MCNNTPFetchAllArticlesOperation.h> #include <MailCore/MCNNTPListNewsgroupsOperation.h> +#include <MailCore/MCNNTPFetchOverviewOperation.h> +#include <MailCore/MCNNTPFetchServerTimeOperation.h> #include <MailCore/MCNNTPOperationCallback.h> #endif diff --git a/src/async/nntp/MCNNTPAsyncSession.cc b/src/async/nntp/MCNNTPAsyncSession.cc index 833bf4d5..a78a70b4 100644 --- a/src/async/nntp/MCNNTPAsyncSession.cc +++ b/src/async/nntp/MCNNTPAsyncSession.cc @@ -11,9 +11,11 @@ #include "MCNNTP.h" #include "MCNNTPFetchHeaderOperation.h" #include "MCNNTPFetchArticleOperation.h" -#include "MCNNTPFetchArticlesOperation.h" +#include "MCNNTPFetchAllArticlesOperation.h" #include "MCNNTPListNewsgroupsOperation.h" +#include "MCNNTPFetchOverviewOperation.h" #include "MCNNTPCheckAccountOperation.h" +#include "MCNNTPFetchServerTimeOperation.h" #include "MCNNTPDisconnectOperation.h" #include "MCOperationQueueCallback.h" #include "MCConnectionLogger.h" @@ -153,9 +155,9 @@ bool NNTPAsyncSession::isCheckCertificateEnabled() return mSession->isCheckCertificateEnabled(); } -MCNNTPFetchArticlesOperation * NNTPAsyncSession::fetchArticlesOperation(String * group) +NNTPFetchAllArticlesOperation * NNTPAsyncSession::fetchAllArticlesOperation(String * group) { - MCNNTPFetchArticlesOperation * op = new MCNNTPFetchArticlesOperation(); + NNTPFetchAllArticlesOperation * op = new NNTPFetchAllArticlesOperation(); op->setSession(this); op->setGroupName(group); op->autorelease(); @@ -182,6 +184,34 @@ NNTPFetchArticleOperation * NNTPAsyncSession::fetchArticleOperation(String * gro return op; } +NNTPFetchArticleOperation * NNTPAsyncSession::fetchArticleByMessageIDOperation(String *groupName, String *messageID) +{ + NNTPFetchArticleOperation * op = new NNTPFetchArticleOperation(); + op->setSession(this); + op->setGroupName(groupName); + op->setMessageID(messageID); + op->autorelease(); + return op; +} + +NNTPFetchOverviewOperation * NNTPAsyncSession::fetchOverviewOperationWithIndexes(String * groupName, IndexSet * indexes) +{ + NNTPFetchOverviewOperation * op = new NNTPFetchOverviewOperation(); + op->setSession(this); + op->setGroupName(groupName); + op->setIndexes(indexes); + op->autorelease(); + return op; +} + +NNTPFetchServerTimeOperation * NNTPAsyncSession::fetchServerDateOperation() +{ + NNTPFetchServerTimeOperation * op = new NNTPFetchServerTimeOperation(); + op->setSession(this); + op->autorelease(); + return op; +} + NNTPListNewsgroupsOperation * NNTPAsyncSession::listAllNewsgroupsOperation() { NNTPListNewsgroupsOperation * op = new NNTPListNewsgroupsOperation(); @@ -191,7 +221,7 @@ NNTPListNewsgroupsOperation * NNTPAsyncSession::listAllNewsgroupsOperation() return op; } -NNTPListNewsgroupsOperation * NNTPAsyncSession::listSubscribedNewsgroupsOperation() +NNTPListNewsgroupsOperation * NNTPAsyncSession::listDefaultNewsgroupsOperation() { NNTPListNewsgroupsOperation * op = new NNTPListNewsgroupsOperation(); op->setSession(this); diff --git a/src/async/nntp/MCNNTPAsyncSession.h b/src/async/nntp/MCNNTPAsyncSession.h index 66f0cc0d..d18ea119 100644 --- a/src/async/nntp/MCNNTPAsyncSession.h +++ b/src/async/nntp/MCNNTPAsyncSession.h @@ -12,8 +12,10 @@ namespace mailcore { class NNTPSession; class NNTPFetchHeaderOperation; class NNTPFetchArticleOperation; - class MCNNTPFetchArticlesOperation; + class NNTPFetchAllArticlesOperation; + class NNTPFetchOverviewOperation; class NNTPListNewsgroupsOperation; + class NNTPFetchServerTimeOperation; class NNTPOperationQueueCallback; class NNTPConnectionLogger; @@ -51,14 +53,19 @@ namespace mailcore { virtual dispatch_queue_t dispatchQueue(); #endif - virtual MCNNTPFetchArticlesOperation * fetchArticlesOperation(String * group); + virtual NNTPFetchAllArticlesOperation * fetchAllArticlesOperation(String * group); virtual NNTPFetchHeaderOperation * fetchHeaderOperation(String * groupName, unsigned int index); virtual NNTPFetchArticleOperation * fetchArticleOperation(String *groupName, unsigned int index); + virtual NNTPFetchArticleOperation * fetchArticleByMessageIDOperation(String * groupname, String * messageID); + + virtual NNTPFetchOverviewOperation * fetchOverviewOperationWithIndexes(String * groupName, IndexSet * indexes); + + virtual NNTPFetchServerTimeOperation * fetchServerDateOperation(); virtual NNTPListNewsgroupsOperation * listAllNewsgroupsOperation(); - virtual NNTPListNewsgroupsOperation * listSubscribedNewsgroupsOperation(); + virtual NNTPListNewsgroupsOperation * listDefaultNewsgroupsOperation(); virtual NNTPOperation * disconnectOperation(); diff --git a/src/async/nntp/MCNNTPFetchArticlesOperation.cc b/src/async/nntp/MCNNTPFetchAllArticlesOperation.cc index 39446f35..044e9e5e 100644 --- a/src/async/nntp/MCNNTPFetchArticlesOperation.cc +++ b/src/async/nntp/MCNNTPFetchAllArticlesOperation.cc @@ -1,49 +1,49 @@ // -// MCMCNNTPFetchArticlesOperation.cpp +// MCNNTPFetchAllArticlesOperation.cpp // mailcore2 // // Created by Robert Widmann on 8/13/14. // Copyright (c) 2014 MailCore. All rights reserved. // -#include "MCNNTPFetchArticlesOperation.h" +#include "MCNNTPFetchAllArticlesOperation.h" #include "MCNNTPAsyncSession.h" #include "MCNNTPSession.h" using namespace mailcore; -MCNNTPFetchArticlesOperation::MCNNTPFetchArticlesOperation() +NNTPFetchAllArticlesOperation::NNTPFetchAllArticlesOperation() { mGroupName = NULL; mArticles = NULL; } -MCNNTPFetchArticlesOperation::~MCNNTPFetchArticlesOperation() +NNTPFetchAllArticlesOperation::~NNTPFetchAllArticlesOperation() { MC_SAFE_RELEASE(mGroupName); MC_SAFE_RELEASE(mArticles); } -void MCNNTPFetchArticlesOperation::setGroupName(String * groupname) +void NNTPFetchAllArticlesOperation::setGroupName(String * groupname) { MC_SAFE_REPLACE_COPY(String, mGroupName, groupname); } -String * MCNNTPFetchArticlesOperation::groupName() +String * NNTPFetchAllArticlesOperation::groupName() { return mGroupName; } -IndexSet * MCNNTPFetchArticlesOperation::articles() +IndexSet * NNTPFetchAllArticlesOperation::articles() { return mArticles; } -void MCNNTPFetchArticlesOperation::main() +void NNTPFetchAllArticlesOperation::main() { ErrorCode error; - mArticles = session()->session()->fetchArticles(mGroupName, &error); + mArticles = session()->session()->fetchAllArticles(mGroupName, &error); setError(error); MC_SAFE_RETAIN(mArticles); } diff --git a/src/async/nntp/MCNNTPFetchArticlesOperation.h b/src/async/nntp/MCNNTPFetchAllArticlesOperation.h index fa0037c8..88395dee 100644 --- a/src/async/nntp/MCNNTPFetchArticlesOperation.h +++ b/src/async/nntp/MCNNTPFetchAllArticlesOperation.h @@ -1,5 +1,5 @@ // -// MCMCNNTPFetchArticlesOperation.h +// MCNNTPFetchAllArticlesOperation.h // mailcore2 // // Created by Robert Widmann on 8/13/14. @@ -16,10 +16,10 @@ namespace mailcore { - class MCNNTPFetchArticlesOperation : public NNTPOperation { + class NNTPFetchAllArticlesOperation : public NNTPOperation { public: - MCNNTPFetchArticlesOperation(); - virtual ~MCNNTPFetchArticlesOperation(); + NNTPFetchAllArticlesOperation(); + virtual ~NNTPFetchAllArticlesOperation(); virtual void setGroupName(String * groupName); virtual String * groupName(); diff --git a/src/async/nntp/MCNNTPFetchArticleOperation.cc b/src/async/nntp/MCNNTPFetchArticleOperation.cc index a12f346f..1df0dc33 100644 --- a/src/async/nntp/MCNNTPFetchArticleOperation.cc +++ b/src/async/nntp/MCNNTPFetchArticleOperation.cc @@ -1,5 +1,5 @@ // -// MCMCNNTPFetchArticlesOperation.cpp +// MCNNTPFetchArticleOperation.cpp // mailcore2 // // Created by Robert Widmann on 8/13/14. @@ -32,6 +32,14 @@ String * NNTPFetchArticleOperation::groupName() { return mGroupName; } +void NNTPFetchArticleOperation::setMessageID(String * groupName) { + MC_SAFE_REPLACE_COPY(String, mMessageID, groupName); +} + +String * NNTPFetchArticleOperation::messageID() { + return mMessageID; +} + void NNTPFetchArticleOperation::setMessageIndex(unsigned int messageIndex) { mMessageIndex = messageIndex; @@ -50,7 +58,11 @@ Data * NNTPFetchArticleOperation::data() void NNTPFetchArticleOperation::main() { ErrorCode error; - mData = session()->session()->fetchArticle(mGroupName, mMessageIndex, this, &error); + if (mMessageID == NULL) { + mData = session()->session()->fetchArticle(mGroupName, mMessageIndex, this, &error); + } else { + mData = session()->session()->fetchArticleByMessageID(mGroupName, mMessageID, &error); + } MC_SAFE_RETAIN(mData); setError(error); } diff --git a/src/async/nntp/MCNNTPFetchArticleOperation.h b/src/async/nntp/MCNNTPFetchArticleOperation.h index 4f607c4f..7b11ae16 100644 --- a/src/async/nntp/MCNNTPFetchArticleOperation.h +++ b/src/async/nntp/MCNNTPFetchArticleOperation.h @@ -1,5 +1,5 @@ // -// MCMCNNTPFetchArticlesOperation.h +// MCNNTPFetchArticleOperation.h // mailcore2 // // Created by Robert Widmann on 8/13/14. @@ -23,6 +23,9 @@ namespace mailcore { virtual void setGroupName(String * groupName); virtual String * groupName(); + virtual void setMessageID(String * groupName); + virtual String * messageID(); + virtual void setMessageIndex(unsigned int messageIndex); virtual unsigned int messageIndex(); @@ -33,6 +36,7 @@ namespace mailcore { private: String * mGroupName; + String * mMessageID; unsigned int mMessageIndex; Data * mData; diff --git a/src/async/nntp/MCNNTPFetchOverviewOperation.cc b/src/async/nntp/MCNNTPFetchOverviewOperation.cc new file mode 100644 index 00000000..b05b29e6 --- /dev/null +++ b/src/async/nntp/MCNNTPFetchOverviewOperation.cc @@ -0,0 +1,68 @@ +// +// NNTPFetchOverviewOperation.cpp +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#include "MCNNTPFetchOverviewOperation.h" + +#include "MCNNTPAsyncSession.h" +#include "MCNNTPSession.h" + +using namespace mailcore; + +NNTPFetchOverviewOperation::NNTPFetchOverviewOperation() +{ + mArticles = NULL; + mIndexes = NULL; + mGroupName = NULL; +} + +NNTPFetchOverviewOperation::~NNTPFetchOverviewOperation() +{ + MC_SAFE_RELEASE(mIndexes); + MC_SAFE_RELEASE(mGroupName); +} + +void NNTPFetchOverviewOperation::setIndexes(IndexSet * indexes) +{ + MC_SAFE_REPLACE_RETAIN(IndexSet, mIndexes, indexes); +} + +IndexSet * NNTPFetchOverviewOperation::indexes() +{ + return mIndexes; +} + +void NNTPFetchOverviewOperation::setGroupName(String * groupname) +{ + MC_SAFE_REPLACE_COPY(String, mGroupName, groupname); +} + +String * NNTPFetchOverviewOperation::groupName() +{ + return mGroupName; +} + +Array * NNTPFetchOverviewOperation::articles() { + return mArticles; +} + +void NNTPFetchOverviewOperation::main() +{ + ErrorCode error; + mArticles = Array::array(); + for(unsigned int i = 0 ; i < mIndexes->rangesCount() ; i ++) { + Range range = mIndexes->allRanges()[i]; + Array * articles = session()->session()->fetchOverArticlesInRange(range, mGroupName, &error); + if (error != ErrorNone) { + setError(error); + return; + } + mArticles->addObjectsFromArray(articles); + } + + setError(error); +} diff --git a/src/async/nntp/MCNNTPFetchOverviewOperation.h b/src/async/nntp/MCNNTPFetchOverviewOperation.h new file mode 100644 index 00000000..aab8d24b --- /dev/null +++ b/src/async/nntp/MCNNTPFetchOverviewOperation.h @@ -0,0 +1,45 @@ +// +// NNTPFetchOverviewOperation.h +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#ifndef MAILCORE_MCNNTPFETCHOVERVIEWOPERATION_H + +#define MAILCORE_MCNNTPFETCHOVERVIEWOPERATION_H + +#include <MailCore/MCNNTPOperation.h> + +#ifdef __cplusplus + +namespace mailcore { + + class NNTPFetchOverviewOperation : public NNTPOperation { + public: + NNTPFetchOverviewOperation(); + virtual ~NNTPFetchOverviewOperation(); + + virtual void setIndexes(IndexSet * indexes); + virtual IndexSet * indexes(); + + virtual void setGroupName(String * groupName); + virtual String * groupName(); + + virtual Array * articles(); + + public: // subclass behavior + virtual void main(); + + private: + IndexSet * mIndexes; + String * mGroupName; + Array * /* MessageHeader */ mArticles; + }; + +} + +#endif + +#endif diff --git a/src/async/nntp/MCNNTPFetchServerTimeOperation.cc b/src/async/nntp/MCNNTPFetchServerTimeOperation.cc new file mode 100644 index 00000000..86800733 --- /dev/null +++ b/src/async/nntp/MCNNTPFetchServerTimeOperation.cc @@ -0,0 +1,34 @@ +// +// MCNNTPFetchServerTimeOperation.cpp +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#include "MCNNTPFetchServerTimeOperation.h" + +#include "MCNNTPAsyncSession.h" +#include "MCNNTPSession.h" + +using namespace mailcore; + +NNTPFetchServerTimeOperation::NNTPFetchServerTimeOperation() +{ +} + +NNTPFetchServerTimeOperation::~NNTPFetchServerTimeOperation() +{ +} + +time_t NNTPFetchServerTimeOperation::time() +{ + return mTime; +} + +void NNTPFetchServerTimeOperation::main() +{ + ErrorCode error; + mTime = session()->session()->fetchServerDate(&error); + setError(error); +} diff --git a/src/async/nntp/MCNNTPFetchServerTimeOperation.h b/src/async/nntp/MCNNTPFetchServerTimeOperation.h new file mode 100644 index 00000000..22cebf25 --- /dev/null +++ b/src/async/nntp/MCNNTPFetchServerTimeOperation.h @@ -0,0 +1,37 @@ +// +// MCNNTPFetchServerTimeOperation.h +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#ifndef MAILCORE_MCNNTPFETCHSERVERTIMEOPERATION_H + +#define MAILCORE_MCNNTPFETCHSERVERTIMEOPERATION_H + +#include <MailCore/MCNNTPOperation.h> + +#ifdef __cplusplus + +namespace mailcore { + + class NNTPFetchServerTimeOperation : public NNTPOperation { + public: + NNTPFetchServerTimeOperation(); + virtual ~NNTPFetchServerTimeOperation(); + + virtual time_t time(); + + public: // subclass behavior + virtual void main(); + + private: + time_t mTime; + }; + +} + +#endif + +#endif diff --git a/src/async/nntp/MCNNTPListNewsgroupsOperation.cc b/src/async/nntp/MCNNTPListNewsgroupsOperation.cc index 253b38d0..3747bacf 100644 --- a/src/async/nntp/MCNNTPListNewsgroupsOperation.cc +++ b/src/async/nntp/MCNNTPListNewsgroupsOperation.cc @@ -40,7 +40,7 @@ void NNTPListNewsgroupsOperation::main() ErrorCode error; if (mListsSuscribed) { - mGroups = session()->session()->listSubscribedNewsgroups(&error); + mGroups = session()->session()->listDefaultNewsgroups(&error); } else { mGroups = session()->session()->listAllNewsgroups(&error); } diff --git a/src/cmake/async.cmake b/src/cmake/async.cmake index e38bffe2..58f410d4 100644 --- a/src/cmake/async.cmake +++ b/src/cmake/async.cmake @@ -57,9 +57,11 @@ set(async_nntp_files async/nntp/MCNNTPCheckAccountOperation.cc async/nntp/MCNNTPDisconnectOperation.cc async/nntp/MCNNTPFetchArticleOperation.cc - async/nntp/MCNNTPFetchArticlesOperation.cc + async/nntp/MCNNTPFetchAllArticlesOperation.cc async/nntp/MCNNTPFetchHeaderOperation.cc async/nntp/MCNNTPListNewsgroupsOperation.cc + async/nntp/MCNNTPFetchOverviewOperation.cc + async/nntp/MCNNTPFetchServerTimeOperation.cc async/nntp/MCNNTPOperation.cc ) diff --git a/src/cmake/objc.cmake b/src/cmake/objc.cmake index af1cfcf5..de4d8d06 100644 --- a/src/cmake/objc.cmake +++ b/src/cmake/objc.cmake @@ -77,10 +77,12 @@ set(objc_smtp_files set(objc_nntp_files objc/nntp/MCONNTPDisconnectOperation.mm objc/nntp/MCONNTPFetchArticleOperation.mm - objc/nntp/MCONNTPFetchArticlesOperation.mm + objc/nntp/MCONNTPFetchAllArticlesOperation.mm objc/nntp/MCONNTPFetchHeaderOperation.mm objc/nntp/MCONNTPGroupInfo.mm objc/nntp/MCONNTPListNewsgroupsOperation.mm + objc/nntp/MCONNTPFetchOverviewOperation.mm + objc/nntp/MCONNTPFetchServerTimeOperation.mm objc/nntp/MCONNTPOperation.mm objc/nntp/MCONNTPSession.mm ) diff --git a/src/cmake/public-headers.cmake b/src/cmake/public-headers.cmake index 705fbc66..8b55c15e 100644 --- a/src/cmake/public-headers.cmake +++ b/src/cmake/public-headers.cmake @@ -108,11 +108,13 @@ async/nntp/MCNNTPAsyncSession.h async/nntp/MCNNTPCheckAccountOperation.h async/nntp/MCNNTPDisconnectOperation.h async/nntp/MCNNTPFetchArticleOperation.h -async/nntp/MCNNTPFetchArticlesOperation.h +async/nntp/MCNNTPFetchAllArticlesOperation.h async/nntp/MCNNTPFetchHeaderOperation.h async/nntp/MCNNTPListNewsgroupsOperation.h +async/nntp/MCNNTPFetchOverviewOperation.h async/nntp/MCNNTPOperation.h async/nntp/MCNNTPOperationCallback.h +async/nntp/MCNNTPFetchServerTimeOperation.h objc/MCObjC.h objc/utils/MCOUtils.h objc/utils/MCOObjectWrapper.h @@ -186,13 +188,12 @@ objc/smtp/MCOSMTPOperation.h objc/nntp/MCONNTP.h objc/nntp/MCONNTPDisconnectOperation.h objc/nntp/MCONNTPFetchArticleOperation.h -objc/nntp/MCONNTPFetchArticleOperation.mm -objc/nntp/MCONNTPFetchArticlesOperation.h -objc/nntp/MCONNTPFetchArticlesOperation.mm +objc/nntp/MCONNTPFetchAllArticlesOperation.h objc/nntp/MCONNTPFetchHeaderOperation.h -objc/nntp/MCONNTPFetchHeaderOperation.mm objc/nntp/MCONNTPGroupInfo.h objc/nntp/MCONNTPListNewsgroupsOperation.h +objc/nntp/MCONNTPFetchOverviewOperation.h +objc/nntp/MCONNTPFetchServerTimeOperation.h objc/nntp/MCONNTPOperation.h objc/nntp/MCONNTPSession.h objc/provider/MCOProvider.h diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h index c81f8360..1b45ea69 100644 --- a/src/core/abstract/MCMessageConstants.h +++ b/src/core/abstract/MCMessageConstants.h @@ -249,6 +249,7 @@ namespace mailcore { ErrorNoRecipient, ErrorNoop, ErrorGmailApplicationSpecificPasswordRequired, + ErrorServerDate, }; enum PartType { diff --git a/src/core/nntp/MCNNTPSession.cc b/src/core/nntp/MCNNTPSession.cc index 02db197e..3c7ea7a3 100644 --- a/src/core/nntp/MCNNTPSession.cc +++ b/src/core/nntp/MCNNTPSession.cc @@ -21,6 +21,8 @@ using namespace mailcore; +static int xover_resp_to_fields(struct newsnntp_xover_resp_item * item, struct mailimf_fields ** result); + enum { STATE_DISCONNECTED, STATE_CONNECTED, @@ -359,16 +361,17 @@ Array * NNTPSession::listAllNewsgroups(ErrorCode * pError) return result; } -Array * NNTPSession::listSubscribedNewsgroups(ErrorCode * pError) +Array * NNTPSession::listDefaultNewsgroups(ErrorCode * pError) { int r; clist * subd_groups; MCLog("fetch subscribed"); loginIfNeeded(pError); - if (* pError != ErrorNone) + if (* pError != ErrorNone) { return NULL; - + } + r = newsnntp_list_subscriptions(mNNTP, &subd_groups); MCLog("fetch subscribed %u", r); @@ -390,10 +393,11 @@ Array * NNTPSession::listSubscribedNewsgroups(ErrorCode * pError) } newsnntp_list_subscriptions_free(subd_groups); * pError = ErrorNone; - + return result; } + MessageHeader * NNTPSession::fetchHeader(String *groupName, unsigned int index, ErrorCode * pError) { int r; @@ -401,10 +405,6 @@ MessageHeader * NNTPSession::fetchHeader(String *groupName, unsigned int index, size_t content_len; MCLog("fetch header at index %u", index); - loginIfNeeded(pError); - if (* pError != ErrorNone) { - return NULL; - } selectGroup(groupName, pError); if (* pError != ErrorNone) { @@ -438,17 +438,46 @@ Data * NNTPSession::fetchArticle(String *groupName, unsigned int index, NNTPProg MCLog("fetch article at index %u", index); - loginIfNeeded(pError); + selectGroup(groupName, pError); if (* pError != ErrorNone) { return NULL; } + r = newsnntp_article(mNNTP, index, &content, &content_len); + if (r == NEWSNNTP_ERROR_STREAM) { + * pError = ErrorConnection; + return NULL; + } + else if (r != NEWSNNTP_NO_ERROR) { + * pError = ErrorFetchMessageList; + return NULL; + } + + Data * result; + result = Data::dataWithBytes(content, (unsigned int) content_len); + newsnntp_article_free(content); + * pError = ErrorNone; + + return result; +} + +Data * NNTPSession::fetchArticleByMessageID(String * groupName, String * messageID, ErrorCode * pError) +{ + int r; + char * msgID; + char * content; + size_t content_len; + + MCLog("fetch article at message-id %s", messageID->UTF8Characters()); + selectGroup(groupName, pError); if (* pError != ErrorNone) { return NULL; } - r = newsnntp_article(mNNTP, index, &content, &content_len); + msgID = strdup(messageID->UTF8Characters()); + + r = newsnntp_article_by_message_id(mNNTP, msgID, &content, &content_len); if (r == NEWSNNTP_ERROR_STREAM) { * pError = ErrorConnection; return NULL; @@ -466,7 +495,34 @@ Data * NNTPSession::fetchArticle(String *groupName, unsigned int index, NNTPProg return result; } -IndexSet * NNTPSession::fetchArticles(String * groupName, ErrorCode * pError) +time_t NNTPSession::fetchServerDate(ErrorCode * pError) { + int r; + struct tm time; + time_t result; + + loginIfNeeded(pError); + if (* pError != ErrorNone) { + return NULL; + } + + r = newsnntp_date(mNNTP, &time); + + if (r == NEWSNNTP_ERROR_STREAM) { + * pError = ErrorConnection; + return NULL; + } + else if (r != NEWSNNTP_NO_ERROR) { + * pError = ErrorServerDate; + return NULL; + } + + result = timegm(&time); + * pError = ErrorNone; + + return result; +} + +IndexSet * NNTPSession::fetchAllArticles(String * groupName, ErrorCode * pError) { int r; clist * msg_list; @@ -506,11 +562,61 @@ IndexSet * NNTPSession::fetchArticles(String * groupName, ErrorCode * pError) return result; } +Array * NNTPSession::fetchOverArticlesInRange(Range range, String * groupName, ErrorCode * pError) +{ + int r; + clist * msg_list; + + selectGroup(groupName, pError); + if (* pError != ErrorNone) { + return NULL; + } + r = newsnntp_xover_range(mNNTP, (uint32_t) range.location, (uint32_t) (range.location + range.length), &msg_list); + if (r == NEWSNNTP_ERROR_STREAM) { + * pError = ErrorConnection; + return NULL; + } + else if (r != NEWSNNTP_NO_ERROR) { + * pError = ErrorFetchMessageList; + return NULL; + } + + Array * result = Array::array(); + clistiter * iter; + for(iter = clist_begin(msg_list) ;iter != NULL ; iter = clist_next(iter)) { + struct newsnntp_xover_resp_item * item; + struct mailimf_fields * fields = NULL; + + item = (struct newsnntp_xover_resp_item *) clist_content(iter); + if (!item) { + continue; + } + + r = xover_resp_to_fields(item, &fields); + if (r == MAIL_NO_ERROR) { + MessageHeader * header = new MessageHeader(); + header->importIMFFields(fields); + result->addObject(header); + header->release(); + } + } + + newsnntp_xover_resp_list_free(msg_list); + * pError = ErrorNone; + + return result; +} + void NNTPSession::selectGroup(String * folder, ErrorCode * pError) { int r; struct newsnntp_group_info * info; + loginIfNeeded(pError); + if (* pError != ErrorNone) { + return; + } + readerIfNeeded(pError); if (* pError != ErrorNone) { return; @@ -545,3 +651,241 @@ ConnectionLogger * NNTPSession::connectionLogger() { return mConnectionLogger; } + +// Taken from nntp/nntpdriver.c +static int xover_resp_to_fields(struct newsnntp_xover_resp_item * item, struct mailimf_fields ** result) +{ + size_t cur_token; + clist * list; + struct mailimf_fields * fields; + int r; + + list = clist_new(); + if (list == NULL) { + r = MAIL_ERROR_MEMORY; + goto err; + } + + if (item->ovr_subject != NULL) { + char * subject_str; + struct mailimf_subject * subject; + struct mailimf_field * field; + + subject_str = strdup(item->ovr_subject); + if (subject_str == NULL) { + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + subject = mailimf_subject_new(subject_str); + if (subject == NULL) { + free(subject_str); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + field = mailimf_field_new(MAILIMF_FIELD_SUBJECT, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, subject, NULL, NULL, NULL); + if (field == NULL) { + mailimf_subject_free(subject); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + r = clist_append(list, field); + if (r < 0) { + mailimf_field_free(field); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + } + + if (item->ovr_author != NULL) { + struct mailimf_mailbox_list * mb_list; + struct mailimf_from * from; + struct mailimf_field * field; + + cur_token = 0; + r = mailimf_mailbox_list_parse(item->ovr_author, strlen(item->ovr_author), + &cur_token, &mb_list); + switch (r) { + case MAILIMF_NO_ERROR: + from = mailimf_from_new(mb_list); + if (from == NULL) { + mailimf_mailbox_list_free(mb_list); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + field = mailimf_field_new(MAILIMF_FIELD_FROM, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, from, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL); + if (field == NULL) { + mailimf_from_free(from); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + r = clist_append(list, field); + if (r < 0) { + mailimf_field_free(field); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + break; + + case MAILIMF_ERROR_PARSE: + break; + + default: + goto free_list; + } + } + + if (item->ovr_date != NULL) { + struct mailimf_date_time * date_time; + struct mailimf_orig_date * orig_date; + struct mailimf_field * field; + + cur_token = 0; + r = mailimf_date_time_parse(item->ovr_date, strlen(item->ovr_date), + &cur_token, &date_time); + switch (r) { + case MAILIMF_NO_ERROR: + orig_date = mailimf_orig_date_new(date_time); + if (orig_date == NULL) { + mailimf_date_time_free(date_time); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + field = mailimf_field_new(MAILIMF_FIELD_ORIG_DATE, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, orig_date, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL); + if (field == NULL) { + mailimf_orig_date_free(orig_date); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + r = clist_append(list, field); + if (r < 0) { + mailimf_field_free(field); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + break; + + case MAILIMF_ERROR_PARSE: + break; + + default: + goto free_list; + } + } + + if (item->ovr_message_id != NULL) { + char * msgid_str; + struct mailimf_message_id * msgid; + struct mailimf_field * field; + + cur_token = 0; + r = mailimf_msg_id_parse(item->ovr_message_id, strlen(item->ovr_message_id), + &cur_token, &msgid_str); + + switch (r) { + case MAILIMF_NO_ERROR: + msgid = mailimf_message_id_new(msgid_str); + if (msgid == NULL) { + mailimf_msg_id_free(msgid_str); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + field = mailimf_field_new(MAILIMF_FIELD_MESSAGE_ID, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, msgid, NULL, + NULL, NULL, NULL, NULL, NULL); + + r = clist_append(list, field); + if (r < 0) { + mailimf_field_free(field); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + break; + + case MAILIMF_ERROR_PARSE: + break; + + default: + goto free_list; + } + } + + if (item->ovr_references != NULL) { + clist * msgid_list; + struct mailimf_references * references; + struct mailimf_field * field; + + cur_token = 0; + + r = mailimf_msg_id_list_parse(item->ovr_references, strlen(item->ovr_references), + &cur_token, &msgid_list); + + switch (r) { + case MAILIMF_NO_ERROR: + references = mailimf_references_new(msgid_list); + if (references == NULL) { + clist_foreach(msgid_list, + (clist_func) mailimf_msg_id_free, NULL); + clist_free(msgid_list); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + field = mailimf_field_new(MAILIMF_FIELD_REFERENCES, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, + references, NULL, NULL, NULL, NULL); + + r = clist_append(list, field); + if (r < 0) { + mailimf_field_free(field); + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + case MAILIMF_ERROR_PARSE: + break; + + default: + goto free_list; + } + } + + fields = mailimf_fields_new(list); + if (fields == NULL) { + r = MAIL_ERROR_MEMORY; + goto free_list; + } + + * result = fields; + + return MAIL_NO_ERROR; + +free_list: + clist_foreach(list, (clist_func) mailimf_field_free, NULL); + clist_free(list); +err: + return r; +} diff --git a/src/core/nntp/MCNNTPSession.h b/src/core/nntp/MCNNTPSession.h index a6fb511c..d410fdcf 100644 --- a/src/core/nntp/MCNNTPSession.h +++ b/src/core/nntp/MCNNTPSession.h @@ -45,13 +45,17 @@ namespace mailcore { virtual void checkAccount(ErrorCode * pError); virtual Array * /* NNTPGroupInfo */ listAllNewsgroups(ErrorCode * pError); - virtual Array * listSubscribedNewsgroups(ErrorCode * pError); + virtual Array * /* NNTPGroupInfo */ listDefaultNewsgroups(ErrorCode * pError); - virtual MessageHeader * fetchHeader(String *groupName, unsigned int index, ErrorCode * pError); - - virtual IndexSet * fetchArticles(String * groupname, ErrorCode * pError); + virtual MessageHeader * fetchHeader(String * groupName, unsigned int index, ErrorCode * pError); + virtual Array /*MessageHeader*/ * fetchOverArticlesInRange(Range range, String * groupname, ErrorCode * pError); + + virtual IndexSet * fetchAllArticles(String * groupname, ErrorCode * pError); + + virtual Data * fetchArticle(String *groupName, unsigned int index, NNTPProgressCallback * callback, ErrorCode * pError); + virtual Data * fetchArticleByMessageID(String * groupname, String * messageID, ErrorCode * pError); - Data * fetchArticle(String *groupName, unsigned int index, NNTPProgressCallback * callback, ErrorCode * pError); + virtual time_t fetchServerDate(ErrorCode * pError); virtual void setConnectionLogger(ConnectionLogger * logger); virtual ConnectionLogger * connectionLogger(); diff --git a/src/objc/nntp/MCONNTP.h b/src/objc/nntp/MCONNTP.h index 980d0c39..71979dfa 100644 --- a/src/objc/nntp/MCONNTP.h +++ b/src/objc/nntp/MCONNTP.h @@ -14,8 +14,10 @@ #include <MailCore/MCONNTPOperation.h> #include <MailCore/MCONNTPFetchHeaderOperation.h> #include <MailCore/MCONNTPFetchArticleOperation.h> -#include <MailCore/MCONNTPFetchArticlesOperation.h> +#include <MailCore/MCONNTPFetchAllArticlesOperation.h> #include <MailCore/MCONNTPListNewsgroupsOperation.h> +#include <MailCore/MCONNTPFetchOverviewOperation.h> +#include <MailCore/MCONNTPFetchServerTimeOperation.h> #include <MailCore/MCONNTPGroupInfo.h> #endif diff --git a/src/objc/nntp/MCONNTPFetchArticlesOperation.h b/src/objc/nntp/MCONNTPFetchAllArticlesOperation.h index 35a0889d..34ccee7e 100644 --- a/src/objc/nntp/MCONNTPFetchArticlesOperation.h +++ b/src/objc/nntp/MCONNTPFetchAllArticlesOperation.h @@ -1,5 +1,5 @@ // -// MCONNTPFetchArticlesOperation.h +// MCONNTPFetchAllArticlesOperation.h // mailcore2 // // Created by Robert Widmann on 8/13/14. @@ -16,7 +16,7 @@ @class MCOIndexSet; /** This is an asynchronous operation that will fetch the list of a messages on the NNTP server. */ -@interface MCONNTPFetchArticlesOperation : MCONNTPOperation +@interface MCONNTPFetchAllArticlesOperation : MCONNTPOperation /** Starts the asynchronous fetch operation. diff --git a/src/objc/nntp/MCONNTPFetchArticlesOperation.mm b/src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm index 6e13a5d2..947f0324 100644 --- a/src/objc/nntp/MCONNTPFetchArticlesOperation.mm +++ b/src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm @@ -1,12 +1,12 @@ // -// MCONNTPFetchArticlesOperation.m +// MCONNTPFetchAllArticlesOperation.m // mailcore2 // // Created by Robert Widmann on 8/13/14. // Copyright (c) 2014 MailCore. All rights reserved. // -#import "MCONNTPFetchArticlesOperation.h" +#import "MCONNTPFetchAllArticlesOperation.h" #include "MCAsyncNNTP.h" @@ -15,11 +15,11 @@ typedef void (^CompletionType)(NSError *error, MCOIndexSet * articles); -@implementation MCONNTPFetchArticlesOperation { +@implementation MCONNTPFetchAllArticlesOperation { CompletionType _completionBlock; } -#define nativeType mailcore::MCNNTPFetchArticlesOperation +#define nativeType mailcore::NNTPFetchAllArticlesOperation + (void) load { diff --git a/src/objc/nntp/MCONNTPFetchOverviewOperation.h b/src/objc/nntp/MCONNTPFetchOverviewOperation.h new file mode 100644 index 00000000..d63668e8 --- /dev/null +++ b/src/objc/nntp/MCONNTPFetchOverviewOperation.h @@ -0,0 +1,32 @@ +// +// MCONNTPFetchOverviewOperation.h +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#ifndef MAILCORE_MCONNTPFETCHOVERVIEWOPERATION_H + +#define MAILCORE_MCONNTPFETCHOVERVIEWOPERATION_H + +#import <Foundation/Foundation.h> +#import <MailCore/MCONNTPOperation.h> + +@interface MCONNTPFetchOverviewOperation : MCONNTPOperation + +/** + Starts the asynchronous fetch operation. + + @param completionBlock Called when the operation is finished. + + - On success `error` will be nil and `messages` will be an array of MCOMessageHeaders + + - On failure, `error` will be set with `MCOErrorDomain` as domain and an + error code available in MCOConstants.h, `messages` will be null + */ +- (void) start:(void (^)(NSError * error, NSArray * /* MCOMessageHeader */ messages))completionBlock; + +@end + +#endif diff --git a/src/objc/nntp/MCONNTPFetchOverviewOperation.mm b/src/objc/nntp/MCONNTPFetchOverviewOperation.mm new file mode 100644 index 00000000..60bf2161 --- /dev/null +++ b/src/objc/nntp/MCONNTPFetchOverviewOperation.mm @@ -0,0 +1,69 @@ +// +// MCONNTPFetchOverviewOperation.m +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#import "MCONNTPFetchOverviewOperation.h" + +#include "MCAsyncNNTP.h" + +#import "MCOUtils.h" +#import "MCOOperation+Private.h" + +typedef void (^CompletionType)(NSError *error, NSArray * groups); + +@implementation MCONNTPFetchOverviewOperation { + CompletionType _completionBlock; +} + +#define nativeType mailcore::NNTPFetchOverviewOperation + ++ (void) load +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + nativeType * op = (nativeType *) object; + return [[[self alloc] initWithMCOperation:op] autorelease]; +} + +- (void) dealloc +{ + [_completionBlock release]; + [super dealloc]; +} + +- (void) start:(void (^)(NSError *error, NSArray * groups))completionBlock +{ + _completionBlock = [completionBlock copy]; + [self start]; +} + +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void) operationCompleted +{ + if (_completionBlock == NULL) + return; + + nativeType *op = MCO_NATIVE_INSTANCE; + if (op->error() == mailcore::ErrorNone) { + _completionBlock(nil, MCO_TO_OBJC(op->articles())); + } else { + _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil); + } + [_completionBlock release]; + _completionBlock = nil; +} + +@end
\ No newline at end of file diff --git a/src/objc/nntp/MCONNTPFetchServerTimeOperation.h b/src/objc/nntp/MCONNTPFetchServerTimeOperation.h new file mode 100644 index 00000000..a06dd746 --- /dev/null +++ b/src/objc/nntp/MCONNTPFetchServerTimeOperation.h @@ -0,0 +1,35 @@ +// +// MCONNTPFetchServerTimeOperation.h +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#ifndef MAILCORE_MCONNTPFETCHSERVERTIMEOPERATION_H + +#define MAILCORE_MCONNTPFETCHSERVERTIMEOPERATION_H + +#import <Foundation/Foundation.h> +#import <MailCore/MCONNTPOperation.h> + +@class MCOIndexSet; + +/** This is an asynchronous operation that will fetch the list of a messages on the NNTP server. */ +@interface MCONNTPFetchServerTimeOperation : MCONNTPOperation + +/** + Starts the asynchronous fetch operation. + + @param completionBlock Called when the operation is finished. + + - On success `error` will be nil and `date` will be the server's date and time as an NSDate. + + - On failure, `error` will be set with `MCOErrorDomain` as domain and an + error code available in MCOConstants.h, `messages` will be null + */ +- (void) start:(void (^)(NSError * error, NSDate * date))completionBlock; + +@end + +#endif diff --git a/src/objc/nntp/MCONNTPFetchServerTimeOperation.mm b/src/objc/nntp/MCONNTPFetchServerTimeOperation.mm new file mode 100644 index 00000000..a2f51f91 --- /dev/null +++ b/src/objc/nntp/MCONNTPFetchServerTimeOperation.mm @@ -0,0 +1,70 @@ +// +// MCONNTPFetchServerTimeOperation.m +// mailcore2 +// +// Created by Robert Widmann on 10/21/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#import "MCONNTPFetchServerTimeOperation.h" + +#include "MCAsyncNNTP.h" + +#import "MCOOperation+Private.h" +#import "MCOUtils.h" + +typedef void (^CompletionType)(NSError *error, NSDate * date); + +@implementation MCONNTPFetchServerTimeOperation { + CompletionType _completionBlock; +} + +#define nativeType mailcore::NNTPFetchServerTimeOperation + ++ (void) load +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + nativeType * op = (nativeType *) object; + return [[[self alloc] initWithMCOperation:op] autorelease]; +} + +- (void) dealloc +{ + [_completionBlock release]; + [super dealloc]; +} + +- (void) start:(void (^)(NSError *error, NSDate * date))completionBlock +{ + _completionBlock = [completionBlock copy]; + [self start]; +} + +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void) operationCompleted +{ + if (_completionBlock == NULL) + return; + + nativeType *op = MCO_NATIVE_INSTANCE; + if (op->error() == mailcore::ErrorNone) { + _completionBlock(nil, [NSDate dateWithTimeIntervalSince1970:op->time()]); + } else { + _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil); + } + [_completionBlock release]; + _completionBlock = nil; +} + + +@end diff --git a/src/objc/nntp/MCONNTPSession.h b/src/objc/nntp/MCONNTPSession.h index 6712d9e4..413de507 100644 --- a/src/objc/nntp/MCONNTPSession.h +++ b/src/objc/nntp/MCONNTPSession.h @@ -16,11 +16,14 @@ #import <MailCore/MCOConstants.h> -@class MCONNTPFetchArticlesOperation; +@class MCONNTPFetchAllArticlesOperation; @class MCONNTPFetchHeaderOperation; @class MCONNTPFetchArticleOperation; @class MCONNTPListNewsgroupsOperation; +@class MCONNTPFetchOverviewOperation; +@class MCONNTPFetchServerTimeOperation; @class MCONNTPOperation; +@class MCOIndexSet; /** This class implements asynchronous access to the NNTP protocol.*/ @@ -68,16 +71,16 @@ /** Returns an operation that will fetch the list of article numbers. - MCONNTPFetchArticlesOperation * op = [session fetchArticlesOperation]; + MCONNTPFetchAllArticlesOperation * op = [session fetchAllArticlesOperation:@"comp.lang.c"]; [op start:^(NSError * error, MCOIndexSet * articles) { }]; */ -- (MCONNTPFetchArticlesOperation *) fetchArticlesOperation:(NSString *)group; +- (MCONNTPFetchAllArticlesOperation *) fetchAllArticlesOperation:(NSString *)group; /** Returns an operation that will fetch the header of the given message. - MCONNTPFetchHeaderOperation * op = [session fetchHeaderOperationWithIndex:idx inGroup:@"Group"]; + MCONNTPFetchHeaderOperation * op = [session fetchHeaderOperationWithIndex:idx inGroup:@"comp.lang.c"]; [op start:^(NSError * error, MCOMessageHeader * header) { // header is the parsed header of the message. }]; @@ -85,9 +88,19 @@ - (MCONNTPFetchHeaderOperation *) fetchHeaderOperationWithIndex:(unsigned int)index inGroup:(NSString *)group; /** + Returns an operation that will fetch an overview (headers) for a set of messages. + + MCONNTPFetchHeaderOperation * op = [session fetchOverviewOperationWithIndexes:indexes inGroup:@"comp.lang.c"]; + [op start:^(NSError * error, NSArray * headers) { + // headers are the parsed headers of each part of the overview. + }]; + */ +- (MCONNTPFetchOverviewOperation *)fetchOverviewOperationWithIndexes:(MCOIndexSet *)indexes inGroup:(NSString *)group; + +/** Returns an operation that will fetch the content of the given message. - MCONNTPFetchArticleOperation * op = [session fetchArticleOperationWithIndex:idx inGroup:@"Group"]; + MCONNTPFetchArticleOperation * op = [session fetchArticleOperationWithIndex:idx inGroup:@"comp.lang.c"]; [op start:^(NSError * error, NSData * messageData) { // messageData is the RFC 822 formatted message data. }]; @@ -95,6 +108,25 @@ - (MCONNTPFetchArticleOperation *) fetchArticleOperationWithIndex:(unsigned int)index inGroup:(NSString *)group; /** + Returns an operation that will fetch the content of a message with the given messageID. + + MCONNTPFetchArticleOperation * op = [session fetchArticleOperationWithMessageID:@"<MessageID123@mail.google.com>" inGroup:@"comp.lang.c"]; + [op start:^(NSError * error, NSData * messageData) { + // messageData is the RFC 822 formatted message data. + }]; + */ +- (MCONNTPFetchArticleOperation *) fetchArticleOperationWithMessageID:(NSString *)messageID inGroup:(NSString *)group; + +/** + Returns an operation that will fetch the server's date and time. + + MCONNTPFetchArticleOperation * op = [session fetchServerDateOperation]; + [op start:^(NSError * error, NSDate * serverDate) { + }]; + */ +- (MCONNTPFetchServerTimeOperation *) fetchServerDateOperation; + +/** Returns an operation that will list all available newsgroups. MCONNTPListNewsgroupsOperation * op = [session listAllNewsgroupsOperation]; @@ -104,13 +136,13 @@ - (MCONNTPListNewsgroupsOperation *) listAllNewsgroupsOperation; /** - Returns an operation that will list all newsgroups subscribed to by the user. + Returns an operation that will list server-suggested default newsgroups. - MCONNTPListNewsgroupsOperation * op = [session listSubscribedNewsgroupsOperation]; - [op start:^(NSError * error, NSArray * subscribedGroups) { + MCONNTPListNewsgroupsOperation * op = [session listDefaultNewsgroupsOperation]; + [op start:^(NSError * error, NSArray * defaultGroups) { }]; */ -- (MCONNTPListNewsgroupsOperation *) listSubscribedNewsgroupsOperation; +- (MCONNTPListNewsgroupsOperation *) listDefaultNewsgroupsOperation; /** Returns an operation that will disconnect the session. diff --git a/src/objc/nntp/MCONNTPSession.mm b/src/objc/nntp/MCONNTPSession.mm index ead237ea..95c87364 100644 --- a/src/objc/nntp/MCONNTPSession.mm +++ b/src/objc/nntp/MCONNTPSession.mm @@ -13,7 +13,7 @@ #import "MCOUtils.h" #import "MCONNTPOperation.h" #import "MCOOperation+Private.h" -#import "MCONNTPFetchArticlesOperation.h" +#import "MCONNTPFetchAllArticlesOperation.h" #import "MCONNTPOperation+Private.h" using namespace mailcore; @@ -122,9 +122,9 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, return result; } -- (MCONNTPFetchArticlesOperation *) fetchArticlesOperation:(NSString *)group +- (MCONNTPFetchAllArticlesOperation *) fetchAllArticlesOperation:(NSString *)group { - mailcore::MCNNTPFetchArticlesOperation * coreOp = MCO_NATIVE_INSTANCE->fetchArticlesOperation(MCO_FROM_OBJC(mailcore::String, group)); + mailcore::NNTPFetchAllArticlesOperation * coreOp = MCO_NATIVE_INSTANCE->fetchAllArticlesOperation(MCO_FROM_OBJC(mailcore::String, group)); return MCO_TO_OBJC_OP(coreOp); } @@ -140,13 +140,28 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, return MCO_TO_OBJC_OP(coreOp); } +- (MCONNTPFetchArticleOperation *) fetchArticleOperationWithMessageID:(NSString *)messageID inGroup:(NSString *)group { + mailcore::NNTPFetchArticleOperation * coreOp = MCO_NATIVE_INSTANCE->fetchArticleByMessageIDOperation(MCO_FROM_OBJC(mailcore::String, group), MCO_FROM_OBJC(mailcore::String, messageID)); + return MCO_TO_OBJC_OP(coreOp); +} + +- (MCONNTPFetchOverviewOperation *)fetchOverviewOperationWithIndexes:(MCOIndexSet *)indexes inGroup:(NSString *)group { + mailcore::NNTPFetchOverviewOperation * coreOp = MCO_NATIVE_INSTANCE->fetchOverviewOperationWithIndexes(MCO_FROM_OBJC(mailcore::String, group), MCO_FROM_OBJC(mailcore::IndexSet, indexes)); + return MCO_TO_OBJC_OP(coreOp); +} + +- (MCONNTPFetchServerTimeOperation *) fetchServerDateOperation { + mailcore::NNTPFetchServerTimeOperation * coreOp = MCO_NATIVE_INSTANCE->fetchServerDateOperation(); + return MCO_TO_OBJC_OP(coreOp); +} + - (MCONNTPListNewsgroupsOperation *) listAllNewsgroupsOperation { mailcore::NNTPListNewsgroupsOperation * coreOp = MCO_NATIVE_INSTANCE->listAllNewsgroupsOperation(); return MCO_TO_OBJC_OP(coreOp); } -- (MCONNTPListNewsgroupsOperation *) listSubscribedNewsgroupsOperation { - mailcore::NNTPListNewsgroupsOperation * coreOp = MCO_NATIVE_INSTANCE->listSubscribedNewsgroupsOperation(); +- (MCONNTPListNewsgroupsOperation *) listDefaultNewsgroupsOperation { + mailcore::NNTPListNewsgroupsOperation * coreOp = MCO_NATIVE_INSTANCE->listDefaultNewsgroupsOperation(); return MCO_TO_OBJC_OP(coreOp); } |