mediafire 1.1.0 → 1.2.1

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.
@@ -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