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 )