#!/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 XML::LibXML::Simple;
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 $xs = XML::LibXML::Simple->new(ForceArray => 0);

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

my $content = $response->decoded_content();
$content = $response->content() unless defined $content;

my $ref = $xs->XMLin($content,KeyAttr => []);

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

