diff options
-rw-r--r-- | lib/Dakkar/TweetArchive.pm | 29 | ||||
-rw-r--r-- | lib/Dakkar/TweetArchive/Store.pm | 19 |
2 files changed, 48 insertions, 0 deletions
diff --git a/lib/Dakkar/TweetArchive.pm b/lib/Dakkar/TweetArchive.pm index 3c0d35e..fe28d13 100644 --- a/lib/Dakkar/TweetArchive.pm +++ b/lib/Dakkar/TweetArchive.pm @@ -17,6 +17,7 @@ has client => ( isa => InstanceOf['Net::Twitter'], ); + sub _build_client($self) { my $nt = Net::Twitter->new( traits => [ @@ -35,6 +36,33 @@ sub _build_client($self) { $nt->access_token($self->access_token); $nt->access_token_secret($self->access_token_secret); + # HACK! Net::Twitter doesn't know about C<tweet_mode>, let's teach + # it + require Net::Twitter::API; + my $nt_class = ref($nt); + my $meta_class = Moose::Meta::Class->initialize($nt_class); + + $meta_class->make_mutable; + + my $original = $meta_class->find_method_by_name('home_timeline'); + + $nt_class->Net::Twitter::API::twitter_api_method( + home_timeline => ( + description => 'override home_timeline to add tweet_mode', + path => $original->path, + method => $original->method, + params => [ + @{ $original->params }, + 'tweet_mode', + ], + booleans => $original->booleans, + required => $original->required, + returns => $original->returns, + ), + ); + + $meta_class->make_immutable; + return $nt; } @@ -45,6 +73,7 @@ sub home_timeline($self,$since_id) { exclude_replies => 0, ( $since_id ? ( since_id => $since_id ) : () ), count => 200, + tweet_mode => 'extended', }); } diff --git a/lib/Dakkar/TweetArchive/Store.pm b/lib/Dakkar/TweetArchive/Store.pm index b6ce585..9a97ca6 100644 --- a/lib/Dakkar/TweetArchive/Store.pm +++ b/lib/Dakkar/TweetArchive/Store.pm @@ -341,4 +341,23 @@ CREATE TRIGGER tweets_fts_update SQL } +sub _schema_deploy_5($self) { + my $dbh = $self->dbh; + + # get *more* text of a tweet + $dbh->do(<<'SQL'); +CREATE OR REPLACE FUNCTION tweet_text(IN t JSONB) RETURNS text +LANGUAGE sql +IMMUTABLE +RETURNS NULL ON NULL INPUT +PARALLEL SAFE +AS $$ SELECT +CASE t ? 'extended_tweet' + WHEN true THEN COALESCE(t->'extended_tweet'->>'text',t->'extended_tweet'->>'full_text') + ELSE COALESCE(t->>'text',t->>'full_text') +END +$$; +SQL +} + 1; |