hstratus-notes — access to iCloud Notes
hstratus-notes reads notes and folders from iCloud Notes using an authenticated
session from hstratus-auth.
The library provides read-only access to the Notes CloudKit database: listing
folders, fetching recent notes, and downloading note content.
Disclaimer — use at your own risk
- This library is unofficial and not supported by Apple.
- The iCloud Notes API it uses is undocumented and may change without notice.
Usage
After a successful login with hstratus-auth, construct a NotesApi value and
use it to browse notes.
Listing recent notes
import Network.HStratus.Http (mkApi, login, AuthState (..))
import Network.HStratus.Http.Endpoints (Realm (..))
import Network.HStratus.Notes
example :: IO ()
example = do
api <- mkApi Usual
result <- login api
case result of
Authenticated sess ad -> do
na <- mkNotesApi ad sess api
notes <- recentNotes na
mapM_ print notes
_ -> putStrLn "Unexpected result"
Listing folders
foldersExample :: NotesApi -> IO ()
foldersExample na = do
folders <- noteFolders na
mapM_ print folders
Listing notes in a folder
folderNotesExample :: NotesApi -> FolderId -> IO ()
folderNotesExample na fid = do
notes <- notesInFolder na fid
mapM_ print notes
Fetching and decoding a note body
import qualified Data.Text.IO as TIO
import Network.HStratus.Notes
import Network.HStratus.Notes.Markdown (noteToMarkdown)
getNoteExample :: NotesApi -> NoteId -> IO ()
getNoteExample na nid = do
mnote <- getNote na nid
case mnote of
Nothing -> putStrLn "Note not found"
Just note -> do
result <- decodeNoteBody (noteBodyBytes note)
case result of
Left err -> putStrLn $ "Decode error: " <> err
Right nt -> TIO.putStrLn (noteToMarkdown nt)
getNote returns Nothing when the note has been deleted since the listing
was fetched. decodeNoteBody returns Left when the compressed protobuf
cannot be decoded.
CLI usage
A command-line interface using this behaviour is provided by the hstratus
package.
Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries and regions.
iCloud is a service mark of Apple Inc., registered in the U.S. and other countries and regions.