Net::Google::Calendar::FeedLink - represents a link to a feed


Net-Google-Calendar documentation Contained in the Net-Google-Calendar distribution.

Index


Code Index:

NAME

Top

Net::Google::Calendar::FeedLink - represents a link to a feed

SYNOPSIS

Top

    my @feeds = $comments->feeds;

    foreach my $feed (@feeds) {
        print "There are ".$feed->count_hint." comments in this feed\n";
        print "Is this feed read only? ".$feed->read_only."\n";
        print "This feed ".(($feed->href)? "is" : "isn't" )." remote\n";
        print "This feed is of type ".$feed->rel."\n";

        my $atom = $cal->get_feed($feed->feed); # $obj is an XML::Atom::Feed
        foreach my $comment ($atom->entries) {
            print "\t".$comment->title."\n";
        }
    }

METHODS

Top

new

Create a new FeedLink

count_hint

Hints at the number of entries in the feed. Depending on the implementation, may not be a precise count.

element_name

Return our Element name

read_only [boolean]

Specifies whether the contained feed is read-only.

rel [rel]

Specifies the link relation; allows the service to provide multiple types of feed links for a single entity. Has the same semantics and allowed values as the rel attribute of the <atom:link> element.

href [url]

Specifies the feed URI. If the nested feed is embedded and not linked, this attribute may be omitted.

feed [feed]

Get the Atom feed.

Returns a URI object if the feed is remote or a scalar containing an XML::Atom::Feed object


Net-Google-Calendar documentation Contained in the Net-Google-Calendar distribution.
package Net::Google::Calendar::FeedLink;

use strict;
use XML::Atom::Feed;
use XML::Atom::Link;
use base qw(XML::Atom::Link Net::Google::Calendar::Base);
use LWP::Simple qw(get);

sub new {
    my $class = shift;
    return $class->SUPER::new(@_);
}

sub count_hint {
    my $self = shift;
    return $self->_do('@countHint', @_);
}

sub element_name {
    return 'gd:feedLink';
}

sub read_only {
    my $self = shift;
    if (@_) {
        my $val = @_;
        push @_, ($val)? 'true' : 'false';
    }
    return _convert_bool($self->_do('@readOnly', @_));
}

sub _convert_bool {
    my $val = shift;
    return ''   if !defined $val;
    return $val if ($val =~ m!^(\d+)$! && ($val==0 or $val==1));
    return 0    if $val eq 'false';
    return 1    if $val eq 'true';
    #die "Illegal boolean value $val";
	return ($val)? 1 : 0;
}

sub rel {
    my $self = shift;
    return $self->_do('@rel', @_);
}


sub href {
    my $self = shift;
    return URI->new($self->_do('@href'));
}


sub _do {
    my $self = shift;
    my $name  = shift;
    my $attr  = ($name =~ s!^@!!);
    my $gd_ns = ''; # $self->{_gd_ns};
    if (@_) {
        my $new = shift;
        if ($attr) {
            $self->set_attr($name, $new);
        } else {
            $self->set($gd_ns, "${name}", '', { value => "${new}" });
        }
    }
    my $val;
    if ($attr) {
        $val = $self->get_attr($name);
    } else { 
        $val = $self->_my_get($gd_ns, "${name}");
    }
    return $val;
}

sub feed {
    my $self = shift;
    my $ns   = ""; # "http://purl.org/atom/ns#";
    if (@_) {
        my $feed = shift;
        XML::Atom::Base::set($self, $ns, 'feed', $feed, {});
        #$self->add($ns, 'feed', $feed, {});
    }
    my $href = $self->href;
    if (defined $href) {
        return URI->new($href);
    } else {
        my $feed = $self->_do('feed') || return;
        my $tmp = XML::Atom::Feed->new( Elem => $feed );
        $tmp->{ns} = $ns;
        return $tmp;
    }
}
1;