filefm 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'rubygems'
4
- require 'filefm'
4
+ require './lib/filefm.rb'
5
5
 
6
6
  require 'rake'
7
7
 
@@ -20,7 +20,7 @@ module FileFM
20
20
  Log.debug "Initializing logger"
21
21
  end
22
22
 
23
- VERSION="0.1"
23
+ VERSION="0.1.1"
24
24
 
25
25
  def self.download(link, opts={})
26
26
  uri = URI.parse link
@@ -66,7 +66,11 @@ module FileFM
66
66
  puts "unknown file size for #{@filename} but downloading..." if @size.nil?
67
67
  #puts @link.to_s
68
68
 
69
- dest_file = @location + (@filename ||= File.basename(uri.path))
69
+ if opts[:output]
70
+ dest_file = opts[:output]
71
+ else
72
+ dest_file = @location + (@filename ||= File.basename(uri.path))
73
+ end
70
74
  response = http.request(request) do |response|
71
75
  if opts[:progressbar]
72
76
  bar = ProgressBar.new("Progress", @size.to_i) unless @size.nil?
@@ -16,15 +16,19 @@ module FileFM
16
16
 
17
17
  require 'net/http'
18
18
 
19
- class StreamingUploader
20
-
21
- class << self
19
+ class StreamingUploaderMultipart
22
20
 
23
21
  def put(to_url, params = {}, &block)
24
22
  boundary = '----RubyMultipartClient' + rand(1000000).to_s + 'ZZZZZ'
25
23
  parts = []
26
24
  content_file = nil
27
25
 
26
+ params.each do |key, value|
27
+ if value.kind_of?(File)
28
+ filepath = value.path
29
+ parts << StreamPart.new(value, File.size(filepath))
30
+ end
31
+ end
28
32
  unless params.nil? || params.empty?
29
33
  params.each do |key, value|
30
34
  if value.kind_of?(File)
@@ -52,12 +56,10 @@ module FileFM
52
56
  headers = { 'Content-Length' => body_stream.size.to_s, 'Content-Type' => 'application/json' }.merge(params[:headers])
53
57
 
54
58
  req = Net::HTTP::Put.new(url.path, headers)
55
- if ENV["DEBUG"] == "yes"
56
- puts "HEADERS: " + headers.inspect
57
- puts "HOST: " + url.host
58
- puts "PORT: " + url.port.to_s
59
- puts "PATH: " + url.path
60
- end
59
+ Log.debug "HEADERS: " + headers.inspect
60
+ Log.debug "HOST: " + url.host
61
+ Log.debug "PORT: " + url.port.to_s
62
+ Log.debug "PATH: " + url.path
61
63
 
62
64
  req.content_length = body_stream.size
63
65
  req.content_type = 'multipart/form-data; boundary=' + boundary unless parts.empty?
@@ -65,7 +67,44 @@ module FileFM
65
67
 
66
68
  http = Net::HTTP.new(url.host, url.port)
67
69
  http.use_ssl = true if url.scheme == "https"
68
- #http.verify_mode = OpenSSL::SSL::VERIFY_NONE if url.scheme == "https"
70
+ res = http.request(req)
71
+ res
72
+ end
73
+ end
74
+
75
+ class StreamingUploader
76
+
77
+ class << self
78
+
79
+ def put(to_url, params = {}, &block)
80
+ parts = []
81
+ content_file = nil
82
+
83
+ params.each do |key, value|
84
+ if value.kind_of?(File)
85
+ filepath = value.path
86
+ parts << StreamPart.new(value, File.size(filepath))
87
+ end
88
+ end
89
+
90
+ body_stream = MultipartStream.new(parts, block)
91
+
92
+ url = URI.parse(to_url)
93
+
94
+ headers = { 'Content-Length' => body_stream.size.to_s }.merge(params[:headers])
95
+
96
+ req = Net::HTTP::Put.new(url.path, headers)
97
+ Log.debug "HEADERS: " + headers.inspect
98
+ Log.debug "HOST: " + url.host
99
+ Log.debug "PORT: " + url.port.to_s
100
+ Log.debug "PATH: " + url.path
101
+
102
+ req.content_length = body_stream.size
103
+ #req.content_type = i
104
+ req.body_stream = body_stream
105
+
106
+ http = Net::HTTP.new(url.host, url.port)
107
+ http.use_ssl = true if url.scheme == "https"
69
108
  res = http.request(req)
70
109
  res
71
110
  end
@@ -3,3 +3,24 @@ require 'filefm'
3
3
  def test_config
