#!/usr/bin/ruby require 'base64' require 'net/http' require 'openssl' ACCESS_KEY_ID="xxxxxxxxxxxxxxxxxxxx" SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Uploads a single file to PDF Alchemy. def uploadFile(filename) # Generate the HMAC signature. print "Uploading '#{File.basename(filename)}': "; STDOUT.flush date=Time.now.getutc.strftime('%a, %d %b %Y %H:%M:%S GMT') request="/#{ACCESS_KEY_ID}/inqueue/#{URI::escape(File.basename(filename))}" clearText="PUT\n#{ACCESS_KEY_ID}\n#{date}\n#{request}" signature=Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'),SECRET_ACCESS_KEY,clearText)).strip # Upload the file to PDF Alchemy. http=Net::HTTP.new('www.pdfalchemy.com') http.start do req=Net::HTTP::Put.new(request) req['Date']=date req['X-PDF-Alchemy-Signature']=signature resp=http.request(req,open(filename,'rb'){|io|io.read}) print "#{resp.code}: #{resp.message}: " unless resp.is_a?(Net::HTTPSuccess) puts resp.body end end # Uploads all convertable files from a single directory, to PDF Alchemy. def uploadFilesInDir(dirname) Dir.foreach(dirname) do|filename| uploadFile(filename) unless filename.match(/\.(docx?|rtf|txt)$/) == nil end end ARGV.each do|arg| if File.directory?(arg) then uploadFilesInDir(arg) else uploadFile(arg) end end