
#precisamos das dependências: LWP (deve existir por default), Authen::NTLM (atualizada), Crypt::DES e Digest::MD4
use LWP::UserAgent;
use HTTP::Request::Common;
#use LWP::Debug qw(+);
use JSON::XS;
#use Data::Dumper;

#usuário, senha e URL da chamada
my $username = 'odata';
my $password = '0d@t@';
my $host = 'millennium.iwise.com.br:888';
my $odataUrl = "http://$host/api/millenium_eco/filiais/lista_simples";

#configura o UserAgent
my $ua = new LWP::UserAgent(keep_alive=>1);
$ua->ssl_opts(verify_hostname =>0);
#aceitamos compressão
$ua->default_header("Accept-Encoding" => "deflate");
#seta as credenciais
$ua->credentials($host, '', $username=> $password);

$request = GET $odataUrl;
print "--Fazendo a chamada...-----------\n";
$response = $ua->request($request);

if ($response->is_success) {print "funcionou!->" . $response->code . "\n"}
else {print "Não funcionou!->" . $response->code . ": " . $response->status_line . "\n"}

#decodifica o resultado json em um objeto perl
 $perl_scalar = JSON::XS->new->utf8->decode ($response->decoded_content);
 
 #o resultado é estruturado como um hash contendo um membro "d" que é um array contendo hashes para cada registro
 #anda no resultado "d" e imprime o campo descricao de cada item do array
print "\n**resultados**\n";
foreach my $action(@{$perl_scalar->{value}}){  
 print "$action->{nome}\n";
};

print "\n";
