rapidshare-ext 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.md +4 -0
- data/README.md +37 -15
- data/lib/rapidshare-ext/api.rb +9 -3
- data/lib/rapidshare-ext/version.rb +1 -1
- data/test/fixtures/files/upload2.txt +1 -0
- data/test/integration/rapidshare-ext_test.rb +17 -1
- metadata +4 -2
data/History.md
CHANGED
data/README.md
CHANGED
@@ -28,7 +28,7 @@ api = Rapidshare::API.new(:cookie => 'cookie_here') # More preferable way
|
|
28
28
|
|
29
29
|
### Files
|
30
30
|
|
31
|
-
Now you can perform file
|
31
|
+
Now you can perform file downloading in two ways: by HTTP url or by absolute path.
|
32
32
|
|
33
33
|
First, by the HTTP url, as it has worked before:
|
34
34
|
```ruby
|
@@ -41,7 +41,7 @@ First, by the HTTP url, as it has worked before:
|
|
41
41
|
:downloads_dir => "/tmp"
|
42
42
|
```
|
43
43
|
|
44
|
-
Download by absolute path:
|
44
|
+
Download by absolute path from account you owned:
|
45
45
|
```ruby
|
46
46
|
@rs.download "/foo/bar/baz/upload_file_1.txt",
|
47
47
|
:downloads_dir => "/tmp"
|
@@ -49,7 +49,7 @@ Download by absolute path:
|
|
49
49
|
|
50
50
|
In both the first and second samples the result will be the same.
|
51
51
|
|
52
|
-
File uploading became very simple
|
52
|
+
File uploading is also became very simple:
|
53
53
|
```ruby
|
54
54
|
api.upload("/home/odiszapc/my_damn_cat.mov", :to => "/gallery/video", :as => "cat1.mov")
|
55
55
|
# => {
|
@@ -68,11 +68,33 @@ result = api.upload("/home/odiszapc/my_damn_cat.mov", :to => "/gallery/video", :
|
|
68
68
|
result[:url]
|
69
69
|
```
|
70
70
|
|
71
|
-
By default, file is uploaded
|
71
|
+
By default, file is uploaded into the root folder:
|
72
72
|
```ruby
|
73
73
|
api.upload("/home/odiszapc/my_damn_humster.mov")
|
74
74
|
```
|
75
75
|
|
76
|
+
Rapidshare allows to store multiple files having equal names under the same folder. I believe this behaviour is absolutely wrong.
|
77
|
+
Therefore, each time upload performed it checks if the file with the given name already exists in a folder.
|
78
|
+
If it's true, the upload() just returns info about the existing file with the :already_exists? flag is set to true without any real upload being performed.
|
79
|
+
To force file being overwritten set the :overwrite parameter to true:
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
api.upload "/home/odiszapc/my_damn_cat.mov",
|
83
|
+
:to => "/gallery/video",
|
84
|
+
:as => "cat1.mov"
|
85
|
+
|
86
|
+
# No upload will be performed
|
87
|
+
api.upload "/home/odiszapc/my_damn_cat.mov",
|
88
|
+
:to => "/gallery/video",
|
89
|
+
:as => "cat1.mov"
|
90
|
+
|
91
|
+
# With the following notation file will be uploaded with overwriting the existing one
|
92
|
+
api.upload "/home/odiszapc/my_damn_cat.mov",
|
93
|
+
:to => "/gallery/video",
|
94
|
+
:as => "cat1.mov",
|
95
|
+
:overwrite => true
|
96
|
+
```
|
97
|
+
|
76
98
|
Deleting files:
|
77
99
|
```ruby
|
78
100
|
api.remove_file("/putin/is/a/good/reason/to/live/abroad/ticket_to_Nicaragua.jpg")
|
@@ -95,9 +117,9 @@ api.file_id("/foo/bar/baz.rar") # => <ID>
|
|
95
117
|
```
|
96
118
|
|
97
119
|
### Folders
|
98
|
-
As you note
|
120
|
+
As you note it's possible having a hierarchy of folders in your account.
|
99
121
|
|
100
|
-
Creating
|
122
|
+
Creating folder hierarchy:
|
101
123
|
```ruby
|
102
124
|
folder_id = api.add_folder "a/b/c" # => <FOLDER ID>
|
103
125
|
```
|
@@ -111,9 +133,9 @@ Moving folders:
|
|
111
133
|
```ruby
|
112
134
|
api.move_folder("/a/b/c", :to => "/a")
|
113
135
|
```
|
114
|
-
This moves folder "c" from directory "/a/b/" and places it under the directory "/a"
|
136
|
+
This moves the folder "c" from the directory "/a/b/" and places it under the directory "/a"
|
115
137
|
|
116
|
-
|
138
|
+
You can get hierarchy of all the folders in account:
|
117
139
|
```ruby
|
118
140
|
api.folders_hierarchy
|
119
141
|
# => {
|
@@ -159,20 +181,20 @@ What does it mean? When you delete parent folder by its ID the folder will be de
|
|
159
181
|
For example, let we have the basic directory tree:
|
160
182
|
```
|
161
183
|
ROOT
|
162
|
-
`-a <-
|
184
|
+
`-a <- Raw Rapidshare API allows you to delete JUST THIS folder, so hierarchy relation between folders will be lost and the folders "c" and "b" will became orphans
|
163
185
|
`-b
|
164
186
|
`-c
|
165
187
|
```
|
166
188
|
|
167
|
-
|
189
|
+
**Know-how:** orphan folders become invisible in your File Manager on the Rapidshare web site, so you may want to hide all the data in this way (stupid idea)
|
168
190
|
|
169
|
-
So, the best way to delete
|
191
|
+
So, the best way to delete a directory tree without washing away consistency of account folder hierarchy is the following:
|
170
192
|
```ruby
|
171
|
-
api.remove_folder "/a" # This will
|
193
|
+
api.remove_folder "/a" # This will delete all the child directories correctly
|
172
194
|
```
|
173
195
|
|
174
|
-
|
175
|
-
|
196
|
+
However, if you already have orphans in your account there is possible to fix them.
|
197
|
+
So ,the next method detects all orphan folders in your account and moves them into a specific folder:
|
176
198
|
```ruby
|
177
199
|
api.move_orphans :to => "/"
|
178
200
|
```
|
@@ -188,7 +210,7 @@ You can null your account by deleting all the data stored inside:
|
|
188
210
|
api.erase_all_data!
|
189
211
|
```
|
190
212
|
|
191
|
-
**Be careful with it, because
|
213
|
+
**Be careful with it, because you stake losing all your data**
|
192
214
|
|
193
215
|
## Contributing
|
194
216
|
|
data/lib/rapidshare-ext/api.rb
CHANGED
@@ -113,6 +113,8 @@ module Rapidshare
|
|
113
113
|
# Folder to place uploaded file to, default: "/"
|
114
114
|
# <tt>:as</tt>::
|
115
115
|
# The name file will have in storage after it has been uploaded
|
116
|
+
# <tt>:overwrite</tt>::
|
117
|
+
# Overwrite file if it already exists in the given folder
|
116
118
|
#
|
117
119
|
# api.upload("/home/odiszapc/my_damn_cat.mov", :to => "/gallery/video", :as => "cat1.mov")
|
118
120
|
def upload(file_path, params = {})
|
@@ -120,6 +122,7 @@ module Rapidshare
|
|
120
122
|
dest_path = path_trim(params.delete(:to) || '/')
|
121
123
|
folder_id = self.add_folder dest_path
|
122
124
|
file_name = params.delete(:as) || File.basename(file_path)
|
125
|
+
overwrite = params.delete :overwrite
|
123
126
|
|
124
127
|
# Check file already exists within a folder
|
125
128
|
listfiles_params = {
|
@@ -130,11 +133,14 @@ module Rapidshare
|
|
130
133
|
}
|
131
134
|
listfiles_response = self.listfiles listfiles_params
|
132
135
|
|
133
|
-
|
134
|
-
|
136
|
+
file_already_exists = ("NONE" != listfiles_response[0][0])
|
137
|
+
remove_file "#{dest_path}/#{file_name}" if file_already_exists && overwrite
|
138
|
+
|
139
|
+
# In case of file is not existing then upload it
|
140
|
+
if !file_already_exists || overwrite
|
135
141
|
upload_server = "rs#{self.nextuploadserver}.rapidshare.com"
|
136
142
|
|
137
|
-
|
143
|
+
upload_params = {
|
138
144
|
:server => upload_server,
|
139
145
|
:folder => folder_id,
|
140
146
|
:filename => file_name,
|
@@ -0,0 +1 @@
|
|
1
|
+
Another file to test upload
|
@@ -17,6 +17,10 @@ class RapidshareExtTest < Test::Unit::TestCase
|
|
17
17
|
@upload_file_1 = File.expand_path(File.dirname(__FILE__) + "/../fixtures/files/upload1.txt")
|
18
18
|
@upload_file_1_md5 = Digest::MD5.hexdigest(File.read(@upload_file_1))
|
19
19
|
@upload_file_1_size = File.size @upload_file_1
|
20
|
+
|
21
|
+
@upload_file_2 = File.expand_path(File.dirname(__FILE__) + "/../fixtures/files/upload2.txt")
|
22
|
+
@upload_file_2_md5 = Digest::MD5.hexdigest(File.read(@upload_file_2))
|
23
|
+
@upload_file_2_size = File.size @upload_file_2
|
20
24
|
end
|
21
25
|
|
22
26
|
context "Api" do
|
@@ -58,8 +62,17 @@ class RapidshareExtTest < Test::Unit::TestCase
|
|
58
62
|
|
59
63
|
# Upload the same file again
|
60
64
|
response = @rs.upload @upload_file_1, :to => remote_dir, :as => remote_filename
|
61
|
-
upload_assertion.call response, @upload_file_1_size, @upload_file_1_md5, remote_filename
|
62
65
|
assert_true response[:already_exists?]
|
66
|
+
upload_assertion.call response, @upload_file_1_size, @upload_file_1_md5, remote_filename
|
67
|
+
|
68
|
+
# Upload another file under the same path but with overwriting the existing one
|
69
|
+
response = @rs.upload @upload_file_2,
|
70
|
+
:to => remote_dir,
|
71
|
+
:as => remote_filename,
|
72
|
+
:overwrite => true
|
73
|
+
|
74
|
+
assert_false response[:already_exists?]
|
75
|
+
upload_assertion.call response, @upload_file_2_size, @upload_file_2_md5, remote_filename
|
63
76
|
end
|
64
77
|
|
65
78
|
should "download file" do
|
@@ -354,6 +367,9 @@ class RapidshareExtTest < Test::Unit::TestCase
|
|
354
367
|
assert_raise_message(msg) do
|
355
368
|
@rs.reload! :validate => true
|
356
369
|
end
|
370
|
+
|
371
|
+
# Remedy
|
372
|
+
@rs.erase_all_data!
|
357
373
|
end
|
358
374
|
end
|
359
375
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rapidshare-ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rapidshare
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- lib/rapidshare-ext/version.rb
|
129
129
|
- rapidshare-ext.gemspec
|
130
130
|
- test/fixtures/files/upload1.txt
|
131
|
+
- test/fixtures/files/upload2.txt
|
131
132
|
- test/fixtures/getaccountdetails_valid.txt
|
132
133
|
- test/integration/rapidshare-ext_test.rb
|
133
134
|
- test/test_helper.rb
|
@@ -160,6 +161,7 @@ summary: ! 'Makes your interactions with Rapidshare API more pleasant by providi
|
|
160
161
|
upload files, etc'
|
161
162
|
test_files:
|
162
163
|
- test/fixtures/files/upload1.txt
|
164
|
+
- test/fixtures/files/upload2.txt
|
163
165
|
- test/fixtures/getaccountdetails_valid.txt
|
164
166
|
- test/integration/rapidshare-ext_test.rb
|
165
167
|
- test/test_helper.rb
|