| | 19 | } |
| | 20 | |
| | 21 | sub login { |
| | 22 | my $client = shift; |
| | 23 | return $client->{auth_token} if $client->{auth_token}; |
| | 24 | my $r = $client->{ua}->post($GOOGLE_AUTH_URL, { |
| | 25 | Email => $client->username, |
| | 26 | Passwd => $client->password, |
| | 27 | source => __PACKAGE__ . '-' . $VERSION, |
| | 28 | service => $client->service, |
| | 29 | }); |
| | 30 | return $client->error("Error on GData ClientLogin: " . $r->status_line) |
| | 31 | unless $r->code == 200; |
| | 32 | my($token) = $r->content =~ m/Auth=(.+)/; |
| | 33 | $client->{auth_token} = $token; |
| | 34 | } |
| | 35 | |
| | 36 | sub make_request { |
| | 37 | my $client = shift; |
| | 38 | my($req) = @_; |
| | 39 | $client->login or return; # do Google ClientLogin |
| | 40 | $client->munge_request($req); |
| | 41 | my $res = $client->{ua}->request($req); |
| | 42 | $client->munge_response($res); |
| | 43 | $client->{response} = $res; |
| | 44 | $res; |
| 21 | | unless ($client->{gdata_auth_token}) { |
| 22 | | my $r = $client->{ua}->post($GOOGLE_AUTH_URL, { |
| 23 | | Email => $client->username, |
| 24 | | Passwd => $client->password, |
| 25 | | source => __PACKAGE__ . '-' . $VERSION, |
| 26 | | service => $client->service, |
| 27 | | }); |
| 28 | | return $client->error("Error on GData ClientLogin: " . $r->status_line) |
| 29 | | unless $r->code == 200; |
| 30 | | my($token) = $r->content =~ m/Auth=(.+)/; |
| 31 | | $client->{gdata_auth_token} = $token; |
| 32 | | } |
| 33 | | $req->header('Authorization', 'GoogleLogin auth=' . $client->{gdata_auth_token}); |
| | 50 | $req->header('Authorization', 'GoogleLogin auth=' . $client->{auth_token}); |