This commit is contained in:
garnier-quentin 2019-03-19 09:57:29 +01:00
commit 64fed72240
5 changed files with 59 additions and 27 deletions

View File

@ -398,8 +398,13 @@ sub get_code {
return $self->{response_code}; return $self->{response_code};
} }
1; sub get_message {
my ($self, %options) = @_;
return $http_code_explained->{$self->{response_code}};
}
1;
__END__ __END__

View File

@ -250,6 +250,12 @@ sub get_code {
return $self->{response}->code(); return $self->{response}->code();
} }
sub get_message {
my ($self, %options) = @_;
return $self->{response}->message();
}
1; 1;
__END__ __END__

View File

@ -190,6 +190,12 @@ sub get_code {
return $self->{'backend_' . $self->{http_backend}}->get_code(); return $self->{'backend_' . $self->{http_backend}}->get_code();
} }
sub get_message {
my ($self, %options) = @_;
return $self->{'backend_' . $self->{http_backend}}->get_message();
}
1; 1;
__END__ __END__

View File

@ -181,18 +181,23 @@ sub get_access_token {
full_url => $self->{login_endpoint} . '/' . $self->{tenant} . '/oauth2/token', full_url => $self->{login_endpoint} . '/' . $self->{tenant} . '/oauth2/token',
hostname => ''); hostname => '');
if (!defined($content) || $content eq '' || $self->{http}->get_header(name => 'content-length') == 0) {
$self->{output}->add_option_msg(short_msg => "Login endpoint API returns empty content [code: '" . $self->{http}->get_code() . "'] [message: '" . $self->{http}->get_message() . "']");
$self->{output}->option_exit();
}
my $decoded; my $decoded;
eval { eval {
$decoded = JSON::XS->new->utf8->decode($content); $decoded = JSON::XS->new->utf8->decode($content);
}; };
if ($@) { if ($@) {
$self->{output}->output_add(long_msg => $content, debug => 1); $self->{output}->output_add(long_msg => $content, debug => 1);
$self->{output}->add_option_msg(short_msg => "Cannot decode json response"); $self->{output}->add_option_msg(short_msg => "Cannot decode response (add --debug option to display returned content)");
$self->{output}->option_exit(); $self->{output}->option_exit();
} }
if (defined($decoded->{error})) { if (defined($decoded->{error})) {
$self->{output}->output_add(long_msg => "Error message : " . $decoded->{error_description}, debug => 1); $self->{output}->output_add(long_msg => "Error message : " . $decoded->{error_description}, debug => 1);
$self->{output}->add_option_msg(short_msg => "Login endpoint API return error code '" . $decoded->{error} . "' (add --debug option for detailed message)"); $self->{output}->add_option_msg(short_msg => "Login endpoint API returns error code '" . $decoded->{error} . "' (add --debug option for detailed message)");
$self->{output}->option_exit(); $self->{output}->option_exit();
} }
@ -217,18 +222,28 @@ sub request_api {
my $content = $self->{http}->request(%options); my $content = $self->{http}->request(%options);
if (!defined($content) || $content eq '' || $self->{http}->get_header(name => 'content-length') == 0) {
$self->{output}->add_option_msg(short_msg => "Management endpoint API returns empty content [code: '" . $self->{http}->get_code() . "'] [message: '" . $self->{http}->get_message() . "']");
$self->{output}->option_exit();
}
my $decoded; my $decoded;
eval { eval {
$decoded = JSON::XS->new->utf8->decode($content); $decoded = JSON::XS->new->utf8->decode($content);
}; };
if ($@) { if ($@) {
$self->{output}->output_add(long_msg => $content, debug => 1); $self->{output}->output_add(long_msg => $content, debug => 1);
$self->{output}->add_option_msg(short_msg => "Cannot decode json response: $@"); $self->{output}->add_option_msg(short_msg => "Cannot decode response (add --debug option to display returned content)");
$self->{output}->option_exit(); $self->{output}->option_exit();
} }
if (defined($decoded->{error})) { if (defined($decoded->{error})) {
$self->{output}->output_add(long_msg => "Error message : " . $decoded->{error}->{message}, debug => 1); $self->{output}->output_add(long_msg => "Error message : " . $decoded->{error}->{message}, debug => 1);
$self->{output}->add_option_msg(short_msg => "Management endpoint API return error code '" . $decoded->{error}->{code} . "' (add --debug option for detailed message)"); $self->{output}->add_option_msg(short_msg => "Management endpoint API returns error code '" . $decoded->{error}->{code} . "' (add --debug option for detailed message)");
$self->{output}->option_exit();
}
if (defined($decoded->{code})) {
$self->{output}->output_add(long_msg => "Message : " . $decoded->{message}, debug => 1);
$self->{output}->add_option_msg(short_msg => "Management endpoint API returns code '" . $decoded->{code} . "' (add --debug option for detailed message)");
$self->{output}->option_exit(); $self->{output}->option_exit();
} }

View File

@ -40,8 +40,7 @@ sub new {
} }
if (!defined($options{noptions})) { if (!defined($options{noptions})) {
$options{options}->add_options(arguments => $options{options}->add_options(arguments => {
{
"subscription:s" => { name => 'subscription' }, "subscription:s" => { name => 'subscription' },
"tenant:s" => { name => 'tenant' }, "tenant:s" => { name => 'tenant' },
"client-id:s" => { name => 'client_id' }, "client-id:s" => { name => 'client_id' },
@ -129,7 +128,8 @@ sub execute {
$raw_results = JSON::XS->new->utf8->decode($response); $raw_results = JSON::XS->new->utf8->decode($response);
}; };
if ($@) { if ($@) {
$self->{output}->add_option_msg(short_msg => "Cannot decode json response: $@"); $self->{output}->output_add(long_msg => $response, debug => 1);
$self->{output}->add_option_msg(short_msg => "Cannot decode response (add --debug option to display returned content)");
$self->{output}->option_exit(); $self->{output}->option_exit();
} }