Group
Extension

Weixin-Client/lib/Weixin/Client/Private/_get_chatroom.pm

package Weixin::Client;
use strict;
sub _get_chatroom{
    my $self  = shift;
    my @chatroom_id = @_;
    my $post = {
        BaseRequest =>  {
            Uin         =>  $self->wxuin,
            DeviceID    =>  $self->deviceid,
            Sid         =>  $self->wxsid,
            Skey        =>  $self->skey,
        },
        Count       =>  @chatroom_id+0,
        List        =>  [map { {UserName=>$_,ChatRoomId=>""} } @chatroom_id ],
    };

    my $api = "https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact";
    my @query_string = (
        type        =>  "ex",
        pass_ticket =>  $self->pass_ticket,
        r           =>  $self->now(),
        skey        =>  uri_escape($self->skey),
        pass_ticket =>  $self->pass_ticket,
    );
    my $json = $self->http_post(gen_url($api,@query_string),("Content-Type"=>"application/json; charset=UTF-8"),Content=>$self->json_encode($post)); 
    return unless defined $json;
    my $d = $self->json_decode($json);
    return unless defined $d;
    return if $d->{BaseResponse}{Ret}!=0;
    my @member_key = qw(HeadImgUrl NickName PYInitial PYQuanPin Alias Province City Sex Id Uin Signature DisplayName RemarkName RemarkPYInitial RemarkPYQuanPin);
    my @chatroom_key = qw(ChatRoomUin MemberCount OwnerUin ChatRoomId ChatRoomName);
    my @chatroom;
    for my $each (@{$d->{ContactList}}){
        if($self->is_chatroom($each->{UserName})){#chatroom
            $each->{ChatRoomUin}  = $each->{Uin};delete $each->{Uin};
            $each->{ChatRoomId}  = $each->{UserName};delete $each->{UserName};
            $each->{ChatRoomName}  = $each->{NickName};delete $each->{NickName};
            my $chatroom = {};
            for(@chatroom_key){
                $chatroom->{$_} = encode_utf8($each->{$_}) if defined $each->{$_};
            }
            $chatroom->{Member} = [];
            for my $m (@{$each->{MemberList}}){
                $m->{Id} = $m->{UserName};delete $m->{UserName};
                my $member = {};
                for(@member_key){
                    $member->{$_} = encode_utf8($m->{$_}) if defined $m->{$_};
                }
                $member->{$_} = $chatroom->{$_} for(grep {$_ ne "Member"} keys %$chatroom);
                push @{$chatroom->{Member}},$member;
            }
            push @chatroom,$chatroom;
        }
    }
    return @chatroom;
}
1;


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.