Hi Stefan, Thanks for the appreciation and the ideas.
I will surely do the following change in my code. changing to return *$tx->result->json*; from return from_json($tx->result->body); However, following change has been tricky to me. changing to *json* => { periods => *$c->session('cx_current_quarter')* }, from form => { periods => encode_json([ $c->session('cx_current_quarter') ]) }, I, per se, tried *json* => { periods => *$c->session('cx_current_quarter')* } at the outset. It did not work. The reason I found is the following: "json =>" works for the API call without "Authorization Header" my $tx = await $ua->post_p('http://' . $c->config->{API_IP} . '/api/token/refresh/' => json => { refresh => $refresh_token }); only "form =>" works for the API call with Authorization Header" $tx = await $ua->post_p( 'http://' . $c->config->{API_IP} . '/api-app/analytics/summary/', { Authorization => 'Bearer ' . $access_token }, *form *=> { periods => *$c->session('cx_current_quarter')* }, ); The difference between json and form in this context was intentional or accidental. More comments on this will be appreciated! Thanks. -- Jeyaraj On Saturday, 6 June 2020 02:55:04 UTC+5:30, Stefan Adams wrote: > > Great job pushing your application forward with Async/Await! Looking at > your snippet, here's one small change you can probably make using the json() > method from Mojo::Message > <https://mojolicious.org/perldoc/Mojo/Message#json>: > > $app->helper(summary_data => async sub ($c, $access_token) { > my $ua = Mojo::UserAgent->new; > > my $tx = await $ua->post_p( > 'http://' . $c->config->{API_IP} . > '/api-app/analytics/summary/', > { Authorization => 'Bearer ' . $access_token }, > *json* => { periods => *$c->session('cx_current_quarter')* }, > ); > if ($tx->result->is_success) { > return *$tx->result->json*; > } > $c->flash(message_type => 'warning'); > $c->flash(message => 'Could not get summary data'); > return $c->redirect_to('cx-summary', status => 403); > }); > > > > On Thu, Jun 4, 2020 at 2:31 AM Jeyaraj Durairaj <jeyaraj...@gmail.com > <javascript:>> wrote: > >> Hi, >> >> It works for *helpers* as well with the following declaration. >> >> $app->helper(summary_data => async sub ($c, $access_token) { >> my $ua = Mojo::UserAgent->new; >> >> my $tx = await $ua->post_p( >> 'http://' . $c->config->{API_IP} . >> '/api-app/analytics/summary/', >> { Authorization => 'Bearer ' . $access_token }, >> form => { periods => encode_json([ >> $c->session('cx_current_quarter') ]) }, >> ); >> if ($tx->result->is_success) { >> return from_json($tx->result->body); >> } >> $c->flash(message_type => 'warning'); >> $c->flash(message => 'Could not get summary data'); >> return $c->redirect_to('cx-summary', status => 403); >> }); >> >> >> >> >> -- Jeyaraj >> >> On Thursday, 4 June 2020 12:06:01 UTC+5:30, Jeyaraj Durairaj wrote: >>> >>> Hi, >>> >>> Eureka! Eureka! It works!. >>> >>> The solution I found (because of my error) is that I uninstalled >>> Mojo::AsyncAwait and installed Future::AsyncAwait. >>> It just works! >>> >>> By June end, my business intelligence application will be live to serve >>> 100+ users with insights and analytics. >>> >>> (To apply icing on the cake, I have plugged in Moose also in to model >>> layer for my application) >>> >>> As Glen Hinkle said, it is really really a fun to work in Mojolicious. I >>> love Hypnotoad. >>> >>> BTW, I am doing a private project as well to help a home designer to >>> launch a web site for their small firm. Guess! what framework I am gonna >>> use.. *Mojolicious.* >>> >>> Thanks to Mojo group and special thanks to SRI as well. >>> >>> -- Jeyaraj >>> >>> >>> >>> On Thursday, 28 May 2020 14:15:04 UTC+5:30, Jeyaraj Durairaj wrote: >>>> >>>> any luck on the solutions? >>>> >>>> -- Jeyaraj >>>> >>>> On Thursday, 28 May 2020 00:10:48 UTC+5:30, Jeyaraj Durairaj wrote: >>>>> >>>>> However, the below code perfectly work for me outside Mojolicious App. >>>>> >>>>> >>>>> use Modern::Perl; >>>>> use Mojo::Base -strict, -signatures; >>>>> use Mojo::UserAgent; >>>>> use Mojo::Promise; >>>>> use Mojo::IOLoop; >>>>> use Mojo::Util 'trim'; >>>>> use Mojo::AsyncAwait; >>>>> use LWP::UserAgent; >>>>> use JSON; >>>>> >>>>> >>>>> my $ua = Mojo::UserAgent->new; >>>>> my $result = $ua->post('http://localhost:8000/api/token/' => json => >>>>> { username => 'username', password => 'mypassword' }) >>>>> ->result >>>>> ->json; >>>>> my $access_token = $result->{access}; >>>>> my $refresh_token = $result->{refresh}; >>>>> print "Access Token: " . $result->{access}, "\n"; >>>>> print "Refresh Token: " . $result->{refresh}, "\n\n"; >>>>> >>>>> >>>>> $ua = Mojo::UserAgent->new; >>>>> $result = $ua->post('http://' . 'localhost:8000' . >>>>> '/api/token/refresh/' => json => { refresh => $refresh_token }) >>>>> ->result >>>>> ->json; >>>>> >>>>> >>>>> my $agent = Mojo::UserAgent->new; >>>>> async post_user_p => sub ($url) { >>>>> say "\n\n", $url; >>>>> my $tx = await $agent->post_p( >>>>> $url, >>>>> { >>>>> Authorization => 'Bearer ' . $result->{access}, >>>>> }, >>>>> form => {"username" => "username"}, >>>>> >>>>> ); >>>>> return trim from_json($tx->result->body)->{first_name}; >>>>> }; >>>>> >>>>> async main => sub (@urls) { >>>>> my @promises = map { post_user_p($_) } @urls; >>>>> my @names = await Mojo::Promise->all(@promises); >>>>> say for map { $_->[0] } @names; >>>>> }; >>>>> >>>>> my @urls = (qw( >>>>> http://localhost:8000/api-converge/auth/user/ >>>>> )); >>>>> >>>>> main(@urls)->wait; >>>>> >>>>> >>>>> >>>>> >>>>> On Wednesday, 27 May 2020 23:41:27 UTC+5:30, Jeyaraj Durairaj wrote: >>>>>> >>>>>> I tried generating an example app and copied pasted the code segment >>>>>> you posted here and then tried. >>>>>> >>>>>> "Action not found!" error is shown. >>>>>> >>>>>> Should I reinstall Perl again and then try? >>>>>> Will it work under morbo or works only on Hypnotoad? >>>>>> I am using Windows for my development, wherein morbo is the only >>>>>> server I can test. >>>>>> Or can I test it on daemon mode and try> >>>>>> Please suggest as to how I should diagnose it. >>>>>> I would need this Async/await to be working in my system. >>>>>> I have tried without Async, all other functionalities rock both in >>>>>> development and production (hypnotoad). Mojo::UserAgent is amazing to >>>>>> fetch >>>>>> API call data from Django server (running under Apache). >>>>>> >>>>>> I am completely counting on Mojolicious as my primary framework for >>>>>> my new projects. Please help. >>>>>> >>>>>> >>>>>> Regards/Jeyaraj >>>>>> >>>>>> On Wednesday, 27 May 2020 17:46:49 UTC+5:30, Sebastian Riedel wrote: >>>>>>> >>>>>>> I'll assume it was you who asked the same question on IRC earlier. >>>>>>> Had you been sticking around for a bit longer you would have seen my >>>>>>> instructions for getting a working application that i tested locally. >>>>>>> >>>>>>> 14:08 <kraih> to be sure i did a "mojo generate app" and then >>>>>>> replaced the controller with http://paste.scsys.co.uk/589044 >>>>>>> >>>>>>> That's the important part, if that doesn't work your Perl or some >>>>>>> module you installed is broken. >>>>>>> >>>>>>> -- >>>>>>> sebastian >>>>>>> >>>>>> -- >> You received this message because you are subscribed to the Google Groups >> "Mojolicious" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to mojol...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/mojolicious/debdea2d-2f67-4feb-814d-9d936d1b6732%40googlegroups.com >> >> <https://groups.google.com/d/msgid/mojolicious/debdea2d-2f67-4feb-814d-9d936d1b6732%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/mojolicious/ae2e9c20-e50a-4b67-a7a2-b103d7d8b728o%40googlegroups.com.