Skip to content

Instantly share code, notes, and snippets.

@benvanstaveren
Created February 18, 2013 22:58
Show Gist options
  • Save benvanstaveren/4981539 to your computer and use it in GitHub Desktop.
Save benvanstaveren/4981539 to your computer and use it in GitHub Desktop.
# somewhere the app has a 'mango' attribute that was set up like this:
# $app->attr(mango => sub { Mango->new('localhost') });
sub some_action {
my $self = shift;
$self->render_later;
$self->mango->db('mydb')->collection('baz')->find_one({ _id => $self->req->param('id') } => sub {
my ($coll, $err, $doc) = (@_);
if($err) {
$self->render(json => { error => $err });
} elsif($doc) {
$self->render(json => $doc);
} else {
$self->ua->get('http://myfallbackapi.com/?id=' . $self->req->param('id') => sub {
my ($ua, $tx) = (@_);
if(my $res = $tx->success) {
# pretend we got some odd data that got munged into $res_data here
$self->mango->db('mydb')->collection('baz')->insert($res_data => sub {
$self->render(json => $res_data);
});
} else {
$self->render(json => { error => 'oops...' });
}
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment