Google-RestApi

 view release on metacpan or  search on metacpan

lib/Google/RestApi/GmailApi1/Draft.pm  view on Meta::CPAN

      subject      => Str,
      body         => Str,
      from         => Str, { optional => 1 },
      cc           => Str, { optional => 1 },
      bcc          => Str, { optional => 1 },
      content_type => Str, { default => 'text/plain' },
    ],
  );
  my $p = $check->(@_);

  my $raw = $self->gmail_api()->_build_mime(%$p);

  DEBUG("Creating draft");
  my $result = $self->gmail_api()->api(
    uri     => 'drafts',
    method  => 'post',
    content => { message => { raw => $raw } },
  );
  return ref($self)->new(gmail_api => $self->gmail_api(), id => $result->{id});
}

sub create_raw {
  my $self = shift;
  state $check = signature(
    bless => !!0,
    named => [
      raw => Str,
    ],
  );
  my $p = $check->(@_);

  DEBUG("Creating draft from raw message");
  my $result = $self->gmail_api()->api(
    uri     => 'drafts',
    method  => 'post',
    content => { message => { raw => $p->{raw} } },
  );
  return ref($self)->new(gmail_api => $self->gmail_api(), id => $result->{id});
}

sub get {
  my $self = shift;
  state $check = signature(
    bless => !!0,
    named => [
      format => Str, { optional => 1 },
      fields => Str, { optional => 1 },
    ],
  );
  my $p = $check->(@_);

  $self->require_id('get');

  my %params;
  $params{format} = $p->{format} if defined $p->{format};
  $params{fields} = $p->{fields} if defined $p->{fields};

  return $self->api(params => \%params);
}

sub update {
  my $self = shift;
  state $check = signature(
    bless => !!0,
    named => [
      to           => Str,
      subject      => Str,
      body         => Str,
      from         => Str, { optional => 1 },
      cc           => Str, { optional => 1 },
      bcc          => Str, { optional => 1 },
      content_type => Str, { default => 'text/plain' },
    ],
  );
  my $p = $check->(@_);

  $self->require_id('update');

  my $raw = $self->gmail_api()->_build_mime(%$p);

  DEBUG(sprintf("Updating draft '%s'", $self->{id}));
  return $self->api(
    method  => 'put',
    content => { message => { raw => $raw } },
  );
}

sub send {
  my $self = shift;

  $self->require_id('send');

  DEBUG(sprintf("Sending draft '%s'", $self->{id}));
  return $self->gmail_api()->api(
    uri     => 'drafts/send',
    method  => 'post',
    content => { id => $self->{id} },
  );
}

sub delete {
  my $self = shift;

  $self->require_id('delete');

  DEBUG(sprintf("Deleting draft '%s'", $self->{id}));
  return $self->api(method => 'delete');
}

sub draft_id { shift->{id}; }
sub gmail_api { shift->{gmail_api}; }

1;

__END__

=head1 NAME

Google::RestApi::GmailApi1::Draft - Draft object for Gmail.

=head1 SYNOPSIS



( run in 0.780 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )