The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
#
# Method Test Echo
#

=pod

=head1 NAME

flickr_method_test_echo.pl

an example for using either OAuth or Old School Flickr

=cut

use warnings;
use strict;
use Flickr::API;
use Getopt::Long;

=pod

=head1 DESCRIPTION

This script uses either the Flickr or OAuth parameters to call
the flickr.test.echo method.

=head1 USAGE

 flickr_method_test_echo.pl --use_api=[oauth, flickr] \
    --key="24680beef13579feed987654321ddcc6" \
    --secret="de0cafe4feed0242"

Depending on what you specify with B<--use_api> the flickr.test.echo
call will use the appropriate parameter set. If B<Flickr::API->new> is
called with a consumer_key, OAuth is used. If B<Flickr::API->new> with
key the old Flickr Authentication is used.


=cut

my $config = {};
my $api;

GetOptions (
    $config,
    'use_api=s',
    'key=s',
    'secret=s',
);

=head1 CALL DIFFERENCES

 if ($config->{use_api} =~ m/flickr/i) {

    $api = Flickr::API->new({'key'    => $config->{key},
                             'secret' => $config->{secret}});
 }
 elsif  ($config->{use_api} =~ m/oauth/i) {

    $api = Flickr::API->new({'consumer_key'    => $config->{key},
                             'consumer_secret' => $config->{secret}});

}
 else {

     die "\n --use_api must be either 'flickr' or 'oauth' \n";

 }

=cut

if ($config->{use_api} =~ m/flickr/i) {

    $api = Flickr::API->new({
        'key'    => $config->{key},
        'secret' => $config->{secret},
    });
}
elsif  ($config->{use_api} =~ m/oauth/i) {

    $api = Flickr::API->new({
        'consumer_key'    => $config->{key},
        'consumer_secret' => $config->{secret},
    });
}
else {

    die "\n --use_api must be either 'flickr' or 'oauth' \n";

}

my $response = $api->execute_method('flickr.test.echo', {
                     'foo' => 'bar',
                     'baz' => 'quux',
               });

my $ref = $response->as_hash();

print "\n\n",$ref->{method},"\n";
print "  Key: foo  received: ",$ref->{foo},"\n";
print "  Key: baz  received: ",$ref->{baz},"\n\n\n";

exit;

__END__

=pod

=head1 AUTHOR

Louis B. Moore <lbmoore at cpan.org> Based on the code in Flickr::API.

=head1 COPYRIGHT AND LICENSE

Copyright 2014, Louis B. Moore

This program is released under the Artistic License 2.0 by The Perl Foundation.

=cut