Looking for a net/http example

Hey folks, I am hoping someone can post a quick net/http example which illustrates a POST method call with multipart/related content, I think I am confused as to which info is specified in the headers and which is passed as data, an example would really hep and I'd be very grateful.

Thanks,
Andy

Hi,

···

----- Original Message -----
From: "Andrew Cowan" <icculus@gmdstudios.com>
To: "ruby-talk ML" <ruby-talk@ruby-lang.org>
Sent: Thursday, April 17, 2008 12:15 AM
Subject: Looking for a net/http example

Hey folks, I am hoping someone can post a quick net/http example which
illustrates a POST method call with multipart/related content, I think I
am confused as to which info is specified in the headers and which is
passed as data, an example would really hep and I'd be very grateful.

Thanks,
Andy

Here is some code snippet from gmailer.rb

           postdata = {}
           postdata["msgbody"] = stripslashes(body)
           postdata["from"] = stripslashes(from) if from
           postdata["to"] = stripslashes(to)
           postdata["subject"] = stripslashes(subject)
           postdata["cc"] = stripslashes(cc)
           postdata["bcc"] = stripslashes(bcc)

           boundary = "----#{Time.now.to_i}#{(rand(2000)*2147483.648).to_i}"
           postdata2 =
           postdata.each {|k,v|
             postdata2.push("Content-Disposition: form-data; name=\"#{k}\"\r\n\r\n#{v}\r\n")
           }

           files.each_with_index do |f,i|
              content = File.open(f,'rb') { |c| c.read }
              postdata2.push("Content-Disposition: form-data; name=\"file#{i}\"; filename=\"#{File.basename(f)}\"\r\n" +
                "Content-Transfer-Encoding: binary\r\n" +
                "Content-Type: application/octet-stream\r\n\r\n" + content + "\r\n")
           end

           postdata = postdata2.collect { |p|
                 "--" + boundary + "\r\n" + p
           }.join('') + "--" + boundary + "--\r\n"

           np = Net::HTTP::Proxy(@proxy_host,@proxy_port,@proxy_user,@proxy_pass).new(GM_LNK_HOST, 80)
           response = nil
           np.start { |http|
             response = http.post(GM_LNK_GMAIL, postdata,{'Cookie' => @cookie_str,'User-agent' => GM_USER_AGENT,'Content-type' => 'multipart/form-data; boundary=' + boundary } )
           }

If you want full source, try gem install gmailer

Regards,
Park Heesob

Thanks for posting that!

-Andy

Park Heesob wrote:

···

Hi,
----- Original Message ----- From: "Andrew Cowan" <icculus@gmdstudios.com>
To: "ruby-talk ML" <ruby-talk@ruby-lang.org>
Sent: Thursday, April 17, 2008 12:15 AM
Subject: Looking for a net/http example

Hey folks, I am hoping someone can post a quick net/http example which illustrates a POST method call with multipart/related content, I think I am confused as to which info is specified in the headers and which is passed as data, an example would really hep and I'd be very grateful.

Thanks,
Andy

Here is some code snippet from gmailer.rb

           postdata = {}
           postdata["msgbody"] = stripslashes(body)
           postdata["from"] = stripslashes(from) if from postdata["to"] = stripslashes(to)
           postdata["subject"] = stripslashes(subject)
           postdata["cc"] = stripslashes(cc)
           postdata["bcc"] = stripslashes(bcc)

           boundary = "----#{Time.now.to_i}#{(rand(2000)*2147483.648).to_i}"
           postdata2 =
           postdata.each {|k,v|
             postdata2.push("Content-Disposition: form-data; name=\"#{k}\"\r\n\r\n#{v}\r\n")
           }

           files.each_with_index do |f,i|
              content = File.open(f,'rb') { |c| c.read }
              postdata2.push("Content-Disposition: form-data; name=\"file#{i}\"; filename=\"#{File.basename(f)}\"\r\n" +
                "Content-Transfer-Encoding: binary\r\n" +
                "Content-Type: application/octet-stream\r\n\r\n" + content + "\r\n")
           end

           postdata = postdata2.collect { |p|
                 "--" + boundary + "\r\n" + p
           }.join('') + "--" + boundary + "--\r\n"

           np = Net::HTTP::Proxy(@proxy_host,@proxy_port,@proxy_user,@proxy_pass).new(GM_LNK_HOST, 80)
           response = nil
           np.start { |http|
             response = http.post(GM_LNK_GMAIL, postdata,{'Cookie' => @cookie_str,'User-agent' => GM_USER_AGENT,'Content-type' => 'multipart/form-data; boundary=' + boundary } )
           }

If you want full source, try gem install gmailer

Regards,
Park Heesob