how to send raw data from a temp file as a base64 value ?

I am trying to send data from a remote file attachment....

I am trying to send data from a remote file attachment....
-------
attachment['url'] = "http://www.mydomain.com/resource/download/54643"

I wrote a class RemoteFile < ::Tempfile to fetch to remote data
------
remote_file = RemoteFile.new(attachment['url'] )
so, I get a tempfile

#<File:/var/folders/NK/NKfWCW3eEVCg0ERnpPsnME+++TI/-Tmp-/

93806edfbb0daf7303347d7faaffc2d0f5b22a1d20100914-5545-1y66mt8-0>

now I would like to pass the content of this temp file as a base64
value
...
ticketing_xml << "<value><base64>#{ tmp_data }</base64></value>"
...

how should I do write the tmp_data ?

should I use : open(remote_file ).read

Sure. If these remote files are big, your Rails processes are going to eat a lot of ram.

Instead of reading things into a temp file first, look into open-uri so you can simply read it directly from the remote host into your xml string...

-philip

Thanks Philip, this is better .. it seems a little bit more
complicated that I thought

I need to get a file that I download from this url.... this not the
file url, but an html page to download the file
attachment['url'] :: "http://www.pivotaltracker.com/resource/download/
579633"

and then pass the encoded content of the downloaded file as data
into the xml , so it'll become an attachment for another ticketing
system....

=>, the open(remote_file ).read doesn't give me the file, but the
html...

so, I need to to :
1 - 'execute' http://www.pivotaltracker.com/resource/download/579633
to get and store the file locally
2- read the file locally , encode it and pass the content as a value
in the xml

any idea on how to do that ?

Thanks Philip, this is better .. it seems a little bit more
complicated that I thought

I need to get a file that I download from this url.... this not the
file url, but an html page to download the file
attachment['url'] :: "http://www.pivotaltracker.com/resource/download/
579633"

and then pass the encoded content of the downloaded file as data
into the xml , so it'll become an attachment for another ticketing
system....

=>, the open(remote_file ).read doesn't give me the file, but the
html...

so, I need to to :
1 - 'execute' http://www.pivotaltracker.com/resource/download/579633
to get and store the file locally

I'm not understanding what this step means... I've never used pivotaltracker though.. does going to that page result in a file being downloaded? Is the download the HTTP response? Or triggered somehow else? If it's the response open-uri should be able to handle it. I don't recall how well open-uri handles redirects so double check that.

-p

Hi Philip

this url is a route to Pivotal web app...
when I use "http://www.pivotaltracker.com/resource/download/579633"
in my browser, I get a corresponding file attachment downloaded...
so, this is an url to Pivotal web app, which execute the
action :download in the controller Resource send the file .... which
open in my browser

so I cannot use this url as a file location url (with open-uri ) and
I don't get the file location ...
seems to be redirected to an amazon S3 location where the file is
located.... ( yes, the response is You have been redirected blah
blah)

I maybe am not understanding what you need, but if you are trying to do this where you have tmp_data in memory and need to encode tmp_data

ticketing_xml << “#{ tmp_data }”

Then do

require ‘base64’

ticketing_xml << “#{ Base64.encode64(tmp_data) }”