generate and encode a pass in URLs
authorLunar <lunar@anargeek.net>
Sun, 1 Aug 2010 21:55:18 +0000 (23:55 +0200)
committerLunar <lunar@anargeek.net>
Sun, 1 Aug 2010 21:55:18 +0000 (23:55 +0200)
coquelicot.rb
test_coquelicot.rb

index dc82731..0606d71 100644 (file)
@@ -263,16 +263,18 @@ get '/' do
 end
 
 get '/ready/:link' do |link|
+  link, pass = link.split '-' if link.include? '-'
   unless depot.file_exists? link then
     not_found
   end
   base = request.url.gsub(/\/ready\/[^\/]*$/, '')
-  @url = "#{base}/#{link}"
+  @url = "#{base}/#{link}-#{pass}"
   haml :ready
 end
 
 get '/:link' do |link|
-  file = depot.get_file(link, 'XXXsecret')
+  link, pass = link.split '-' if link.include? '-'
+  file = depot.get_file(link, pass)
   not_found if file.nil?
 
   last_modified file.mtime.httpdate
@@ -295,13 +297,14 @@ post '/upload' do
     return haml(:index)
   end
   src = params[:file][:tempfile]
+  pass = gen_random_pass
   link = depot.add_file(
-     src, 'XXXsecret',
+     src, pass,
      { "Filename" => params[:file][:filename],
        "Length" => src.stat.size,
        "Content-Type" => params[:file][:type]
      })
-  redirect "ready/#{link}"
+  redirect "ready/#{link}-#{pass}"
 end
 
 helpers do
index f827336..61f4e79 100644 (file)
@@ -92,9 +92,15 @@ describe 'Coquelicot' do
     url_name.should_not eql(File.basename(files[0]))
   end
 
-  it "should encode the encryption key in URL when no password has been specified"
+  it "should encode the encryption key in URL when no password has been specified" do
+    post '/upload', 'file' => Rack::Test::UploadedFile.new(__FILE__, 'text/x-script.ruby'),
+                    'upload_password' => UPLOAD_PASSWORD
+    last_response.redirect?.should be_true
+    url_name = last_response['Location'].split('/')[-1]
+    url_name.split('-').should have(2).items
+  end
 
-  it "should not encode the encryption key in URL when no password has been specified"
+  it "should not encode the encryption key in URL when a password has been specified"
 
   it "should give a random password when asked"