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; |