Form Filler

Is there an equivalent in Ruby to the Perl modules which can "fill out
an html/http form"?

Given a hash, I'd like to either get the query string to append to the
URL for GET's, or the POST contents to append for POST's, as if the
hash was the form[field] = value. The routine should handle the url
encoding and the like.

Any luck?
(If not, anyone up for a quick few lines of Ruby ninjahood?)

harp:~ > cat a.rb
   require "cgi"

   class ::Hash
     def query() map{|k,v| [CGI::escape(k), CGI::escape(v)].join "="}.join "&" end
   end

   query = { "foo" => "< > &", "bar" => "http://b/a space" }

   puts query.query

   harp:~ > ruby a.rb
   foo=%3C+%3E+%26&bar=http%3A%2F%2Fb%2Fa+space

hth.

-a

···

On Tue, 14 Feb 2006 eastcoastcoder@gmail.com wrote:

Is there an equivalent in Ruby to the Perl modules which can "fill out
an html/http form"?

Given a hash, I'd like to either get the query string to append to the
URL for GET's, or the POST contents to append for POST's, as if the
hash was the form[field] = value. The routine should handle the url
encoding and the like.

Any luck?
(If not, anyone up for a quick few lines of Ruby ninjahood?)

--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama

  harp:~ > cat a.rb
  require "cgi"

  class ::Hash
    def query() map{|k,v| [CGI::escape(k), CGI::escape(v)].join "="}.join "&" end
  end

  query = { "foo" => "< > &", "bar" => "http://b/a space" }

  puts query.query

  harp:~ > ruby a.rb
  foo=%3C+%3E+%26&bar=http%3A%2F%2Fb%2Fa+space

6 minutes from post to solution - is that a record?

Kev

i think i got one in under 2 before... :wink:

-a

···

On Tue, 14 Feb 2006, Kev Jackson wrote:

6 minutes from post to solution - is that a record?

--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama

Dňa Utorok 14 Február 2006 05:19 Kev Jackson napísal:

> harp:~ > cat a.rb
> require "cgi"
>
> class ::Hash
> def query() map{|k,v| [CGI::escape(k), CGI::escape(v)].join
> "="}.join "&" end
> end
>
> query = { "foo" => "< > &", "bar" => "http://b/a space" }
>
> puts query.query
>
>
> harp:~ > ruby a.rb
> foo=%3C+%3E+%26&bar=http%3A%2F%2Fb%2Fa+space

6 minutes from post to solution - is that a record?

Kev

Ara's time machine is almost as good as Guido's time machine, it seems.

Oh, and someone apparently hacked up a Ruby WWW::Mechanize which is supposed
to do this.

David Vallner

Excellent, most appreciated.

Forgive my RFC ignorance, but is the same string appended to the URL
for GETs and sent as the bod for POST's? Or is there a difference in
the encoding somehow?

it certainly is different. google around for more info. you'll need to use
something like http-access2 for posting form data. check out my rubyforge
script (on rubyforge no less) for a pretty complete example of posting
including file uploads and redirects.

regards.

-a

···

On Wed, 15 Feb 2006 eastcoastcoder@gmail.com wrote:

Excellent, most appreciated.

Forgive my RFC ignorance, but is the same string appended to the URL
for GETs and sent as the bod for POST's? Or is there a difference in
the encoding somehow?

--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama