Project

pcloud

0.0
No release in over a year
Pcloud is cloud storage upload/download/share from pcloud.com. Please, check available methods in Github Doc...
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 1.3.3
~> 2.6, >= 2.6.3
 Project Readme

Gem for Pcloud cloud storage

This Gem provides a Ruby interface to Pcloud.com.

Build Status Gem Downloads Gem Version

Want to contribute? Doc Link

Installation and Configuration

Supported Ruby versions: 2.3+

Add pcloud to your Gemfile, and then run bundle install

gem 'pcloud'

or install via gem

gem install pcloud
Rails

to generate Rails initializer file

rails generate pcloud

or add it manually into following path

config/initializers/pcloud.rb

Instantiating a client

require 'pcloud'

pcloud = Pcloud::Client.new(
  username: 'email',
  password: 'password',
).authenticate

pcloud.get("listfolder", folderid: 0)

Note that, as per official API docs:

pCloud has two data centers. One in United States and one in Europe. As a consequence API calls have to be made to the correct API host name depending were the user has been registered – api.pcloud.com for United States and eapi.pcloud.com for Europe.

The default region used is https://api.pcloud.com (US). To use a different region, specify a different base_url parameter (EU region: https://eapi.pcloud.com) when instantiating a client, e.g.:

require 'pcloud'

pcloud = Pcloud::Client.new(
  username: 'email',
  password: 'password',
  base_url: "https://eapi.pcloud.com",
).authenticate

pcloud.get("listfolder", folderid: 0)

Global configuration

The library can also be configured globally on the Pcloud class.

Pcloud.username = 'email'
Pcloud.password = 'password'
Pcloud.authenticate

Pcloud.get("listfolder", folderid: 0)

Logging

By default errors are logged in STDOUT level, also Rails.logger available.

Pcloud.logger = Rails.logger

Working with methods

Available methods:

  • Get
  • Post
  • File handling
addition!

Some apis need to be raw format, just add raw in params. params: {fileid: ..987, raw: true} For example gettextfile https://docs.pcloud.com/methods/streaming/gettextfile.html

Get method

Pcloud.get("getip")
Pcloud.get("getdigest")

# with params
params = {folderid: 0}
Pcloud.get("listfolder", params)

Post method

payload = {}
params = {folderid: 0, name: "new folder name"}
Pcloud.post("createfolder", payload, params)
# optional params: filename, destination
# destination by default current_path
Pcloud.file.download({fileid: 987532135})

Pcloud.file.download(
  fileid: 987532135,                   #required
  destination: "#{Dir.pwd}/Downloads", #optional
  filename: "hehe.txt"                 #optional
)
Download Folder
# optional params: filename, destination
# destination by default current_path
Pcloud.file.download_folder({folderid: 123456789})
params = {
  folderid: 0,  #required
  nopartial: 1,
}
# multiple uploads
file1 = File.open("./Rakefile")
file2 = File.open("./README.md")
file3 = File.open("./Gemfile")
payload = { files: [file1,file2,file3] }

Pcloud.file.upload(params, payload)

License

The gem is available as open source under the terms of the MIT License.