4
4
  File.join(File.dirname(__FILE__), 'config.yml')
5
5
  end
6
+
7
+ def swift_server
8
+ ENV["SWIFT_SERVER"]
9
+ end
10
+
11
+ def swift_username
12
+ u = ENV["SWIFT_USERNAME"]
13
+ u
14
+ end
15
+
16
+ def swift_password
17
+ ENV["SWIFT_PASSWORD"]
18
+ end
19
+
20
+ def swift_test_container
21
+ ENV["SWIFT_TEST_CONTAINER"] || "filefm-test"
22
+ end
23
+
24
+ def swift_keystone_url
25
+ ENV["SWIFT_KEYSTONE_URL"]
26
+ end
@@ -0,0 +1,44 @@
1
+ require 'filefm/uploaders/swift.rb'
2
+ require 'filefm/downloaders/swift.rb'
3
+
4
+ Shindo.tests('Swift') do
5
+
6
+ tests("insecure upload") do
7
+ test_file = "/tmp/swift-upload-test"
8
+ returns(true, 'test file') do
9
+ `dd if=/dev/zero of=#{test_file} bs=1k count=128 2>/dev/null`
10
+ FileFM::Uploaders::Swift.upload(test_file,
11
+ "swift://#{swift_server}/#{swift_test_container}/#{File.basename(test_file)}",
12
+ {
13
+ :username => "#{swift_username}",
14
+ :password => "#{swift_password}",
15
+ :progressbar => true,
16
+ :secure => false
17
+ })
18
+ true
19
+ end
20
+ end
21
+
22
+ tests("insecure download") do
23
+ dest_file = "/tmp/swift-download-test"
24
+ test_file = "/tmp/swift-upload-test"
25
+ returns(true, 'download ok') do
26
+ FileFM::Downloaders::Swift.download(
27
+ "swift://#{swift_server}/#{swift_test_container}/#{File.basename(test_file)}",
28
+ {
29
+ :output => dest_file,
30
+ :username => "#{swift_username}",
31
+ :password => "#{swift_password}",
32
+ :progressbar => true,
33
+ :secure => false
34
+ }
35
+ )
36
+ File.exist?(dest_file)
37
+ end
38
+ returns(true, 'MD5 matches') do
39
+ `md5sum #{dest_file}`.split()[0] == `md5sum #{test_file}`.split()[0]
40
+ end
41
+ end
42
+
43
+ end
44
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filefm
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: 0.1.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: 2012-03-20 00:00:00.000000000 Z
12
+ date: 2012-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
16
- requirement: &23328280 !ruby/object:Gem::Requirement
16
+ requirement: &6997160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *23328280
24
+ version_requirements: *6997160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &23326980 !ruby/object:Gem::Requirement
27
+ requirement: &7067480 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *23326980
35
+ version_requirements: *7067480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &23325780 !ruby/object:Gem::Requirement
38
+ requirement: &7156020 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.6.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *23325780
46
+ version_requirements: *7156020
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rcov
49
- requirement: &23325260 !ruby/object:Gem::Requirement
49
+ requirement: &7166300 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *23325260
57
+ version_requirements: *7166300
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: clamp
60
- requirement: &23324520 !ruby/object:Gem::Requirement
60
+ requirement: &7185640 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *23324520
68
+ version_requirements: *7185640
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fog
71
- requirement: &23323720 !ruby/object:Gem::Requirement
71
+ requirement: &7201540 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *23323720
79
+ version_requirements: *7201540
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: progressbar
82
- requirement: &23340420 !ruby/object:Gem::Requirement
82
+ requirement: &7225400 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *23340420
90
+ version_requirements: *7225400
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rest-client
93
- requirement: &23339580 !ruby/object:Gem::Requirement
93
+ requirement: &7234520 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *23339580
101
+ version_requirements: *7234520
102
102
  description: Simple library to download/upload files
103
103
  email: rubiojr@frameos.org
104
104
  executables:
@@ -125,8 +125,8 @@ files:
125
125
  - lib/filefm/uploaders/swift.rb
126
126
  - tests/config.yml
127
127
  - tests/config/config_tests.rb
128
- - tests/downloaders/swift_tests.rb
129
128
  - tests/helper.rb
129
+ - tests/swift/swift_tests.rb
130
130
  homepage: http://github.com/rubiojr/filefm
131
131
  licenses:
132
132
  - MIT
@@ -1,4 +0,0 @@
1
- Shindo.tests('Test Swift Downloader') do
2
-
3
- end
4
-