pcloud 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f149800e09ac0b4f7e8f73604197bfb8a471e35f5402a03f7e238c34791b412c
4
- data.tar.gz: cb22e032de376f1fe61ea06dad968c7cf0c61f52d9c9c7d35b55c2e1802bbae0
3
+ metadata.gz: 2128c1a79983adf3f851afd99d033fe47558f3df24d1bbb335521698055dea6c
4
+ data.tar.gz: 2d96ae7c6dbff5ea628ba1f7511d3951a3651d0a2aceee2da0aa4ac874e114ae
5
5
  SHA512:
6
- metadata.gz: a8312ecf45d3d0d5c43414d994fa5014152664820e22e7d175cc29a5d4d5dd57d080dd462d97de5e95c9545330f6906a0193d9af2b4c7d261fe8227afbef374a
7
- data.tar.gz: b04c21315cfccc22e6e68bfb39b00d40e900348de038ed61958cba2f4bd1f8e5537818e8b8bad84f6b270ed26815abbdefaf395a7adfed8c0c2b039e3f6fb9a1
6
+ metadata.gz: 288b9668c7e3236f69b8575ba4834dab4a8f0aedc869d2261407ca02f0482deeb009e3df1e8c78100bf785ce804069d0d3ebf437d1a3bb03c01c81c12b533802
7
+ data.tar.gz: d873eb5aa61accd34734fb1ab2ee103fc9350ac30ca3fc834f8c03a199c4b2484aceba4f8998c73277f6538aaae4567eff3f30b6ee968afc0e895ab6712e5a8b
@@ -1,7 +1,19 @@
1
- #### v0.0.1
1
+ ### Changelogs:
2
2
 
3
- ##### Publish
3
+ #### v0.0.3
4
+ ##### Updates
5
+ * Minor updates
6
+ * Upload and Download added - needs maintain
7
+ * Post method fixed and added back
8
+
9
+ #### v0.0.2
10
+ ##### Updates
11
+ * Minor updates
12
+ * Test files added
13
+ * Removed `Post` method temporarily
4
14
 
15
+ #### v0.0.1
16
+ ##### Publish
5
17
  * Available get Method
6
18
  * Incoming {Upload|Download} files
7
19
 
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
 
@@ -1,5 +1,3 @@
1
-
2
- #Global set
3
1
  Pcloud.username = "username" # ENV['PCLOUD_USERNAME']
4
2
  Pcloud.password = "password" # ENV['PCLOUD_PASSWORD']
5
3
  #Pcloud.logger = Rails.logger
@@ -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
@@ -30,3 +27,8 @@ module Pcloud
30
27
  end
31
28
  end
32
29
  end
30
+
31
+ require 'pcloud/version'
32
+ require 'pcloud/request'
33
+ require 'pcloud/resource'
34
+ require 'pcloud/exceptions'
@@ -1,6 +1,8 @@
1
1
  require 'json'
2
2
  require 'rest-client'
3
- require 'pcloud/exceptions'
3
+ # require 'file/file'
4
+ # require "#{Dir.pwd}/lib/pcloud/files/file_handler"
5
+
4
6
 
5
7
  module Pcloud
6
8
  class Client
@@ -17,7 +19,11 @@ module Pcloud
17
19
  def post(path, params = {})
18
20
  resource(path).post(params)
19
21
  end
20
-
22
+
23
+ def file
24
+ Resource.new(self).file()
25
+ end
26
+
21
27
  def http_client
22
28
  @client ||= begin
23
29
  RestClient::Resource.new(BASE_URL)
@@ -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 "Error status `#{key}': #{message}"
11
+ super "#{key} Bad request: #{message}"
12
12
  end
13
13
  end
14
-
15
14
  end
@@ -0,0 +1,36 @@
1
+ # require File.dirname(__FILE__) + '/upload'
2
+ # puts "#{Dir.pwd}/lib/pcloud/request"
3
+ # require "#{Dir.pwd}/lib/pcloud/request"
4
+
5
+ module Pcloud
6
+ class FileHandler
7
+ def initialize(client)
8
+ @client = client
9
+ end
10
+
11
+ def upload(params, payload)
12
+ create_request(:post, 'uploadfile', params, payload).call
13
+ end
14
+
15
+ def download(params)
16
+ # create_request(:get, 'downloadfile', params).call
17
+ url = params[:url]
18
+ filename = params[:filename] ? params[:filename] : url.split("/").last
19
+ File.open("#{params[:destination]}/#{filename}", 'wb') {|f|
20
+ block = proc { |response|
21
+ response.read_body do |chunk|
22
+ f.write chunk
23
+ end
24
+ }
25
+ RestClient::Request.execute(method: :get,url: url,block_response: block)
26
+ }
27
+ end
28
+
29
+ private
30
+
31
+ def create_request(verb, path, params, payload = {})
32
+ Request.new(@client, verb, path, params, payload)
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ class Upload
2
+ def self.call(auth, params)
3
+ puts "AUTH: #{auth}"
4
+ puts "PARAMS: #{params}"
5
+ pr = {params: {
6
+ folderid: 7025720177,
7
+ filename: "test.txt",
8
+ upload: {
9
+ file: File.open("/Users/7urkm3n/Downloads/gurdov.com.txt")
10
+ },
11
+ auth: auth
12
+ }}
13
+ return JSON.parse(RestClient.get("#{Pcloud::BASE_URL}/uploadfile", pr))
14
+ # fl = File.new("/Users/7urkm3n/Downloads/gurdov.com.txt", 'rb')
15
+ # File.open(Rails.root.join('app','assets', 'images', file.original_filename filename), 'wb') do |file|
16
+ # file.write(source_file.read)
17
+ # end
18
+ end
19
+ end
@@ -1,44 +1,42 @@
1
1
  module Pcloud
2
2
  class Request
3
- def initialize(client, verb, path, params)
4
- @client, @verb , @path, @params = client, verb, path, params
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
- http[@path].get( params )
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
- http[@path].post( params )
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
- body = res.body ? res.body.chomp : nil
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 Error, "Bad request: #{body}"
35
+ raise HTTPError.new(:HTTPError, body)
34
36
  when 401
35
37
  raise AuthenticationError, body
36
38
  when 404
37
- raise Error, "404 Not found (#{@uri})"
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
@@ -1,7 +1,9 @@
1
+ require "#{Dir.pwd}/lib/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
+ 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
@@ -1,3 +1,3 @@
1
1
  module Pcloud
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
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.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rovshen Gurdov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-31 00:00:00.000000000 Z
11
+ date: 2020-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -68,6 +68,8 @@ 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
72
+ - lib/pcloud/files/upload.rb
71
73
  - lib/pcloud/request.rb
72
74
  - lib/pcloud/resource.rb
73
75
  - lib/pcloud/version.rb
@@ -76,7 +78,7 @@ licenses:
76
78
  - MIT
77
79
  metadata:
78
80
  bug_tracker_uri: https://github.com/7urkm3n/pcloud/issues
79
- changelog_uri: https://github.com/7urkm3n/pcloud/blob/v0.0.2/Changelog.md
81
+ changelog_uri: https://github.com/7urkm3n/pcloud/blob/master/Changelog.md
80
82
  documentation_uri: https://github.com/7urkm3n/pcloud
81
83
  source_code_uri: https://github.com/7urkm3n/pcloud
82
84
  post_install_message: