AsposeSlidesCloud-SlidesApi
view release on metacpan or search on metacpan
lib/AsposeSlidesCloud/ApiClient.pm view on Meta::CPAN
return $self->from_hash($_instance, decode_json $data);
}
}
}
# return 'Accept' based on an array of accept provided
# @param [Array] header_accept_array Array fo 'Accept'
# @return String Accept (e.g. application/json)
sub select_header_accept
{
my ($self, @header) = @_;
if (@header == 0 || (@header == 1 && $header[0] eq '')) {
return undef;
} elsif (grep(/^application\/json$/i, @header)) {
return 'application/json';
} else {
return join(',', @header);
}
}
# return the content type based on an array of content-type provided
# @param [Array] content_type_array Array fo content-type
# @return String Content-Type (e.g. application/json)
sub select_header_content_type
{
my ($self, @header) = @_;
if (@header == 0 || (@header == 1 && $header[0] eq '')) {
return 'application/json'; # default to application/json
} elsif (grep(/^application\/json$/i, @header)) {
return 'application/json';
} elsif ($header[0] eq 'multipart/form-data') {
return 'application/octet-stream';
} else {
return $header[0]
}
}
# add auth, user agent and other headers
#
# @param array $headerParams header parameters (by ref)
sub update_headers {
my ($self, $header_params) = @_;
my $custom_headers = $self->{config}{custom_headers};
foreach my $key (keys %$custom_headers) {
$header_params->{$key} = $self->{config}{custom_headers}{$key};
}
$self->update_params_for_auth($header_params);
}
# update header and query param based on authentication setting
#
# @param array $headerParams header parameters (by ref)
sub update_params_for_auth {
my ($self, $header_params) = @_;
if ((defined $self->{config}{app_sid} && $self->{config}{app_sid} ne "") && (!defined $self->{config}{access_token} || $self->{config}{access_token} eq "")) {
my $_url = ($self->{config}{auth_base_url} // $self->{config}{base_url}) . "/connect/token";
my $_request = POST($_url, {}, Content => 'grant_type=client_credentials&client_id='.$self->{config}{app_sid}.'&client_secret='.$self->{config}{app_key});
my $_response = $self->{ua}->request($_request);
unless ($_response->is_success) {
my $content = sprintf("%s", $_response->content);
croak(sprintf "API Exception(%s): %s\n%s", 401, $_response->message, $content);
}
my $decoded_data = decode_json $_response->content;
$self->{config}{access_token} = $decoded_data->{access_token};
}
if (defined $self->{config}{access_token} && $self->{config}{access_token} ne "") {
$header_params->{'Authorization'} = 'Bearer ' . $self->{config}{access_token};
}
}
sub _log {
my ($self, $message) = @_;
if (defined $self->{config}{logger}) {
$self->{config}{logger}->($message);
} else {
$log->debug($message);
}
}
1;
( run in 3.063 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )