WWW-StreamSend

 view release on metacpan or  search on metacpan

lib/WWW/StreamSend.pm  view on Meta::CPAN

package WWW::StreamSend;

use 5.010001;
use strict;
use warnings;

use AutoLoader qw(AUTOLOAD);

use LWP::UserAgent;
use XML::Simple;
use Carp ();

use WWW::StreamSend::Audience;
use WWW::StreamSend::Subscriber;

our $VERSION = '0.03';

sub new {
    my ($class, $params) = @_;

    Carp::croak("Options to WWW::StreamSend should be hash reference")
        if ref($params) ne ref {};

    my $self = {
        login_id => $params->{login_id} || $params->{login},
        key => $params->{key},
        ua  => LWP::UserAgent->new,
        xs  => XML::Simple->new,
    };

    $self->{ua}->agent("Mozilla/5.0");

    bless $self => $class;
    return $self;
}

sub get_emails {
    my ($self) = @_;
    my $res = $self->_send_request('emails');

    return $res->{content};
}

sub get_subscribers {
    my ($self, $params) = @_;
    my $audience = $params->{audience};
    my $id = $params->{subscriber_id};

    # /audiences/1/people.xml
    my $res = $self->_send_request('audiences', $audience.'/people/'.$id);
    return $res->{content};
}

sub get_subscribers_count {
    my ($self, $params) = @_;

    my $type = $params->{type} || 'active'; # possible variations: 'inactive', 'unsubscribed', 'pending'
    my $xmldata = $self->get_field({field => 'audiences', id => $params->{id}});
    my $ref = $self->{xs}->XMLin($xmldata, ForceArray=>1);

    return $ref->{audience}->[0]->{$type.'-people-count'}->[0]->{content};
}

sub get_field {
    my ($self, $params) = @_;
    my $accepted_fields = {
        emails => 'emails',
        users => 'users',
        audiences => 'audiences',
    };
    my $res = (ref $params eq ref {}) ?
        $self->_send_request($accepted_fields->{$params->{field}}, $params->{id}) :
        $self->_send_request($accepted_fields->{$params});
    return $res->{content};
}

sub get_people {
    my ($self, $params) = @_;
}

sub get_audience {
    my ($self, $params) = @_;
    my $res = (exists $params->{id}) ?
        $self->_send_request('audiences', $params->{id}) :
        $self->_send_request('audiences');

    if ($res->{code} == '200') {
        my $xml = $res->{content};
        my $data = XMLin($xml, ForceArray=>1);

        if ($data->{type} || $data->{type} eq 'array') {
            my @ret = ();
            foreach my $item (@{$data->{audience}}) {

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.777 second using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )