package RVVote::Chobotnice; use strict; use warnings; use utf8; use GraphQL::Client; use YAML; our $VERSION = '0.01'; sub new { my $classname = shift; my $url = shift; my $self = {}; $self->{client} = GraphQL::Client->new(url => $url); bless ($self, $classname); return $self; } sub client { my $self = shift; return $self->{client}; } sub get_group_members { my $self = shift; my $group_id = shift; my $query = qq[ query MyQuery { group(id: "$group_id") { memberships { person { username displayName officialLastName } } } } ]; my $res = $self->client->execute($query); return undef if $res->{errors}; return undef if ! $res->{data}; my @members = (); MEMBER: foreach my $member ( @{ $res->{data}{group}{memberships} } ) { push @members, { fullname => $member->{person}{displayName}, user_id => lc($member->{person}{username}), lastname => $member->{person}{officialLastName}, }; } return sort { $a->{lastname} cmp $b->{lastname} } @members; } 1;