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 )