<div dir="ltr"><div><div>Every request from the web server generates a call to the application code reference that is built by "dance". Variables do not persist between requests, nor should they.<br><br></div>You could solve it by keeping the variable in a cache. You could use Memcached, KiokuDB, or the likes. Another way would be to simply login every time you make a request. This is what's done in scopes in KiokuDB.<br>

<br></div>Another way to solve it, uglier IMHO, is using singletons. But that's just having global scope for stuff, which you should generally avoid.<br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">

On Thu, Dec 5, 2013 at 6:24 PM, Pierre M <span dir="ltr"><<a href="mailto:piemas25@gmail.com" target="_blank">piemas25@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div><div><div>Hi, I'm making a bot. I'm trying to integrate it into a Dancer2 app, in order to make a REST API for it, and later be able to interact with it from the browser. <br><br>It logs in to an external webservice, like this:<br>




</div>    $bot->login($username, $password);<br>This stores some credentilals in the bot, which uses them for other requests.<br>And then it does some other stuff:<br></div>    $->do_stuff;<br></div><div>The bot exists and can make these very basic operations from a script.<br>




<br></div><div>To create the REST API with Dancer2, I made something in those lines:<br></div><div>    my $bot = MyBot->new;<br></div><div>    post '/login.json' => sub {<br>        my ($username, $password) = (params->{username}, params->{password});<br>




<br>        $bot->login($username, $password);    # Store credentials in the bot<br>    };<br></div><div>This works perfectly. <br><br>And then<br></div><div>    post '/do_stuff.json' => sub {<br></div><div>




        $bot->do_stuff;<br>    }<br></div><div>This doesn't work: when I call '/login.json', followed by '/do_stuff.json',  the second request fails because the credentials are not present:  it seems to not be interacting with the same $bot object than the login request.<br>




<br>It works if add<br></div><div>    $bot->login( ... )<br></div><div>at the beginning of the '/do_stuff.json' subroutine, but I don't want to login at each new request.<br><br></div><div>What is a clean solution for this use case?<br>



<br></div><div>* 30 minutes later *<br>I have found <a href="https://metacpan.org/pod/Dancer2::Plugin::Adapter" target="_blank">Dancer2::Plugin::Adapter</a> and the "singleton" scope, which seems to be what I need. But it won't install. I will send a RT ticket. <br>



</div><div>Any idea for an alternative solution?<br></div><div><br></div></div>
<br>_______________________________________________<br>
dancer-users mailing list<br>
<a href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br>
<a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br>
<br></blockquote></div><br></div>