diff options
author | Dylan William Hardison <dylan@hardison.net> | 2018-08-17 19:20:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-17 19:20:02 +0200 |
commit | 72f78546d35342dcf556322cd702bc32e9ed2811 (patch) | |
tree | 5699104095d05d06ab237a0dd51feb092f989eeb /extensions/PhabBugz/lib/User.pm | |
parent | 4a154cbf7bb41e707c5950828ca1b2658d436609 (diff) | |
download | bugzilla-72f78546d35342dcf556322cd702bc32e9ed2811.tar.gz bugzilla-72f78546d35342dcf556322cd702bc32e9ed2811.tar.xz |
Bug 1482145 - add more type checking to phabbugz code
Diffstat (limited to 'extensions/PhabBugz/lib/User.pm')
-rw-r--r-- | extensions/PhabBugz/lib/User.pm | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/extensions/PhabBugz/lib/User.pm b/extensions/PhabBugz/lib/User.pm index da573be37..209425bdf 100644 --- a/extensions/PhabBugz/lib/User.pm +++ b/extensions/PhabBugz/lib/User.pm @@ -11,12 +11,13 @@ use 5.10.1; use Moo; use Bugzilla::User; - +use Bugzilla::Types qw(:types); use Bugzilla::Extension::PhabBugz::Util qw(request); use List::Util qw(first); use Types::Standard -all; use Type::Utils; +use Type::Params qw(compile); ######################### # Initialization # @@ -33,7 +34,9 @@ has 'roles' => ( is => 'ro', isa => ArrayRef [Str] ); has 'view_policy' => ( is => 'ro', isa => Str ); has 'edit_policy' => ( is => 'ro', isa => Str ); has 'bugzilla_id' => ( is => 'ro', isa => Maybe [Int] ); -has 'bugzilla_user' => ( is => 'lazy' ); +has 'bugzilla_user' => ( is => 'lazy', isa => Maybe [User] ); + +my $Invocant = class_type { class => __PACKAGE__ }; sub BUILDARGS { my ( $class, $params ) = @_; @@ -113,7 +116,8 @@ sub new_from_query { } sub match { - my ( $class, $params ) = @_; + state $check = compile( $Invocant | ClassName, Dict[ ids => ArrayRef[Int] ] | Dict[ phids => ArrayRef[Str] ] ); + my ( $class, $params ) = $check->(@_); # BMO id search takes precedence if bugzilla_ids is used. my $bugzilla_ids = delete $params->{ids}; @@ -158,7 +162,8 @@ sub _build_bugzilla_user { } sub get_phab_bugzilla_ids { - my ( $class, $params ) = @_; + state $check = compile($Invocant | ClassName, Dict[ids => ArrayRef[Int]]); + my ( $class, $params ) = $check->(@_); my $memcache = Bugzilla->memcached; |