NS_IMETHODIMP nsMailboxService::MessageURIToMsgHdr(const char *uri, nsIMsgDBHdr **_retval) { NS_ENSURE_ARG_POINTER(uri); NS_ENSURE_ARG_POINTER(_retval); nsresult rv = NS_OK; nsCOMPtr<nsIMsgFolder> folder; nsMsgKey msgKey; rv = DecomposeMailboxURI(uri, getter_AddRefs(folder), &msgKey); NS_ENSURE_SUCCESS(rv,rv); rv = folder->GetMessageHeader(msgKey, _retval); NS_ENSURE_SUCCESS(rv,rv); return NS_OK; }
NS_IMETHODIMP nsMailboxService::StreamHeaders(const char *aMessageURI, nsIStreamListener *aConsumer, nsIUrlListener *aUrlListener, bool aLocalOnly, nsIURI **aURL) { NS_ENSURE_ARG_POINTER(aMessageURI); NS_ENSURE_ARG_POINTER(aConsumer); nsCAutoString folderURI; nsMsgKey msgKey; nsCOMPtr<nsIMsgFolder> folder; nsresult rv = DecomposeMailboxURI(aMessageURI, getter_AddRefs(folder), &msgKey); if (msgKey == nsMsgKey_None) return NS_MSG_MESSAGE_NOT_FOUND; nsCOMPtr<nsIInputStream> inputStream; PRUint64 messageOffset; PRUint32 messageSize; rv = folder->GetOfflineFileStream(msgKey, &messageOffset, &messageSize, getter_AddRefs(inputStream)); NS_ENSURE_SUCCESS(rv, rv); return MsgStreamMsgHeaders(inputStream, aConsumer); }