Doorman
view release on metacpan or search on metacpan
lib/Plack/Middleware/DoormanTwitter.pm view on Meta::CPAN
package Plack::Middleware::DoormanTwitter;
use 5.010;
use parent 'Doorman::PlackMiddleware';
use strict;
our $VERSION = "0.06";
our $AUTHORITY = "http://gugod.org";
use feature qw(say);
use Plack::Request;
use Plack::Util::Accessor qw(consumer_key consumer_secret);
use URI;
use Scalar::Util qw(weaken);
use Net::Twitter::Lite;
sub twitter {
my ($self) = @_;
my $nt = Net::Twitter::Lite->new(
consumer_key => $self->consumer_key,
consumer_secret => $self->consumer_secret,
legacy_lists_api => 0,
);
my $access = $self->twitter_access;
if ($access) {
$nt->access_token($access->{access_token});
$nt->access_token_secret($access->{access_token_secret});
}
return $nt;
}
sub twitter_access {
my ($self) = @_;
my $env = $self->{env};
my $session = $env->{'psgix.session'};
my $scope = $self->scope;
my $t = $session->{"doorman.${scope}.twitter"};
if ($t->{"access_token"} && $t->{"access_token_secret"}) {
return {
access_token => $t->{"access_token"},
access_token_secret => $t->{"access_token_secret"}
}
}
return;
}
sub twitter_verified_url {
my ($self) = @_;
return $self->scope_url . "/twitter_verified";
}
sub twitter_verified_path {
my ($self) = @_;
return URI->new($self->twitter_verified_url)->path;
}
sub twitter_screen_name {
my ($self) = @_;
my $session = $self->{env}->{'psgix.session'};
my $k = "doorman.@{[ $self->scope ]}.twitter";
return unless $session && $session->{$k};
return $session->{$k}{"screen_name"};
}
sub is_sign_in {
my ($self) = @_;
( run in 1.003 second using v1.01-cache-2.11-cpan-39bf76dae61 )