From 357528ba856fd85aee5967e5d7d8f4426bc8d5b6 Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Fri, 1 Dec 2017 17:48:37 -0500 Subject: Bug 1422329 - The phabricator conduit API method feed.query_id return data format has changed so the phabbugz_feed.pl daemon needs to be updated --- extensions/PhabBugz/lib/Feed.pm | 26 +++++++------------------- extensions/PhabBugz/lib/Revision.pm | 4 ++++ extensions/PhabBugz/lib/Util.pm | 4 ++-- 3 files changed, 13 insertions(+), 21 deletions(-) (limited to 'extensions/PhabBugz') diff --git a/extensions/PhabBugz/lib/Feed.pm b/extensions/PhabBugz/lib/Feed.pm index d178f249b..b2b681bbd 100644 --- a/extensions/PhabBugz/lib/Feed.pm +++ b/extensions/PhabBugz/lib/Feed.pm @@ -76,7 +76,7 @@ sub feed_query { foreach my $story_data (@$transactions) { my $skip = 0; my $story_id = $story_data->{id}; - my $story_phid = $story_data->{storyPHID}; + my $story_phid = $story_data->{phid}; my $author_phid = $story_data->{authorPHID}; my $object_phid = $story_data->{objectPHID}; my $story_text = $story_data->{text}; @@ -296,25 +296,13 @@ sub feed_transactions { my $data = { view => 'text' }; $data->{after} = $after if $after; my $result = request('feed.query_id', $data); - - # Stupid Conduit. If the feed results are empty it returns - # an empty list ([]). If there is data it returns it in a - # hash ({}) so we have adjust to be consistent. - my $stories = ref $result->{result}{data} eq 'HASH' - ? $result->{result}{data} - : {}; - - # PHP array retain key order but Perl does not. So we will - # loop over the data and place the stories into a list instead - # of a hash. We will then sort the list by id. - my @story_list; - foreach my $story_phid (keys %$stories) { - my $story_data = $stories->{$story_phid}; - $story_data->{storyPHID} = $story_phid; - push(@story_list, $story_data); + unless (ref $result->{result}{data} eq 'ARRAY' + && @{ $result->{result}{data} }) + { + return []; } - - return [ sort { $a->{id} <=> $b->{id} } @story_list ]; + # Guarantee that the data is in ascending ID order + return [ sort { $a->{id} <=> $b->{id} } @{ $result->{result}{data} } ]; } 1; diff --git a/extensions/PhabBugz/lib/Revision.pm b/extensions/PhabBugz/lib/Revision.pm index 29d665009..f3a56a656 100644 --- a/extensions/PhabBugz/lib/Revision.pm +++ b/extensions/PhabBugz/lib/Revision.pm @@ -30,7 +30,11 @@ my $SearchResult = Dict[ authorPHID => Str, dateCreated => Int, dateModified => Int, + diffPHID => Str, policy => Dict[ view => Str, edit => Str ], + repositoryPHID => Maybe[Str], + status => HashRef, + summary => Str, "bugzilla.bug-id" => Int, ], attachments => Dict[ diff --git a/extensions/PhabBugz/lib/Util.pm b/extensions/PhabBugz/lib/Util.pm index a00e20551..1f2b21d55 100644 --- a/extensions/PhabBugz/lib/Util.pm +++ b/extensions/PhabBugz/lib/Util.pm @@ -327,7 +327,7 @@ sub get_members_by_bmo_id { my $result = get_phab_bmo_ids({ ids => [ map { $_->id } @$users ] }); my @phab_ids; - foreach my $user (@{ $result->{result} }) { + foreach my $user (@$result) { push(@phab_ids, $user->{phid}) if ($user->{phid} && $user->{phid} =~ /^PHID-USER/); } @@ -341,7 +341,7 @@ sub get_members_by_phid { my $result = get_phab_bmo_ids({ phids => $phids }); my @bmo_ids; - foreach my $user (@{ $result->{result} }) { + foreach my $user (@$result) { push(@bmo_ids, $user->{id}) if ($user->{phid} && $user->{phid} =~ /^PHID-USER/); } -- cgit v1.2.3-24-g4f1b