HTTP-Request-Form

 view release on metacpan or  search on metacpan

Form.pm  view on Meta::CPAN

      return $self->{'referer'};
   }
}

sub press {
   my ($self, $button, $bnum, $bnum2) = @_;
   my $x = 2;
   my $y = 2;
   if (ref $bnum) {
      $x = $bnum->[0];
      $y = $bnum->[1];
      $bnum = $bnum2;
   }
   my @array = ();
   foreach my $i ($self->allfields) {
      if ($self->field_type($i) eq "input/checkbox") {
         if ($self->checkbox_ischecked($i)) {
            push @array, $i;
            push @array, $self->field($i);
	 }
      } elsif ($self->field_type($i) eq "select") {
         if (defined($self->field($i))) {
	    push @array, $i;
	    push @array, $self->field($i);
	 }
      } elsif ($self->field_type($i) eq "input/file") {
         push @array, $i;
	 push @array, [ $self->field($i) ];
      } else {
         push @array, $i;
         push @array, $self->field($i);
      }
   }
   if (defined($button)) {
      die "Button $button not included in form"
          if (!defined($self->button($button)));
      if (defined($bnum)) {
         if (@{$self->button_type($button)}[$bnum] eq "image") {
            push @array, $button . '.x', $x;
            push @array, $button . '.y', $y;
	 } else {
            push @array, $button, @{$self->button($button)}[$bnum];
	 }
      } else {
         if (@{$self->button_type($button)}[0] eq "image") {
            push @array, $button . '.x', $x;
            push @array, $button . '.y', $y;
	 } else {
            push @array, $button, @{$self->button($button)}[0];
	 }
      }
   }
   my $url = url $self->link;
   if (defined($self->base)) {
      $url = $url->abs($self->base);
   }
   if ($self->{'debug'}) {
      print $self->method, " $url ", join(' - ', @array), "\n";
   }
   if ($self->{'isindex'}) {
      $url->query_keywords( $self->{'fieldvals'}->{'keywords'} );
      return GET $url;
   } elsif (uc($self->method) eq "POST") {
      my $referer = $self->referer;
      if ($self->{'upload'}) {
         if (defined($referer)) {
            return POST $url, Content_Type => 'form-data',
	                      'referer' => $referer,
	                      Content => \@array;
	 } else {
            return POST $url, Content_Type => 'form-data',
	                      Content => \@array;
	 }
      } else {
         if (defined($referer)) {
            return POST $url, 'referer' => $referer,
	                      Content => \@array;
	 } else {
            return POST $url, \@array;
	 }
      }
   } elsif (uc($self->method) eq "GET") {
      $url->query_form(@array);
      return GET $url;
   }
}

sub dump {
   my $self = shift;
   print "FORM METHOD=", $self->method, "\n     ACTION=", $self->link, "\n     BASE=", $self->base, "\n";
   foreach my $i ($self->allfields) {
      if (defined($self->field($i))) {
         print "FIELD{", $self->field_type($i), "} $i=", $self->field($i), "\n";
      } else {
         print "FIELD{", $self->field_type($i), "} $i\n";
      }
      if ($self->is_selection($i)) {
         print "      [", join(", ", @{$self->field_selection($i)}), "]\n";
      }
   }
   foreach my $i ($self->buttons) {
      if (defined($self->button($i))) {
         print "BUTTON $i=[", join(", ", map {$_ ? $_ : "<undef>"} @{$self->button($i)}), "]\n";
      } else {
         print "BUTTON $i\n";
      }
      if (defined($self->button_type($i))) {
         print "       $i={", join(", ", @{$self->button_type($i)}), "}\n";
      }
   }
   print "\n";
}

1;

__END__

=head1 NAME

HTTP::Request::Form - Construct HTTP::Request objects for form processing



( run in 1.344 second using v1.01-cache-2.11-cpan-754626df90b )