pcloud 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +37 -7
- data/lib/generators/pcloud.rb +0 -2
- data/lib/pcloud.rb +8 -7
- data/lib/pcloud/client.rb +6 -5
- data/lib/pcloud/exceptions.rb +2 -3
- data/lib/pcloud/files/file_handler.rb +35 -0
- data/lib/pcloud/request.rb +17 -19
- data/lib/pcloud/resource.rb +11 -5
- data/lib/pcloud/version.rb +1 -1
- metadata +8 -7
- data/Changelog.md +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb75c427f836b4d247ec4fcf9274d241602f56b42b9db36f4b2933b032f65c9e
|
4
|
+
data.tar.gz: 8ac6d05ace840e3e97da605b639f1a1aba3d8f47d8fb3d2e015334b2c6fd2ade
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c5817e6034dbcb5f68c92c5d075c610ee37dbcb57cc7a38c79ece949634d3d8f56065ba1b906af9950e56943729964ca99697c30abbf5d6136a18d18bcc29dc
|
7
|
+
data.tar.gz: 9ca0c32931e65cc3a52bd0e64ba8767481599b357a91ca69f789162f875641101b225c8f581f125d548ece41fe888b010da53eccec5d274bd59db2353685e7f0
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.1.0 (2021-08-19)
|
4
|
+
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
* version 0.1.0 ([bafbe4b](https://www.github.com/7urkm3n/pcloud/commit/bafbe4b1d0301eb99446c703176eb35d6dc41336))
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* fixing workflow ([858cab4](https://www.github.com/7urkm3n/pcloud/commit/858cab495be548013c3e61756e626ce17cd38db3))
|
14
|
+
* workflows works, testing version auto bump ([9de8276](https://www.github.com/7urkm3n/pcloud/commit/9de82767c31c1ae003e268910b23108bba4f2e8c))
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Gem for Pcloud cloud storage
|
2
2
|
|
3
|
-
This Gem provides a Ruby interface to [Pcloud.com](https://pcloud.com).
|
3
|
+
This Gem provides a Ruby interface to [Pcloud.com](https://docs.pcloud.com).
|
4
4
|
|
5
5
|
[![Build Status](https://github.com/7urkm3n/pcloud/workflows/build/badge.svg?branch=master)](https://github.com/7urkm3n/pcloud/actions?query=workflow%3Abuild) [![Gem Downloads](https://badgen.net/rubygems/dt/pcloud)](https://rubygems.org/gems/pcloud) [![Gem Version](https://badge.fury.io/rb/pcloud.svg)](https://badge.fury.io/rb/pcloud)
|
6
6
|
|
@@ -54,13 +54,13 @@ Pcloud.username = 'email'
|
|
54
54
|
Pcloud.password = 'password'
|
55
55
|
```
|
56
56
|
|
57
|
-
### Logging
|
57
|
+
<!-- ### Logging
|
58
58
|
|
59
59
|
By default errors are logged in STDOUT level, also `Rails.logger` available.
|
60
60
|
|
61
61
|
``` ruby
|
62
62
|
Pcloud.logger = Rails.logger
|
63
|
-
```
|
63
|
+
``` -->
|
64
64
|
|
65
65
|
## Working with methods
|
66
66
|
|
@@ -77,15 +77,45 @@ Pcloud.get("getdigest")
|
|
77
77
|
|
78
78
|
# with params
|
79
79
|
Pcloud.get("listfolder", folderid: 0)
|
80
|
-
Pcloud.get("createfolder", folderid: 0, name: "new folder name", ...)
|
81
80
|
```
|
81
|
+
<!-- Pcloud.get("createfolder", folderid: 0, name: "new folder name", ...) -->
|
82
82
|
|
83
|
-
|
83
|
+
#### Post methods
|
84
84
|
|
85
85
|
``` ruby
|
86
|
+
# if any of pcloud endpoints requires payload on POST request, please create an issue.
|
87
|
+
|
86
88
|
# with params
|
87
|
-
|
88
|
-
```
|
89
|
+
Pcloud.post("createfolder", folderid: 0, name: "new folder name")
|
90
|
+
```
|
91
|
+
|
92
|
+
#### [Files](https://docs.pcloud.com/methods/file/)
|
93
|
+
##### [Download File](https://docs.pcloud.com/methods/file/downloadfile.html)
|
94
|
+
|
95
|
+
``` ruby
|
96
|
+
#obtain filelink from: https://docs.pcloud.com/methods/streaming/getfilelink.html
|
97
|
+
|
98
|
+
Pcloud.file.download(
|
99
|
+
url: filelink, #required
|
100
|
+
destination: "#{Dir.pwd}/Downloads", #required
|
101
|
+
filename: "hehe.txt" #optional
|
102
|
+
)
|
103
|
+
```
|
104
|
+
|
105
|
+
##### [Upload File](https://docs.pcloud.com/methods/file/uploadfile.html)
|
106
|
+
|
107
|
+
``` ruby
|
108
|
+
# still in BETA! -
|
109
|
+
# only supports single file upload
|
110
|
+
|
111
|
+
file = File.open("/Users/7urkm3n/Downloads/anything.file")
|
112
|
+
params = {
|
113
|
+
folderid: 0, #required
|
114
|
+
filename: "anything.txt" #required
|
115
|
+
}
|
116
|
+
payload = {file: file}
|
117
|
+
Pcloud.file.upload(params, payload)
|
118
|
+
```
|
89
119
|
|
90
120
|
### Supported Ruby versions
|
91
121
|
2.2+
|
data/lib/generators/pcloud.rb
CHANGED
data/lib/pcloud.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
autoload 'Logger', 'logger'
|
2
2
|
require 'forwardable'
|
3
3
|
require 'pcloud/client'
|
4
|
-
require 'pcloud/version'
|
5
|
-
require 'pcloud/request'
|
6
|
-
require 'pcloud/resource'
|
7
4
|
|
8
5
|
module Pcloud
|
9
6
|
BASE_URL = 'https://api.pcloud.com'.freeze
|
@@ -11,7 +8,8 @@ module Pcloud
|
|
11
8
|
class << self
|
12
9
|
extend Forwardable
|
13
10
|
def_delegators :default_client, :username=, :password=
|
14
|
-
def_delegators :default_client, :get
|
11
|
+
def_delegators :default_client, :get, :post
|
12
|
+
def_delegators :default_client, :file
|
15
13
|
|
16
14
|
attr_writer :logger
|
17
15
|
|
@@ -24,9 +22,12 @@ module Pcloud
|
|
24
22
|
end
|
25
23
|
|
26
24
|
def default_client
|
27
|
-
@default_client ||=
|
28
|
-
Pcloud::Client.new
|
29
|
-
end
|
25
|
+
@default_client ||= Pcloud::Client.new
|
30
26
|
end
|
31
27
|
end
|
32
28
|
end
|
29
|
+
|
30
|
+
require 'pcloud/version'
|
31
|
+
require 'pcloud/request'
|
32
|
+
require 'pcloud/resource'
|
33
|
+
require 'pcloud/exceptions'
|
data/lib/pcloud/client.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'rest-client'
|
3
|
-
require 'pcloud/exceptions'
|
4
3
|
|
5
4
|
module Pcloud
|
6
5
|
class Client
|
@@ -17,11 +16,13 @@ module Pcloud
|
|
17
16
|
def post(path, params = {})
|
18
17
|
resource(path).post(params)
|
19
18
|
end
|
20
|
-
|
19
|
+
|
20
|
+
def file
|
21
|
+
Resource.new(self).file()
|
22
|
+
end
|
23
|
+
|
21
24
|
def http_client
|
22
|
-
@client ||=
|
23
|
-
RestClient::Resource.new(BASE_URL)
|
24
|
-
end
|
25
|
+
@client ||= RestClient::Resource.new(BASE_URL)
|
25
26
|
end
|
26
27
|
|
27
28
|
def auth
|
data/lib/pcloud/exceptions.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Pcloud
|
2
|
-
|
3
2
|
class Error < RuntimeError; end
|
3
|
+
class AuthenticationError < Error; end
|
4
4
|
class ConfigurationError < Error
|
5
5
|
def initialize(key)
|
6
6
|
super "missing key `#{key}' in the client configuration"
|
@@ -8,8 +8,7 @@ module Pcloud
|
|
8
8
|
end
|
9
9
|
class HTTPError < Error
|
10
10
|
def initialize(key, message)
|
11
|
-
super "
|
11
|
+
super "#{key} Bad request: #{message}"
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
15
14
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
|
3
|
+
module Pcloud
|
4
|
+
class FileHandler
|
5
|
+
def initialize(client)
|
6
|
+
@client = client
|
7
|
+
end
|
8
|
+
|
9
|
+
def upload(params, payload)
|
10
|
+
create_request(:post, 'uploadfile', params, payload).call
|
11
|
+
end
|
12
|
+
|
13
|
+
def download(params)
|
14
|
+
url = params[:url]
|
15
|
+
begin
|
16
|
+
res = RestClient.get(url)
|
17
|
+
rescue => e
|
18
|
+
raise HTTPError.new(:HTTPError, e.message)
|
19
|
+
end
|
20
|
+
|
21
|
+
filename = params[:filename] ? params[:filename] : url.split("/").last
|
22
|
+
File.open("#{params[:destination]}/#{filename}", 'wb' ) do |f|
|
23
|
+
f.write res
|
24
|
+
end
|
25
|
+
res.code
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def create_request(verb, path, params, payload = {})
|
31
|
+
Request.new(@client, verb, path, params, payload)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
data/lib/pcloud/request.rb
CHANGED
@@ -1,44 +1,42 @@
|
|
1
1
|
module Pcloud
|
2
2
|
class Request
|
3
|
-
def initialize(client, verb, path, params)
|
4
|
-
@client, @verb
|
3
|
+
def initialize(client, verb, path, params, payload)
|
4
|
+
@client, @verb, @path, @params, @payload = client, verb, path, params, payload
|
5
5
|
end
|
6
6
|
|
7
7
|
def call
|
8
8
|
params = {params: {}}
|
9
9
|
params[:params].merge!(@params, {auth: @client.auth})
|
10
|
-
|
11
10
|
http = @client.http_client
|
12
11
|
res = case @verb
|
13
12
|
when :get
|
14
|
-
|
13
|
+
begin
|
14
|
+
http[@path].get(params)
|
15
|
+
rescue => e
|
16
|
+
handle_response(e.http_code, e.message)
|
17
|
+
end
|
15
18
|
when :post
|
16
|
-
|
19
|
+
begin
|
20
|
+
http[@path].post(@payload, params)
|
21
|
+
rescue => e
|
22
|
+
handle_response(e.http_code, e.message)
|
23
|
+
end
|
17
24
|
else
|
18
|
-
raise "Unsupported verb"
|
25
|
+
raise "Unsupported verb: #{@verb}"
|
19
26
|
end
|
20
|
-
|
21
|
-
handle_response(res.code.to_i, body)
|
27
|
+
JSON.parse(res.body, { symbolize_names: true })
|
22
28
|
end
|
23
|
-
|
29
|
+
|
24
30
|
private
|
25
31
|
|
26
32
|
def handle_response(status_code, body)
|
27
33
|
case status_code
|
28
|
-
when 200
|
29
|
-
return JSON.parse(body, { symbolize_names: true })
|
30
|
-
when 202
|
31
|
-
return body.empty? ? true : JSON.parse(body, { symbolize_names: true })
|
32
34
|
when 400
|
33
|
-
raise
|
35
|
+
raise HTTPError.new(:HTTPError, body)
|
34
36
|
when 401
|
35
37
|
raise AuthenticationError, body
|
36
38
|
when 404
|
37
|
-
raise
|
38
|
-
when 407
|
39
|
-
raise Error, "Proxy Authentication Required"
|
40
|
-
when 413
|
41
|
-
raise Error, "Payload Too Large > 10KB"
|
39
|
+
raise HTTPError.new(:HTTPError, body)
|
42
40
|
else
|
43
41
|
raise Error, "Unknown error (status code #{status_code}): #{body}"
|
44
42
|
end
|
data/lib/pcloud/resource.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
require "pcloud/files/file_handler"
|
2
|
+
|
1
3
|
module Pcloud
|
2
4
|
class Resource
|
3
5
|
|
4
|
-
def initialize(client, path)
|
6
|
+
def initialize(client, path = "")
|
5
7
|
@client, @path = client, path
|
6
8
|
end
|
7
9
|
|
@@ -9,14 +11,18 @@ module Pcloud
|
|
9
11
|
create_request(:get, params).call
|
10
12
|
end
|
11
13
|
|
12
|
-
def post(params)
|
13
|
-
create_request(:post, params).call
|
14
|
+
def post(params, payload = {})
|
15
|
+
create_request(:post, params, payload).call
|
16
|
+
end
|
17
|
+
|
18
|
+
def file
|
19
|
+
@file ||= FileHandler.new(@client)
|
14
20
|
end
|
15
21
|
|
16
22
|
private
|
17
23
|
|
18
|
-
def create_request(verb, params)
|
19
|
-
Request.new(@client, verb, @path, params)
|
24
|
+
def create_request(verb, params, payload = {})
|
25
|
+
Request.new(@client, verb, @path, params, payload)
|
20
26
|
end
|
21
27
|
|
22
28
|
end
|
data/lib/pcloud/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pcloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rovshen Gurdov
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -60,7 +60,7 @@ executables: []
|
|
60
60
|
extensions: []
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
|
-
-
|
63
|
+
- CHANGELOG.md
|
64
64
|
- LICENSE
|
65
65
|
- README.md
|
66
66
|
- lib/generators/pcloud.rb
|
@@ -68,15 +68,16 @@ files:
|
|
68
68
|
- lib/pcloud.rb
|
69
69
|
- lib/pcloud/client.rb
|
70
70
|
- lib/pcloud/exceptions.rb
|
71
|
+
- lib/pcloud/files/file_handler.rb
|
71
72
|
- lib/pcloud/request.rb
|
72
73
|
- lib/pcloud/resource.rb
|
73
74
|
- lib/pcloud/version.rb
|
74
|
-
homepage: https://github.com/7urkm3n/pcloud
|
75
|
+
homepage: https://github.com/7urkm3n/pcloud
|
75
76
|
licenses:
|
76
77
|
- MIT
|
77
78
|
metadata:
|
78
79
|
bug_tracker_uri: https://github.com/7urkm3n/pcloud/issues
|
79
|
-
changelog_uri: https://github.com/7urkm3n/pcloud/blob/
|
80
|
+
changelog_uri: https://github.com/7urkm3n/pcloud/blob/master/CHANGELOG.md
|
80
81
|
documentation_uri: https://github.com/7urkm3n/pcloud
|
81
82
|
source_code_uri: https://github.com/7urkm3n/pcloud
|
82
83
|
post_install_message:
|
@@ -94,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
95
|
- !ruby/object:Gem::Version
|
95
96
|
version: '0'
|
96
97
|
requirements: []
|
97
|
-
rubygems_version: 3.
|
98
|
+
rubygems_version: 3.2.3
|
98
99
|
signing_key:
|
99
100
|
specification_version: 4
|
100
101
|
summary: Secure and simple to use cloud storage for your datas...
|