PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` package Paws::Net::EC2Caller; use Paws; use Moose::Role; use HTTP::Request::Common; use POSIX qw(strftime); use Paws::Net::XMLResponse; has response_to_object => ( is => 'ro', default => sub { Paws::Net::XMLResponse->new; } ); sub array_flatten_string { my $self = shift; return ($self->flattened_arrays)?'%s.%d':'%s.member.%d'; } # converts the objects that represent the call into parameters that the API can understand sub _to_querycaller_params { my ($self, $params) = @_; my %p; foreach my $att (grep { $_ !~ m/^_/ } $params->meta->get_attribute_list) { my $key; if ($params->meta->get_attribute($att)->does('Paws::API::Attribute::Trait::NameInRequest')){ $key = $params->meta->get_attribute($att)->request_name; } else { $key = $att; } # This is due to code found in serialize.py (EC2Serializer) substr($key,0,1) = uc(substr($key,0,1)); if (defined $params->$att) { my $att_type = $params->meta->get_attribute($att)->type_constraint; if (Paws->is_internal_type($att_type)) { if ($att_type eq 'Bool') { $p{ $key } = ($params->{$att} == 1) ? 'true' : 'false'; } else { $p{ $key } = $params->{$att}; } } elsif ($att_type =~ m/^ArrayRef\[(.*)\]/) { if (Paws->is_internal_type("$1")){ my $i = 1; foreach my $value (@{ $params->$att }){ $p{ sprintf($self->array_flatten_string, $key, $i) } = $value; $i++ } } else { my $i = 1; foreach my $value (@{ $params->$att }){ my %complex_value = $self->_to_querycaller_params($value); map { $p{ sprintf($self->array_flatten_string . ".%s", $key, $i, $_) } = $complex_value{$_} } keys %complex_value; $i++ } } } else { my %complex_value = $self->_to_querycaller_params($params->$att); map { $p{ "$key.$_" } = $complex_value{$_} } keys %complex_value; } } } return %p; } sub generate_content_from_parameters { my ($self, $request) = @_; $request->headers->content_type('application/x-www-form-urlencoded'); my $url = URI->new('http:'); $url->query_form($request->parameters); my $content = $url->query; # HTML/4.01 says that line breaks are represented as "CR LF" pairs (i.e., `%0D%0A') $content =~ s/(?new(); $request->url($self->_api_endpoint . '/'); $request->uri('/'); $request->method('POST'); $request->parameters({ Action => $call->_api_call, Version => $self->version, $self->_to_querycaller_params($call) }); $request->content($self->generate_content_from_parameters($request)); $self->sign($request); return $request; } 1;