1 /* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 * http://www.mozilla.org/MPL/
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 *
15 * The Original Code is mozilla.org code.
16 *
17 * The Initial Developer of the Original Code is
18 * Netscape Communications Corporation.
19 * Portions created by the Initial Developer are Copyright (C) 2000
20 * the Initial Developer. All Rights Reserved.
21 *
22 * Contributor(s):
23 *
24 * Alternatively, the contents of this file may be used under the terms of
25 * either of the GNU General Public License Version 2 or later (the "GPL"),
26 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27 * in which case the provisions of the GPL or the LGPL are applicable instead
28 * of those above. If you wish to allow use of your version of this file only
29 * under the terms of either the GPL or the LGPL, and not to allow others to
30 * use your version of this file under the terms of the MPL, indicate your
31 * decision by deleting the provisions above and replace them with the notice
32 * and other provisions required by the GPL or the LGPL. If you do not delete
33 * the provisions above, a recipient may use your version of this file under
34 * the terms of any one of the MPL, the GPL or the LGPL.
35 *
36 * ***** END LICENSE BLOCK ***** */
37
38 ////////////////////////////////////////////////////////////////////////////////////////
39 // The IMAP Service is an interfaced designed to make building and running imap urls
40 // easier. Clients typically go to the imap service and ask it do things such as:
41 // get new mail, etc....
42 //
43 // Oh and in case you couldn't tell by the name, the imap service is a service! and you
44 // should go through the service manager to obtain an instance of it.
45 ////////////////////////////////////////////////////////////////////////////////////////
46
47 #include "nsISupports.idl"
48 #include "nsIImapUrl.idl"
49
50 interface nsIImapProtocol;
51 interface nsIImapMessageSink;
52 interface nsIUrlListener;
53 interface nsIURI;
54 interface nsIEventTarget;
55 interface nsIFile;
56 interface nsIMsgFolder;
57 interface nsIMsgWindow;
58 interface nsIImapIncomingServer;
59 interface nsICacheSession;
60
61 [scriptable, uuid(cb905844-b1e1-4850-96c7-407c166319f2)]
62 interface nsIImapService : nsISupports
63 {
64 // As always, you can pass in null for the url listener and the url if you don't require either.....
65 // aClientEventTarget is the event queue of the event sinks. We post events into this queue.
66 // mscott -- eventually this function will take in the account (identity/incoming server) associated with
67 // the request
68 void selectFolder(in nsIEventTarget aClientEventTarget,
69 in nsIMsgFolder aImapMailFolder,
70 in nsIUrlListener aUrlListener,
71 in nsIMsgWindow aMsgWindow,
72 out nsIURI aURL);
73
74 void liteSelectFolder(in nsIEventTarget aClientEventTarget,
75 in nsIMsgFolder aImapMailFolder,
76 in nsIUrlListener aUrlListener,
77 out nsIURI aURL);
78
79 void fetchMessage(in nsIImapUrl aUrl,
80 in nsImapState aImapAction,
81 in nsIMsgFolder aImapMailFolder,
82 in nsIImapMessageSink aImapMessageSink,
83 in nsIMsgWindow aMsgWindow,
84 in nsISupports aConsumer,
85 in ACString aMessageIdentifierList,
86 in boolean convertDataToText,
87 in ACString additionalHeader,
88 out nsIURI aOutURL);
89
90 void noop(in nsIEventTarget aClientEventTarget,
91 in nsIMsgFolder aImapMailFolder,
92 in nsIUrlListener aUrlListener,
93 out nsIURI aURL);
94
95 void getHeaders(in nsIEventTarget aClientEventTarget,
96 in nsIMsgFolder aImapMailFolder,
97 in nsIUrlListener aUrlListener,
98 out nsIURI aURL,
99 in ACString aMessageIdentifierList,
100 in boolean aMessageIdsAreUID);
101
102 nsIURI getBodyStart(in nsIEventTarget aClientEventTarget,
103 in nsIMsgFolder aImapMailFolder,
104 in nsIUrlListener aUrlListener,
105 in ACString aMessageIdentifierList,
106 in long numBytes);
107
108 void expunge(in nsIEventTarget aClientEventTarget,
109 in nsIMsgFolder aImapMailFolder,
110 in nsIUrlListener aUrlListener,
111 out nsIURI aURL);
112
113 nsIURI updateFolderStatus(in nsIEventTarget aClientEventTarget,
114 in nsIMsgFolder aImapMailFolder,
115 in nsIUrlListener aUrlListener);
116
117 void biff(in nsIEventTarget aClientEventTarget,
118 in nsIMsgFolder aImapMailFolder,
119 in nsIUrlListener aUrlListener,
120 out nsIURI aURL,
121 in unsigned long aUidHighWater);
122
123 void deleteMessages(in nsIEventTarget aClientEventTarget,
124 in nsIMsgFolder aImapMailFolder,
125 in nsIUrlListener aUrlListener,
126 out nsIURI aURL,
127 in ACString aMessageIdentifierList,
128 in boolean aMessageIdsAreUID);
129
130 void deleteAllMessages(in nsIEventTarget aClientEventTarget,
131 in nsIMsgFolder aImapMailFolder,
132 in nsIUrlListener aUrlListener,
133 out nsIURI aURL);
134
135 void addMessageFlags(in nsIEventTarget aClientEventTarget,
136 in nsIMsgFolder aImapMailFolder,
137 in nsIUrlListener aUrlListener,
138 out nsIURI aURL,
139 in ACString aMessageIdentifierList,
140 in imapMessageFlagsType aFlags,
141 in boolean aMessageIdsAreUID);
142
143 void subtractMessageFlags(in nsIEventTarget aClientEventTarget,
144 in nsIMsgFolder aImapMailFolder,
145 in nsIUrlListener aUrlListener,
146 out nsIURI aURL,
147 in ACString aMessageIdentifierList,
148 in imapMessageFlagsType aFlags,
149 in boolean aMessageIdsAreUID);
150
151 void setMessageFlags(in nsIEventTarget aClientEventTarget,
152 in nsIMsgFolder aImapMailFolder,
153 in nsIUrlListener aUrlListener,
154 out nsIURI aURL,
155 in ACString aMessageIdentifierList,
156 in imapMessageFlagsType aFlags,
157 in boolean aMessageIdsAreUID);
158
159 void discoverAllFolders(in nsIEventTarget aClientEventTarget,
160 in nsIMsgFolder aImapMailFolder,
161 in nsIUrlListener aUrlListener,
162 in nsIMsgWindow aMsgWindow,
163 out nsIURI aURL);
164
165 void discoverAllAndSubscribedFolders(in nsIEventTarget aClientEventTarget,
166 in nsIMsgFolder aImapMailFolder,
167 in nsIUrlListener aUrlListener,
168 out nsIURI aURL);
169 void discoverChildren(in nsIEventTarget aClientEventTarget,
170 in nsIMsgFolder aImapMailFolder,
171 in nsIUrlListener aUrlListener,
172 in ACString folderPath,
173 out nsIURI aURL);
174
175 void onlineMessageCopy(in nsIEventTarget aClientEventTarget,
176 in nsIMsgFolder aSrcFolder,
177 in ACString aMessageIds,
178 in nsIMsgFolder aDstFolder,
179 in boolean aIdsAreUids,
180 in boolean aIsMove,
181 in nsIUrlListener aUrlListener,
182 out nsIURI aURL,
183 in nsISupports aCopyState,
184 in nsIMsgWindow aWindow);
185
186
187 void appendMessageFromFile(in nsIEventTarget aClientEventTarget,
188 in nsIFile aFile,
189 in nsIMsgFolder aDstFolder,
190 in ACString aMessageId,
191 in boolean idsAreUids,
192 in boolean aInSelectedState,
193 in nsIUrlListener aUrlListener,
194 out nsIURI aURL,
195 in nsISupports aCopyState,
196 in nsIMsgWindow aMsgWindow);
197
198 void downloadMessagesForOffline(in ACString aMessageIds, in nsIMsgFolder aSrcFolder,
199 in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow);
200
201 nsIURI moveFolder(in nsIEventTarget aClientEventTarget,
202 in nsIMsgFolder aSrcFolder,
203 in nsIMsgFolder aDstFolder,
204 in nsIUrlListener aUrlListener,
205 in nsIMsgWindow msgWindow);
206
207 nsIURI renameLeaf(in nsIEventTarget aClientEventTarget,
208 in nsIMsgFolder aSrcFolder,
209 in AString aLeafName,
210 in nsIUrlListener aUrlListener,
211 in nsIMsgWindow msgWindow);
212
213 nsIURI deleteFolder(in nsIEventTarget aClientEventTarget,
214 in nsIMsgFolder aFolder,
215 in nsIUrlListener aUrlListener,
216 in nsIMsgWindow aMsgWindow);
217
218 nsIURI createFolder(in nsIEventTarget aClientEventTarget,
219 in nsIMsgFolder aParentFolder,
220 in AString aLeafName,
221 in nsIUrlListener aUrlListener);
222
223 nsIURI listFolder(in nsIEventTarget aClientEventTarget,
224 in nsIMsgFolder aMailFolder,
225 in nsIUrlListener aUrlListener);
226
227 nsIURI subscribeFolder(in nsIEventTarget aClientEventTarget,
228 in nsIMsgFolder aMailFolder,
229 in AString mailboxName,
230 in nsIUrlListener aUrlListener);
231
232 nsIURI unsubscribeFolder(in nsIEventTarget aClientEventTarget,
233 in nsIMsgFolder aMailFolder,
234 in AString mailboxName,
235 in nsIUrlListener aUrlListener);
236
237 // this method will first check if the folder exists but is
238 // not subscribed to, in which case it will subscribe to the folder.
239 // otherwise, it will try to create the folder. It will try to do this
240 // with one url.
241 nsIURI ensureFolderExists(in nsIEventTarget aClientEventTarget,
242 in nsIMsgFolder aParentFolder,
243 in AString aLeafName,
244 in nsIUrlListener aUrlListener);
245
246
247 nsIURI getFolderAdminUrl(in nsIEventTarget aClientEventTarget,
248 in nsIMsgFolder aMailFolder,
249 in nsIMsgWindow aMsgWindow,
250 in nsIUrlListener aUrlListener);
251
252 nsIURI issueCommandOnMsgs(in nsIEventTarget aClientEventTarget,
253 in nsIMsgFolder aMailFolder,
254 in nsIMsgWindow aMsgWindow,
255 in ACString aCommand,
256 in ACString aMessageIdentifierList);
257
258 nsIURI fetchCustomMsgAttribute(in nsIEventTarget aClientEventTarget,
259 in nsIMsgFolder aMailFolder,
260 in nsIMsgWindow aMsgWindow,
261 in ACString aAttribute,
262 in ACString aMessageIdentifierList);
263
264 nsIURI storeCustomKeywords(in nsIEventTarget aClientEventTarget,
265 in nsIMsgFolder aMailFolder,
266 in nsIMsgWindow aMsgWindow,
267 in ACString flagsToAdd,
268 in ACString flagsToSubtract,
269 in ACString aMessageIdentifierList);
270
271 void getListOfFoldersOnServer(in nsIImapIncomingServer aServer, in nsIMsgWindow aMsgWindow);
272 void getListOfFoldersWithPath(in nsIImapIncomingServer aServer, in nsIMsgWindow aMsgWindow, in ACString folderPath);
273
274 nsISupports playbackAllOfflineOperations(in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener);
275 void downloadAllOffineImapFolders(in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener);
276
277 readonly attribute nsICacheSession cacheSession;
278 };