diff options
Diffstat (limited to 'lib')
| -rwxr-xr-x | lib/Travelynx.pm | 18 | ||||
| -rw-r--r-- | lib/Travelynx/Controller/Account.pm | 15 | 
2 files changed, 28 insertions, 5 deletions
| diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 3284418..c4a2b53 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -1059,12 +1059,15 @@ sub startup {  	$self->helper(  		'run_hook' => sub { -			my ( $self, $uid, $reason ) = @_; +			my ( $self, $uid, $reason, $callback ) = @_;  			my $hook = $self->get_webhook($uid);  			if ( not $hook->{enabled} or not $hook->{url} =~ m{^ https?:// }x )  			{ +				if ($callback) { +					&$callback(); +				}  				return;  			} @@ -1080,7 +1083,12 @@ sub startup {  			}  			my $ua = $self->ua; -			$ua->request_timeout(10); +			if ($callback) { +				$ua->request_timeout(4); +			} +			else { +				$ua->request_timeout(10); +			}  			$ua->post_p( $hook->{url} => $header => json => $hook_body )->then(  				sub { @@ -1093,11 +1101,17 @@ sub startup {  						$self->mark_hook_status( $uid, $hook->{url}, 1,  							$tx->result->body );  					} +					if ($callback) { +						&$callback(); +					}  				}  			)->catch(  				sub {  					my ($err) = @_;  					$self->mark_hook_status( $uid, $hook->{url}, 0, $err ); +					if ($callback) { +						&$callback(); +					}  				}  			)->wait;  		} diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm index e272eb1..e2bfd39 100644 --- a/lib/Travelynx/Controller/Account.pm +++ b/lib/Travelynx/Controller/Account.pm @@ -246,9 +246,18 @@ sub webhook {  			token   => $hook->{token},  			enabled => $hook->{enabled}  		); -		$self->flash( success => 'webhook' ); -		$self->redirect_to('account'); -		$self->run_hook( $self->current_user->{id}, 'ping' ); +		$self->run_hook( +			$self->current_user->{id}, +			'ping', +			sub { +				$self->render( +					'webhooks', +					hook     => $self->get_webhook, +					new_hook => 1 +				); +			} +		); +		return;  	}  	else {  		$self->param( url     => $hook->{url} ); | 
