filefm 0.1 → 0.1.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.
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
-