package DigiCert::Automation; =head1 DESCRIPTION Blah blah about Digicert. You need an API key to make calls. API keys blah blah blah Set L to the secret value. The API is documented at https://dev.digicert.com/en/certcentral-apis.html =cut use v5.36; use Moo; use Carp; use JSON::MaybeXS; use LWP::UserAgent; use Log::Any '$log', default_adapter => 'Stderr'; use URI; has base_uri => is => 'rw', default => 'https://caas.digicert.com/automationws/v1'; has api_key => is => 'rw', required => 1; has http_timeout => is => 'rw', default => 60, trigger => sub ($self, @) { $self->_user_agent->timeout($self->http_timeout) if $self->_has_user_agent; }; has _user_agent => ( is => 'lazy', predicate => 1 ); sub _build__user_agent($self, @) { my $ua= LWP::UserAgent->new(cookie_jar => {}); $ua->timeout($self->http_timeout) if defined $self->http_timeout; $ua->default_header(Accept => 'application/json'); $ua->default_header('X-DC-DEVKEY' => $self->api_key); $ua->add_handler('request_send', sub ($req, $ua, $h, @) { if ($log->is_trace) { my $req_text= $req->as_string; $req_text =~ s/^/ /mg; $log->trace("Digicert HTTP Request:\n$req_text"); } return; }); $ua->add_handler('response_done', sub ($res, $ua, $h, @) { if ($log->is_trace) { my $res_text= $res->as_string; $res_text =~ s/^/ /mg; $log->trace("Digicert HTTP Response:\n$res_text"); } return; }); push @{ $ua->requests_redirectable }, 'POST'; return $ua; }