1
0
Fork 0
mirror of https://github.com/perlbot/perlbuut-pastebin synced 2025-06-07 14:17:26 -04:00

Switch to Mojo::Promise

This commit is contained in:
Ryan Voots 2019-12-13 21:54:28 -05:00
parent 818a621dce
commit d9a683e785
4 changed files with 28 additions and 25 deletions

View file

@ -4,6 +4,7 @@ use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::Promise;
sub routes {
my ($class, $r) = @_;
@ -28,12 +29,11 @@ sub api_get_paste {
my $row = $c->paste->get_paste($pasteid);
if ($row) {
$c->delay(sub {
my ($delay) = @_;
$c->eval->get_eval($pasteid, $row->{paste}, [$row->{language}], 0, $delay->begin(0, 1))
},
sub {
my ($delay, $evalres) = @_;
my $promise = Mojo::Promise->new(sub {
my ($resolve, $reject) = @_;
$c->eval->get_eval($pasteid, $row->{paste}, [$row->{language}], 0, $resolve)
})->then(sub {
my ($evalres) = @_;
my ($status, $output_hr) = $evalres->@{qw/status output/};
@ -52,6 +52,7 @@ sub api_get_paste {
$c->render(json => $data);
});
return $promise;
} else {
# 404
return $c->reply->not_found;

View file

@ -5,6 +5,7 @@ use warnings;
use Mojo::Base 'Mojolicious::Controller';
use Function::Parameters;
use Mojo::Promise;
sub routes {
my ($class, $r) = @_;
@ -48,12 +49,11 @@ sub api_get_paste {
my $row = $c->paste->get_paste($pasteid);
if ($row) {
$c->delay(sub {
my ($delay) = @_;
$c->eval->get_eval($pasteid, $row->{paste}, [$row->{language}], 0, $delay->begin(0, 1))
},
sub {
my ($delay, $evalres) = @_;
my $promise = Mojo::Promise->new(sub {
my ($resolve, $reject) = @_;
$c->eval->get_eval($pasteid, $row->{paste}, [$row->{language}], 0, $resolve)
})->then(sub {
my ($evalres) = @_;
my ($status, $output_hr) = $evalres->@{qw/status output/};
@ -69,6 +69,7 @@ sub api_get_paste {
$c->render(json => $data);
});
return $promise;
} else {
# 404
return $c->reply->not_found;

View file

@ -4,6 +4,7 @@ use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::Promise;
sub routes {
my ($class, $r) = @_;
@ -25,14 +26,11 @@ sub run_eval {
my $code = $data->param('code') // '';
my $language = $data->param('language') // 'perl';
$self->delay(sub {
my $delay = shift;
$self->eval->get_eval(undef, $code, [$language], 1, $delay->begin(0,1));
return 1;
},
sub {
my $delay = shift;
my $promise = Mojo::Promise->new(sub {
my ($resolve, $reject) = @_;
$self->eval->get_eval(undef, $code, [$language], 1, $resolve);
});
$promise->then(sub {
my ($evalres) = @_;
use Data::Dumper;

View file

@ -6,6 +6,7 @@ use warnings;
use App::Config;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::IOLoop;
use Mojo::Promise;
sub routes {
my ($class, $r) = @_;
@ -82,12 +83,12 @@ sub get_paste {
my $row = $c->paste->get_paste($pasteid);
if ($row) {
$c->delay(sub {
my $delay = shift;
my $promise = Mojo::Promise->new(sub {
my $resolve = shift;
$c->eval->get_eval($pasteid, $row->{paste}, [$row->{language}], 0, $delay->begin(0,1));
}, sub {
my ($delay, $evalres) = @_;
$c->eval->get_eval($pasteid, $row->{paste}, [$row->{language}], 0, $resolve);
})->then(sub {
my ($evalres) = @_;
my ($status, $evalout) = $evalres->@{qw/status output/};
$c->stash($row);
@ -101,6 +102,8 @@ sub get_paste {
$c->render('page');
});
return $promise
} else {
return $c->reply->not_found;
}