Skip to content

Cross-platform pCloud SDK written in Go for the rest of us

License

Notifications You must be signed in to change notification settings

seborama/pcloud-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

de1b332 · Apr 24, 2024

History

95 Commits
Apr 24, 2024
Apr 24, 2024
Apr 24, 2024
Apr 24, 2024
Apr 24, 2024
Apr 21, 2024
Apr 24, 2024
Apr 24, 2024
Jan 16, 2021
Apr 24, 2024
Apr 24, 2024
Apr 24, 2024

Repository files navigation

pCloud Go client, for the rest of us

This is a pCloud client written in Go for cross-platform compatibility, such as a Raspberry Pi in my use-case.

NOTE: I'm not affiliated to pCloud so this project is as good or as bad as it gets.

For a pCloud client for Linux and FreeBSD, see pcloud-drive.

Go SDK 🤩

See SDK.

Tracker (file system mutations)

See Tracker.

Sync (file system synchronisation)

See Sync.

History

The original driver for this project is to create a pCloud client for my Raspberry Pi4.

While pCloud's console client seemed to tick the boxes, I wasn't able to use it for two reasons:

  • it creates a virtual drive - files are not stored on my local storage as I require. In my set-up, cloud storage is a convenience (backup and remote access), not an extension / replacement of my local storage.
  • I elected to create a mirror from the pCloud virtual drive (that the console-client creates) to my local storage. While this would work well for my needs (using pCloud as the primary source of truth, and the mirror as a local replica), I found that both rsync and unison were confronted to an I/O deadlock when downloading data. The console-client appears to have an issue in its internal cache management and that blocks all I/O. Recovery involves restarting the pCloud console-client daemon but the story repeats again and the mirror cannot complete.

Objectives

  1. ✅ implement a Go version of the SDK.

  2. 🧑‍💻 FUSE integration (Linux / FreeBSD) - move to separate repo - pcloud-drive

  3. implement a sync command.

  4. CLI for basic pCloud interactions (copy, move, etc)

pCloud API documentation

The official pCloud API is documented at:

https://docs.pcloud.com