A Dropbox Core API client for Elixir, based on hackney and Jazz.
The Dropbox module provides the thinnest layer of abstraction as possible on top of the Dropbox Core API. Responses are returned as maps and use the same field names as the API itself to keep things simple.
UNDER DEVELOPMENT, NOT READY FOR PRODUCTION USE! Contributions welcome :)
iex> Dropbox.start
:ok
iex> client = %Dropbox.Client{access_token: "WAAAwaaaWAAAWaaaaWaaWaaa..."}
%Dropbox.Client{access_token: "WAAAwaaaWAAAWaaaaWaaWaaa...",
client_id: nil, client_secret: nil, locale: nil, root: :dropbox}
iex> Dropbox.account_info! client
%Dropbox.Account{country: "US", display_name: "Amir Malik", email: "amir@example.com",
quota_info: %{normal: 0, quota: 2952790016, shared: 21122088},
referral_link: "https://db.tt/uLPPUkc", team: nil, uid: 31337}
iex> Dropbox.mkdir! client, "secrets"
true
iex> Dropbox.upload_file! client, "/etc/passwd", "secrets/lol"
%Dropbox.Metadata{bytes: 5253, client_mtime: "Thu, 01 May 2014 07:01:46 +0000",
contents: %{}, hash: nil, icon: "page_white", is_deleted: false, is_dir: false,
modified: "Thu, 01 May 2014 07:01:46 +0000", path: "/secrets/lol",
photo_info: %Dropbox.Metadata.Photo{lat_long: [], time_taken: nil},
rev: "6800b928df", size: "5.1 KB", thumb_exists: false,
video_info: %Dropbox.Metadata.Video{duration: 0, lat_long: [], time_taken: nil}}
Nearly all functions have bang (!) equivalents, which raise exceptions on errors instead of returning {:error, reason}
tuples.
Must test against app with 'Full Access' not Folder Access.
Set Environment variables DROPBOX_APP_ID and DROPBOX_SECRET_KEY
TODO:
- Documentation.
- Write more tests / Refactor if needed.
PLEASE NOTE: I changed the api - If you were previously using the original - repo: * Review and compare tests If this is all brand new to you: You'll be fine.