mediafire 1.1.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,44 @@
1
+ require 'mediafire'
2
+ require 'progressbar'
3
+
4
+ if ARGV.size < 1
5
+ exit
6
+ end
7
+
8
+ queue = Queue.new
9
+
10
+ file = ARGV[0]
11
+ filename = File.basename(file)
12
+ puts "Filename: " + filename
13
+ filesize = File.stat(file).size
14
+ puts "Filesize: " + filesize.to_s
15
+
16
+ m = Mediafire.new
17
+ m.login('<account>', '<password>')
18
+
19
+ Thread.new do
20
+ queue.push m.upload(file)
21
+ end
22
+
23
+ upload_t = nil
24
+ while upload_t.nil?
25
+ Thread.list.each do |n|
26
+ if n.key?(:filename)
27
+ upload_t = n
28
+ break
29
+ end
30
+ end
31
+ sleep 0.1
32
+ end
33
+
34
+ pbar = ProgressBar.new('test(bytes)', filesize)
35
+ pbar.file_transfer_mode
36
+ while upload_t.alive?
37
+ uploadsize = m.upload_size filename
38
+ pbar.set(uploadsize) if uploadsize <= filesize
39
+ sleep 0.01
40
+ end
41
+ pbar.finish
42
+
43
+ uploadfile = queue.pop
44
+ puts "filename: #{uploadfile.name} size: #{uploadfile.size} key: #{uploadfile.quickkey}"
data/lib/mediafire.rb CHANGED
@@ -1,11 +1,16 @@
1
1
  # coding: utf-8
2
2
 
3
+ $:.unshift(File.dirname(__FILE__))
4
+
5
+ require 'thread'
6
+ require 'timeout'
3
7
  require 'nokogiri'
4
8
  require 'mediafire/connection'
5
9
  require 'mediafire/store_object'
6
10
  require 'mediafire/error'
7
11
  require 'mediafire/client'
8
12
 
13
+
9
14
  module Mediafire
10
15
  class << self
11
16
  def new()
@@ -8,6 +8,8 @@ module Mediafire
8
8
  def initialize()
9
9
  @loggedin = false
10
10
  @cookie = {}
11
+ @s_queue = Queue.new
12
+ @r_queue = Queue.new
11
13
 
12
14
  @root_folder = nil
13
15
 
@@ -1,6 +1,7 @@
1
1
  require 'uri'
2
2
  require 'net/http'
3
3
  require 'net/http/post/multipart'
4
+ require 'net/http/uploadprogress'
4
5
 
5
6
  Net::HTTP.version_1_1
6
7
 
@@ -32,16 +33,29 @@ module Mediafire
32
33
  end
33
34
  request['Cookie'] = cookie
34
35
 
36
+ if has_multipart? options
37
+ t = Thread.new do
38
+ loop do
39
+ @s_queue.pop.call request.upload_size
40
+ end
41
+ end
42
+ options.values.each do |v|
43
+ if v.is_a? UploadIO
44
+ t[:filename] = v.original_filename
45
+ end
46
+ end
47
+ end
35
48
  response = Net::HTTP.start(uri.host, uri.port) do |http|
36
49
  http.request(request)
37
50
  end
51
+ t.kill if has_multipart? options
38
52
  check_statuscode(response)
39
53
  build_cookie(response.get_fields('Set-Cookie'))
40
54
 
41
55
  return response
42
56
  end
43
57
 
44
- def has_multipart?(options)
58
+ def has_multipart?(options={})
45
59
  options.values.each do |v|
46
60
  if v.is_a? UploadIO
47
61
  return true
@@ -49,6 +63,18 @@ module Mediafire
49
63
  end
50
64
  false
51
65
  end
66
+
67
+ def upload_size(filename)
68
+ Thread.list.each do |t|
69
+ if t[:filename] == filename
70
+ @s_queue.push Proc.new {|n| @r_queue.push n}
71
+ return @r_queue.pop
72
+ end
73
+ end
74
+ 0
75
+ rescue Timeout::Error => e
76
+ return nil
77
+ end
52
78
 
53
79
  private
54
80
 
@@ -1,3 +1,3 @@
1
1
  module Mediafire
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.1"
3
3
  end
data/mediafire.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- # s.add_development_dependency "rspec"
22
21
  s.add_runtime_dependency "nokogiri", ">= 1.5.0"
23
22
  s.add_runtime_dependency "multipart-post", ">= 1.1.3"
23
+ s.add_runtime_dependency "net-http-uploadprogress", ">= 1.0.0"
24
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediafire
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-05 00:00:00.000000000Z
12
+ date: 2011-09-25 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &70122225470860 !ruby/object:Gem::Requirement
16
+ requirement: &70179447300800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.5.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70122225470860
24
+ version_requirements: *70179447300800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: multipart-post
27
- requirement: &70122225470360 !ruby/object:Gem::Requirement
27
+ requirement: &70179447300300 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,18 @@ dependencies:
32
32
  version: 1.1.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70122225470360
35
+ version_requirements: *70179447300300
36
+ - !ruby/object:Gem::Dependency
37
+ name: net-http-uploadprogress
38
+ requirement: &70179447299840 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.0
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70179447299840
36
47
  description: A Ruby wrapper for the unofficial Mediafire API
37
48
  email:
38
49
  - m@skahack.com
@@ -63,6 +74,7 @@ files:
63
74
  - examples/toggle_acl.rb
64
75
  - examples/update.rb
65
76
  - examples/upload_file.rb
77
+ - examples/upload_file_with_upload-progress.rb
66
78
  - lib/mediafire.rb
67
79
  - lib/mediafire/api.rb
68
80
  - lib/mediafire/client.rb