On Mon, Sep 17, 2018 at 9:22 PM Steve Dondley <[email protected]> wrote:
> I'm trying to hack a perl module that uses mojolicious to make api calls > to google's api so that it can make batch api call as documented here: > https://developers.google.com/gmail/api/guides/batch > > I've made various attempts but no calls are resulting in a successful > response. Here's what I'm currently trying. > > my $options = > [ > { > content => 'GET /gmail/v1/users/ > [email protected]/messages/165e91c27e4af0be', > 'Content-Type' => 'application/http', > }, > { > content => 'GET /gmail/v1/users/ > [email protected]/messages/165e94ce49900df2', > 'Content-Type' => 'application/http', > } > ]; > > > I don't see $options being used in your sample code. Also it seems weird. Admittedly, I haven't read (or even looked at) the api guide you referenced. I personally have never seen content type application/http -- perhaps I live under a rock. > my $path = 'https://www.googleapis.com/batch/' . $s->api . '/' . $s > ->version; > > > my $headers = {'Authorization' => 'Bearer TOKEN_HERE'}; > > > > > $tx = $self->ua->build_tx( > uc $http_method => $path => $headers => json => > $optional_data ); > > What is $http_method and what is $optional_data? These are used but undefined, in your sample. This results in a tranaction object that looks like this: > It may not be what you want, but the object looks assembled correctly to me. Can you point out anything in particular that doesn't look the way you think it should? Fishiest looking thing I see is the content body (req -> content -> asset -> content). I assume your intentionally removed your bearer token for this extract. > $VAR1 = bless( { > 'req' => bless( { > 'content' => bless( { > 'headers' => > bless( { > > 'headers' => { > > 'content-type' => [ > > 'application/json' > > ], > > 'authorization' => [ > > 'Bearer TOKEN_HERE' > > ], > > 'accept-encoding' => [ > > 'gzip' > > ], > > 'user-agent' => [ > > 'Mojolicious (Perl)' > > ] > > } > > }, 'Mojo::Headers' ), > 'events' => { > > 'read' => [ > > sub { "DUMMY" } > > ] > }, > 'read' => $VAR1 > ->{'req'}{'content'}{'events'}{'read'}[0], > 'asset' => bless( > { > > 'content' => '[{"Content-Type":"application\\/http","content":"GET > \\/gmail\\/v1\\/u > sers\\/[email protected]\\/messages\\/165e91c27e4af0be"},{"Content-Type":"application\\/http","content":"GET > \\/gmail\\/v1\\/users\\/[email protected]\\/messag > es\\/165e94ce49900df2"}]' > > }, 'Mojo::Asset::Memory' ) > }, > 'Mojo::Content::Single' ), > 'url' => bless( { > 'scheme' => 'https', > 'host' => ' > www.googleapis.com', > 'path' => bless( { > > 'path' => '/batch/gmail/v1' > }, > 'Mojo::Path' ) > }, 'Mojo::URL' ), > 'method' => 'POST' > }, 'Mojo::Message::Request' ) > }, 'Mojo::Transaction::HTTP' ); > > > > Trying anything other than json for the generator results in an error: > Use of uninitialized value $cb in method lookup > Is that because $optional_data isn't defined? > Fiddling with the content type settings doesn't help make this go away. > content-type in $headers, or in $options? The json generator is correctly generating the correct application/json content type -- I assume (hope) you are wanting json? What's with the funny business of the content type in $options? It seems that would be a google api -specific thing, which I can't comment on (didn't open the api spec). I don't expect to be of any direct help, but hopefully I got you thinking. -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/mojolicious. For more options, visit https://groups.google.com/d/optout.
