NAME

WWW::Myspace::Data - WWW::Myspace database interaction

VERSION

Version 0.02

SYNOPSIS

This module is the database interface for the WWW::Myspace modules. It imports methods into the caller's namespace which allow the caller to bypass the loader object by calling the methods directly. This module is intended to be used as a back end for the Myspace modules, but it can also be called directly from a script if you need direct database access.

CONSTRUCTOR AND STARTUP

new()

new() creates a WWW::Myspace::Data object, based on parameters which are passed to it. You can (optionally) pass a valid WWW::Myspace object to new as the first argument. If you just want database access, there is no need to pass the myspace object. However, most update methods require a valid login, so it's not a bad idea to pass it if you don't mind the login overhead.

my %db = (
    dsn      => 'dbi:mysql:database_name',
    user     => 'username',
    password => 'password',
);

my $data = WWW::Myspace::Data->new( $myspace, { db => \%db } );
 

Required Parameters

All parameters must be passed in the form of a hash reference.

  • db => HASHREF

    The db HASHREF can made up of the following 3 parameters:

    Required Parameters

    • dsn => $value

      The dsn is passed directly to Class::DBI::Loader, so whatever qualifies as a valid dsn for Class::DBI is valid here.

      # for a MySQL database
      'dbi:mysql:database_name'
      
      # Or
      # if you are using SQLite
      'dbi:SQLite:dbname=/path/to/dbfile'    

    Optional Parameters

    • user => $value

      This is your database username. If you're running the script from the command line, it will default to the user you are logged in as.

    • password => $value

      Your database password (if any). If you don't need a password to access your database, just leave this blank.

    Optional Parameters

  • config_file => $value

    If you prefer to keep your startup parameters in a file, pass a valid filename to new.

    Your startup file may contain any of the parameters that can be passed to new() (except the $myspace object). Your config file will be used to set the default parameters for startup. Any other parameters which you also pass to new() will override the corresponding values in the config file. So, if you have a default setting for exclude_my_friends in your config file but also pass exclude_my_friends directly to new(), the config file value will be overriden. The default behaviour is not to look for a config file. Default file format is YAML.

    my $adder = WWW::Myspace::FriendAdder->( 
        $myspace, 
        { config_file => '/path/to/adder_config.cfg', }, 
    );
  • config_file_format => [YAML|CFG]

    If you have chosen to use a configuration file, you may state explicitly which format you are using. You may choose between YAML and Config::General. If you choose not to pass this parameter, it will default to YAML.

loader( )

Returns the Class::DBI::Loader object. Handy if you want to access the database directly. If a loader object does not already exists, loader() will try to create one.

my $loader = $data->loader();

# get a list of all your friends
my @friend_objects = WWW::Myspace::Data::Friends->retrieve_all;

add_account ( $account, $password )

Store your account login information in the accounts table. The method attempts to log in to Myspace first. If successful, your login information will be stored. If your account already exists in the accounts table, your password will be updated to the password supplied to the method. If successful, it returns the id of the account. That is, the id which has been assigned to this account in the accounts table. Returns 0 if there was a problem creating or updating the account.

update_friend( $myspace, $friend_id )

The "friends" table in your local database stores information about myspace friends, shared among all accounts using your database. This lets you store additional information about them, such as their first name, and is also used by WWW::Myspace methods and modules to track information related to friends.

update_friend takes a single friend id and makes sure it is represented in the local "friends" table.

my $data = new WWW::Myspace::Data( \%config );

$data->update_friend( $myspace, $friend_id );

update_all_friends( $myspace )

update_all_friends is really just a wrapper around update_friend This method fetches a complete list of your friends currently listed at MySpace and makes sure that all myspace users that are friends of your account are represented in the local "friends" table. It does not delete friends which may have been removed from your MySpace account since your last update.

_loader( )

This is a private method, which creates a Class::DBI::Loader object, based on configuration parameters passed to new() To access the loader object directly, use loader()

_die_pretty( )

Internal method that deletes the Myspace object from $self and then prints $self via Data::Dumper. The Myspace object is so big, that when you get it out of the way it can be easier to debug set parameters.

$adder->_die_pretty;

AUTHOR

Olaf Alders, <olaf at wundersolutions.com>

BUGS

Please report any bugs or feature requests to bug-www-myspace at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WWW-Myspace. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

NOTES

This module is still in its infancy. It does a lot of cool stuff, but the interface is still subject to change. Please keep this in mind when upgrading

TO DO

This module is in developer mode. We still need to add a database schema and integrate it with the WWW::Myspace modules.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc WWW::Myspace::Data

You can also look for information at:

ACKNOWLEDGEMENTS

Many thanks to Grant Grueninger for giving birth to WWW::Myspace and for his help and advice in the development of this module.

COPYRIGHT & LICENSE

Copyright 2006 Olaf Alders, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.