| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Weixin::Client; |
|
2
|
|
|
|
|
|
|
sub _synccheck{ |
|
3
|
0
|
|
|
0
|
|
|
my $self = shift; |
|
4
|
0
|
0
|
|
|
|
|
return if $self->{_sync_running} ; |
|
5
|
0
|
|
|
|
|
|
my $api = "https://webpush.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheck"; |
|
6
|
0
|
|
|
|
|
|
$self->{_synccheck_running} = 1; |
|
7
|
|
|
|
|
|
|
my $callback = sub { |
|
8
|
0
|
|
|
0
|
|
|
my $response = shift; |
|
9
|
0
|
|
|
|
|
|
$self->{_synccheck_running} = 0; |
|
10
|
0
|
0
|
|
|
|
|
unless($response->is_success){ |
|
11
|
0
|
|
|
|
|
|
$self->_synccheck() ; |
|
12
|
0
|
|
|
|
|
|
return ; |
|
13
|
|
|
|
|
|
|
} |
|
14
|
|
|
|
|
|
|
#window.synccheck={retcode:"0",selector:"0"} |
|
15
|
0
|
|
|
|
|
|
my($retcode,$selector) = $response->content()=~/window\.synccheck={retcode:"([^"]+)",selector:"([^"]+)"}/g; |
|
16
|
0
|
|
|
|
|
|
$self->_parse_synccheck_data($retcode,$selector); |
|
17
|
0
|
|
|
|
|
|
}; |
|
18
|
0
|
|
|
|
|
|
my @query_string = ( |
|
19
|
|
|
|
|
|
|
skey => $self->skey, |
|
20
|
|
|
|
|
|
|
callback => "jQuery1830847224326338619_" . $self->now(), |
|
21
|
|
|
|
|
|
|
r => $self->now(), |
|
22
|
|
|
|
|
|
|
sid => $self->wxsid, |
|
23
|
|
|
|
|
|
|
uin => $self->wxuin, |
|
24
|
|
|
|
|
|
|
deviceid => $self->deviceid, |
|
25
|
0
|
|
|
|
|
|
synckey => join("|",map {$_->{Key} . "_" . $_->{Val};} @{$self->sync_key->{List}}), |
|
|
0
|
|
|
|
|
|
|
|
26
|
|
|
|
|
|
|
_ => $self->now(), |
|
27
|
|
|
|
|
|
|
); |
|
28
|
0
|
|
|
|
|
|
my $url = gen_url2($api,@query_string); |
|
29
|
|
|
|
|
|
|
$self->timer2("_synccheck",$self->{_synccheck_interval},sub{ |
|
30
|
0
|
0
|
|
0
|
|
|
print "GET $url\n" if $self->{debug}; |
|
31
|
0
|
|
|
|
|
|
$self->asyn_http_get($url,$callback); |
|
32
|
0
|
|
|
|
|
|
}); |
|
33
|
|
|
|
|
|
|
} |
|
34
|
|
|
|
|
|
|
1; |