1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
package Bugzilla::Extension::Push::Connector::ReviewBoard::Client;
use 5.10.1;
use strict;
use warnings;
use Carp qw(croak);
use LWP::UserAgent;
use Scalar::Util qw(blessed);
use URI;
use Bugzilla::Extension::Push::Connector::ReviewBoard::ReviewRequest;
BEGIN {
unless (LWP::UserAgent->can('delete')) {
*LWP::UserAgent::delete = sub {
my ($self, @parameters) = @_;
require HTTP::Request::Common;
my @suff = $self->_process_colonic_headers(\@parameters, 1);
return $self->request(HTTP::Request::Common::DELETE(@parameters), @suff);
};
}
};
sub new {
my ($class, %params) = @_;
croak "->new() is a class method" if blessed($class);
return bless(\%params, $class);
}
sub username { $_[0]->{username} }
sub password { $_[0]->{password} }
sub base_uri { $_[0]->{base_uri} }
sub realm { $_[0]->{realm} // 'Web API' }
sub proxy { $_[0]->{proxy} }
sub _netloc {
my $self = shift;
my $uri = URI->new($self->base_uri);
return $uri->host . ':' . $uri->port;
}
sub useragent {
my $self = shift;
unless ($self->{useragent}) {
my $ua = LWP::UserAgent->new(agent => Bugzilla->params->{urlbase});
$ua->credentials(
$self->_netloc,
$self->realm,
$self->username,
$self->password,
);
$ua->proxy('https', $self->proxy) if $self->proxy;
$ua->timeout(10);
$self->{useragent} = $ua;
}
return $self->{useragent};
}
sub review_request {
my $self = shift;
return Bugzilla::Extension::Push::Connector::ReviewBoard::ReviewRequest->new(client => $self, @_);
}
1;
|