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

=pod

=head1 NAME

flickr_method_test_echo.pl

a login 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.login method.

=head1 USAGE

  flickr_method_test_login.pl --use_api=[oauth, flickr] \
    --key="24680beef13579feed987654321ddcc6" \
    --secret="de0cafe4feed0242" \
    --token="72157beefcafe3582-1ad0feedface0e60" \
   [--token_secret="33beef1face212d"]

Depending on what you specify with B<--use_api> the flickr.test.login
call will use the appropriate parameter set. The B<--token_secret> is
used by OAuth, but not by the original Flickr.


=cut

my $config = {};
my $api;

my %args;

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


=head1 CALL DIFFERENCES

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

        $args{'api_key'}    = $config->{key};
        $args{'auth_token'} = $config->{token};
    }
    elsif ($config->{use_api} =~ m/oauth/i) {
        $api = Flickr::API->new({
            'consumer_key'    => $config->{key},
            'consumer_secret' => $config->{secret},
            'token'           => $config->{token},
            'token_secret'    => $config->{token_secret},
        });

        $args{'consumer_key'} = $config->{key};
        $args{'token'} = $config->{token};
    }
    else {
        die "\n --use_api must be either 'flickr' or 'oauth' \n";
    }

=cut

if ($config->{use_api} && $config->{use_api} eq 'flickr') {
    $api = Flickr::API->new({
        'key'        => $config->{key},
        'secret'     => $config->{secret},
        'auth_token' => $config->{token},
    });

    $args{'api_key'}    = $config->{key};
    $args{'auth_token'} = $config->{token};
}
elsif ($config->{use_api} && $config->{use_api} eq 'oauth') {
    $api = Flickr::API->new({
        'consumer_key'    => $config->{key},
        'consumer_secret' => $config->{secret},
        'token'           => $config->{token},
        'token_secret'    => $config->{token_secret},
    });

    $args{'consumer_key'} = $config->{key};
    $args{'token'} = $config->{token};
}
else {
    die "\n --use_api must be either 'flickr' or 'oauth'\n";
}


my $response = $api->execute_method('flickr.test.login', \%args);

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

if ($api->is_oauth) {
    print "\nOAuth formated login status: ",$ref->{stat},"\n";
}
else {
    print "\nFlickr formated login status: ",$ref->{stat},"\n";
}

exit;

__END__

=pod

=head1 AUTHOR

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

=head1 LICENSE AND COPYRIGHT

Copyright 2014, Louis B. Moore

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

=cut