JIRA-REST-OAuth
view release on metacpan or search on metacpan
# SYNOPSIS
Module is a sub-class of JIRA::REST, to provide OAuth support, no functionality
differences between the two.
use JIRA::REST::OAuth;
my $jira = JIRA::REST::OAuth->new(
{
url => 'https://jira.example.net',
rsa_private_key => '/path/to/private/key.pem',
oauth_token => '<oauth_token>',
oauth_token_secret => '<oauth_token_secrete>',
consumer_key => '<key>',
}
);
...
# EXPORT
None
lib/JIRA/REST/OAuth.pm view on Meta::CPAN
my %args;
if (@_ == 1 && ref $_[0] && ref $_[0] eq 'HASH') {
%args = %{ $_[0] };
}
else {
%args = @_;
}
# remove arguments for this subclass
my @opts = qw( rsa_private_key oauth_token oauth_token_secret consumer_key );
my %a;
foreach my $opt (@opts) {
croak __PACKAGE__.'::new requires argument '.$opt unless defined $args{$opt};
$a{$opt} = delete $args{$opt};
}
# some sane defaults JIRA::REST
$args{anonymous} = 1 unless exists $args{anonymous};
my $url = $args{url} if exists $args{url};
my $self = $class->SUPER::new(\%args);
$$self{url} = $url;
# handle our options
if (-e $a{rsa_private_key}) {
open(my $fh, '<', $a{rsa_private_key}) or die "Unable to read $a{rsa_private_key}! $!";
local $/ = undef;
my $data = <$fh>;
close($fh);
$a{rsa_private_key} = Crypt::OpenSSL::RSA->new_private_key($data);
}
else {
$a{rsa_private_key} = Crypt::OpenSSL::RSA->new_private_key($a{rsa_private_key});
}
foreach my $opt (@opts) {
$$self{$opt} = delete $a{$opt};
}
return $self;
}
sub _generate_oauth_request
lib/JIRA/REST/OAuth.pm view on Meta::CPAN
$url =~ s/\/$//;
$url .= $path;
my %oauth_params = (
request_url => $url,
request_method => $method,
consumer_key => $$self{consumer_key},
consumer_secret => 'ignore',
signature_method => 'RSA-SHA1',
protocol_version => Net::OAuth::PROTOCOL_VERSION_1_0,
signature_key => $$self{rsa_private_key},
token => $$self{oauth_token},
token_secret => $$self{oauth_token_secret},
timestamp => time,
nonce => int(rand(2**32)),
);
if (defined $query) {
$oauth_params{extra_params} = $query;
}
my $request = Net::OAuth::ProtectedResourceRequest->new(%oauth_params);
lib/JIRA/REST/OAuth.pm view on Meta::CPAN
=head1 SYNOPSIS
Module is a sub-class of JIRA::REST, to provide OAuth support, no functionality
differences between the two.
use JIRA::REST::OAuth;
my $jira = JIRA::REST::OAuth->new(
{
url => 'https://jira.example.net',
rsa_private_key => '/path/to/private/key.pem',
oauth_token => '<oauth_token>',
oauth_token_secret => '<oauth_token_secrete>',
consumer_key => '<key>',
}
);
...
=head1 EXPORT
None
( run in 0.247 second using v1.01-cache-2.11-cpan-4d50c553e7e )