Skip to content
Google Drive API access
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Google Drive

Google Drive API access


As we are still pre-1.0, I consider all types and interfaces freely changeable in any way accompanied by only a minor version bump.

I apologize if this breaks your code. Update at your own risk.


% cabal install google-drive


-- Top level re-exports all the sub-modules
import Network.Google.Drive

import Control.Monad (forM_)
import Data.Conduit (($$+-))

main :: IO ()
main = do
    -- See my separate google-oauth2 library
    let token = undefined

    -- runApi would return an Either ApiError a
    -- runApi_ discards the a and raises any errors, useful in CLI apps
    runApi_ token $ do
        -- "root" is an alias for the ID of the Drive itself
        Just root <- getFile "root"

        -- Note: This is already available as listVisibleContents
        items <- listFiles $ (fileId root) `qIn` Parents ?&& Trashed ?= False

        forM_ items $ \item -> do
            let path = localPath item

            downloadFile item ($$+- sinkFile path)

See the tests and haddocks for more information.

Developing and Tests

% cp .env{.example,} # and edit it accordingly
% cabal install --dependencies-only --enable-tests -j
% cabal test
You can’t perform that action at this time.