Google-Voice

 view release on metacpan or  search on metacpan

lib/Google/Voice.pm  view on Meta::CPAN

package Google::Voice;

use strict;
use warnings;

use Mojo::UserAgent;
use Mojo::JSON;
use IO::Socket::SSL 1.37;

use Google::Voice::Feed;
use Google::Voice::Call;

use Mojo::Base -base;

our $VERSION = 0.06;

__PACKAGE__->attr([qw/ ua rnr_se /]);

sub new {
    my $self = bless {}, shift;

    $self->ua(Mojo::UserAgent->new);

    return $self;
}

sub login {
    my $self = shift;
    my ($user, $pass) = @_;
    my $c = $self->ua;

    $c->max_redirects(6);    # Google seems to like redirects everywhere

    # GALX value
    my $el =
      $c->get('https://accounts.google.com/ServiceLogin')
      ->res->dom->at('input[name="GALX"]');

    my $galx = $el->attrs->{value} if $el;

    $c->post(
        'https://accounts.google.com/ServiceLogin',
        form => {   Email  => $user,
            Passwd => $pass,
            GALX   => $galx,
        }
    );

    # rnr_se required for subsequent requests
    $el =
      $c->get('https://www.google.com/voice#inbox')
      ->res->dom->at('input[name="_rnr_se"]');

    # Login not accepted
    return unless $el;

    $self->rnr_se($el->attrs->{value});

    return $self;
}

sub send_sms {
    my $self = shift;
    my $c    = $self->ua;
    my ($phone, $content) = @_;

    my $json = $c->post(
        'https://www.google.com/voice/b/0/sms/send',



( run in 1.007 second using v1.01-cache-2.11-cpan-39bf76dae61 )