WebService::GData - Google data protocol v2 base object to inherit from.
package WebService::MyService; use WebService::GData;#strict/warnings turned on use base 'WebService::GData'; #this is the base implementation of the __init method in WebService::GData #it is call when new() is used. only overwrite it if necessary. sub __init { my ($this,%params) = @_; while(my ($prop,$val)=each %params){ $this->{$prop}=$val; } return $this; } WebService::GData::install_in_package([qw(firstname lastname age gender)],sub { my $func = shift; return sub { my $this = shift; return $this->{$func}; } }); #the above is equal to writing these simple getters: #sub firstname { # my $this = shift; # return $this->{firstname}; #} #sub lastname { # my $this = shift; # return $this->{lastname}; #} #sub age { # my $this = shift; # return $this->{age}; #} #sub gender { # my $this = shift; # return $this->{gender}; #} 1; use WebService::MyService; my $object = new WebService::MyService(name=>'test'); $object->name;#test #overloaded string will dump the object with Data::Dumper; print $object;#$VAR1 = bless( { 'name' => 'test' }, 'WebService::MyService' );
This package is a blueprint that you should inherit and extend. It offers a basic hashed based object creation via the word new.
All sub classes should be hash based. If you want to pock into the instance, it's easy but everything that is not documented should be considered private. If you play around with undocumented properties/methods and that it changes,upgrading to the new version with all the extra new killer features will be very hard to do.
so...
dont.
The following classes extends WebService::GData to implement their feature:
Implements the base get/post/insert/update/delete methods for the Google data protocol.
Implements the ClientLogin authorization system.
Represents a Google data protocol Error.
Implements the basic query parameters and create a query string.
Represents the basic tags found in a Atom Feed (JSON format).
A service in progress:
Implements some of the YouTube API functionalities.
Takes an hash which keys will be attached to the instance. You can also use install_in_package() to create setters/getters for these parameters.
install_in_package()
Parameters
parameters:Hash
Returns
WebService::GData
Example:
my $object = new WebService::GData(firstname=>'doe',lastname=>'john',age=>'123'); $object->{firstname};#doe
This method is called by the constructor new(). This function receives the parameters set in new() and assign the key/values pairs to the instance. You should overwrite it and add your own logic.
new()
Overload the stringification quotes and display a dump of the instance by using Data::Dumper. You should overwrite it should you need to create a specific output.
Install in the package the methods/subs specified. Mostly use to avoid writting boiler plate getter/setter methods.
subnames:ArrayRef
callback:Sub
package_name:Scalar
void
package Basic::User; use WebService::GData; use base 'WebService::GData'; #install simple setters; it could also be setter/getters WebService::GData::install_in_package([qw(firstname lastname age gender)],sub { my $func = shift;#firstname then lastname then age... return sub { my $this = shift; return $this->{$func}; } }); 1; #in user code: my $user = new Basic::User(firstname=>'doe',lastname=>'john',age=>100,gender=>'need_confirmation'); $user->age;#100 $user->firstname;#doe
Create a method that is private to the package. Calling a private function from outside of the package will throw an error.
You can import the private method:
use WebService::GData 'private';
function_name_with_sub:Hash
Throws
error:RefHash
package Basic::User; use WebService::GData 'private'; use base 'WebService::GData'; private my_secret_method => sub { }; #note the comma 1; #in user code: my $user = new Basic::User(); $user->my_secret_method();#throw an error eval { $user->my_secret_method(); }; if(my $error = $@){ #$error->{code}; #$error->{content}; }
Overwrite a method so that it does nothing... Some namespaces inherit from functionalities that are not required. The function will still be available but will just return the instance.
functions:ArrayRef
package:Scalar*
package Basic::User; use WebService::GData; use base 'WebService::GData::Feed'; WebService::GData::disable("etag","title"); 1; #in user code: my $user = new Basic::User(); $user->etag("ddd")->title("dddd");#does nothing at all
If you do me the favor to _use_ this module and find a bug, please email me i will try to do my best to fix it (patches welcome)!
shiriru <shirirulestheworld[arobas]gmail.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install WebService::GData, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WebService::GData
CPAN shell
perl -MCPAN -e shell install WebService::GData
For more information on module installation, please visit the detailed CPAN module installation guide.