Buzznet-API

 view release on metacpan or  search on metacpan

lib/Buzznet/API.pm  view on Meta::CPAN

require RPC::XML::Client;
require MIME::Base64;
use Buzznet::Entry;
use Buzznet::Comment;
use Buzznet::Profile;
use Buzznet::Gallery;


# Method constants
use constant NEWPOST 		=> "buzznet.newPost";
use constant EDITPOST 		=> "buzznet.editPost";
use constant REMOVEPOST 	=> "buzznet.removePost";
use constant GETENTRY 		=> "buzznet.getEntry";
use constant GETCOMMENTS 	=> "buzznet.getComments";
use constant ADDCOMMENT 	=> "buzznet.addComment";
use constant REMOVECOMMENT	=> "buzznet.removeComment";
use constant GETRECENTCOMMENTS 	=> "buzznet.getRecentComments";
use constant ADDBUZZWORDS 	=> "buzznet.addBuzzwords";
use constant REMOVEBUZZWORDS 	=> "buzznet.removeBuzzwords";
use constant UPDATEPROFILE	=> "buzznet.updateProfile";
use constant ADDFRIEND 		=> "buzznet.addFriend";
use constant REMOVEFRIEND 	=> "buzznet.removeFriend";
use constant ADDGALLERY 	=> "buzznet.addGallery";
use constant EDITGALLERY 	=> "buzznet.editGallery";
use constant REMOVEGALLERY 	=> "buzznet.removeGallery";
use constant ADDBOOKMARK 	=> "buzznet.addBookmark";
use constant REMOVEBOOKMARK 	=> "buzznet.removeBookmark";
use constant GETBOOKMARKS 	=> "buzznet.getBookmarks";
use constant GETMYFRIENDS 	=> "buzznet.getMyFriends";
use constant GETFRIENDS 	=> "buzznet.getFriends";
use constant GETFRIENDSRECENT 	=> "buzznet.getFriendsRecent";
use constant GETMOSTPOPULAR 	=> "buzznet.getMostPopular";
use constant GETTODAYSBIRTHDAYS => "buzznet.getTodaysBirthdays";
use constant GETONLINENOW 	=> "buzznet.getOnlineNow";
use constant GETRECENTPOSTS 	=> "buzznet.getRecentPosts";
use constant GETFEATUREDUSERS 	=> "buzznet.getFeaturedUsers";
use constant GETBUZZWORD 	=> "buzznet.getBuzzwords";
use constant BROWSEBUZZWORDS 	=> "buzznet.browseBuzzwords";
use constant GETGALLERY 	=> "buzznet.getGallery";
use constant GETSUBGALLERIES 	=> "buzznet.getSubGalleries";

sub new 
{
  my ($package,@refs) = @_;
  my $inst = {@refs};
  $inst->{"error"} = undef;
  return bless($inst,$package);
}

sub url
{
  my $self = shift;
  my $url = "http://www.buzznet.com/interface/xmlrpc/?key=" . $self->{"key"};
  return $url;
}

sub getXMLRPC
{
  my $self = shift;
  my $cli = RPC::XML::Client->new($self->url);
  $cli->credentials("Buzznet",$self->{"username"},$self->{"password"});
  my $request = $cli->request;
  return $cli;
}

sub sendRequest
{
  my $self = shift;

  my $request = RPC::XML::request->new(@_);

  my $client = $self->getXMLRPC;
  
  my $response = $client->send_request($request);

  if(ref($response))
  {
    if(!$response->value)
    {
      $self->{"error"} = "Error response from server";
    }
    return $response->value;
  }
  else
  {
    $self->{"error"} = $response;
 
    # error condition
    return 0;
  }
}

sub error
{
  my $self = shift;
  return $self->{"error"};
}

sub newPost 
{
  my $self = shift;
  my ($filename, $caption, $body, $category) = @_;
  
  my $encoded_file = "";

  eval
  {
    open(FILE,$filename) || die "Could not open $filename: $!\n";
    while(read(FILE,my $buf,60*57))
    {
      $encoded_file .= MIME::Base64::encode_base64($buf);
    }
    
  };

  if($@)
  {
    $self->{"error"} = $@;
    
    # error condition
    return 0;



( run in 1.192 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )