Changeset fa4c773
- Timestamp:
- Oct 16, 2017, 1:32:29 PM (7 years ago)
- Children:
- 5afbccf
- Parents:
- cb463cd
- git-author:
- Adam Glasgall <glasgall@mit.edu> (06/11/14 10:24:09)
- git-committer:
- Adam Glasgall <glasgall@mit.edu> (10/16/17 13:32:29)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
perl/modules/Zulip/lib/BarnOwl/Module/Zulip.pm
rcb463cd rfa4c773 8 8 our $last_event_id; 9 9 our %cfg; 10 our $max_retries = 5; 10 our $max_retries = 1000; 11 our $retry_timer; 11 12 12 13 use AnyEvent; … … 115 116 } 116 117 118 sub parse_response { 119 my ($body, $headers) = @_; 120 if($headers->{Status} > 399) { 121 return 0; 122 } 123 my $response = decode_json($body); 124 if($response->{result} ne "success") { 125 return 0; 126 } 127 return $response; 128 } 117 129 sub do_poll { 118 130 my $uri = URI->new($cfg{'api_url'} . "/events"); … … 123 135 $callback = sub { 124 136 my ($body, $headers) = @_; 125 if($headers->{Status} > 399) {126 warn "Failed to poll for events: $headers->{Reason}";127 BarnOwl::debug($body);137 my $response = parse_response($body, $headers); 138 if(!$response) { 139 warn "Failed to poll for events in do_poll: $headers->{Reason}"; 128 140 if($retry_count >= $max_retries) { 141 warn "Retry count exceeded in do_poll, giving up"; 129 142 fail("do_poll: Giving up"); 130 143 } else { 144 warn "Retrying"; 131 145 $retry_count++; 132 http_get($uri->as_string, 133 "headers" => { "Authorization" => authorization }, 134 $callback); 146 $retry_timer = AnyEvent->timer(after => 10, cb => sub { warn "retry number $retry_count"; 147 http_get($uri->as_string, 148 "headers" => { "Authorization" => authorization }, 149 $callback); 150 return; 151 }); 135 152 return; 136 153 } 137 154 } else { 138 event_cb($ body, $headers);155 event_cb($response); 139 156 } 140 157 }; … … 144 161 145 162 sub event_cb { 146 my ($body, $headers) = @_; 147 my $response = decode_json($body); 163 my $response = $_[0]; 148 164 if($response->{result} ne "success") { 149 fail(" Failed to poll for events; error was $response->{msg}");165 fail("event_cb: Failed to poll for events; error was $response->{msg}"); 150 166 } else { 151 167 for my $event (@{$response->{events}}) { … … 165 181 zid => $msg->{id}, 166 182 sender_full_name => $msg->{sender_full_name}); 183 $msghash{'body'} =~ s/\r//gm; 167 184 if($msg->{type} eq "private") { 168 185 $msghash{private} = 1;
Note: See TracChangeset
for help on using the changeset viewer.