Skip to content

Commit

Permalink
refactor(egg-mode): Switch to tokio instead of tokio-core
Browse files Browse the repository at this point in the history
  • Loading branch information
klausi committed Feb 23, 2019
1 parent 0096461 commit d124596
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 50 deletions.
26 changes: 0 additions & 26 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ regex = ">=0.2.2"
reqwest = ">=0.9.5"
serde = ">=1.0"
serde_derive = ">=1.0.19"
tokio-core = ">=0.1.10"
tokio = ">=0.1.15"
tempfile = "3"
toml = ">=0.4.5"
Expand Down
8 changes: 3 additions & 5 deletions src/delete_favs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use mammut::Error as MammutError;
use mammut::Mastodon;
use std::collections::BTreeMap;
use std::str::FromStr;
use tokio_core::reactor::Core;
use tokio::runtime::current_thread::block_on_all;

use crate::config::*;

Expand Down Expand Up @@ -69,14 +69,13 @@ pub fn twitter_delete_older_favs(user_id: u64, token: &egg_mode::Token) {
// keyed by their dates.
let cache_file = "twitter_fav_cache.json";
let dates = twitter_load_fav_dates(user_id, token, cache_file);
let mut core = Core::new().unwrap();
let mut remove_dates = Vec::new();
let three_months_ago = Utc::now() - Duration::days(90);
for (delete_count, (date, tweet_id)) in dates.range(..three_months_ago).enumerate() {
println!("Deleting Twitter fav {} from {}", tweet_id, date);
remove_dates.push(date);
let deletion = egg_mode::tweet::unlike(*tweet_id, token);
let delete_result = core.run(deletion);
let delete_result = block_on_all(deletion);
match delete_result {
// The like could have been deleted already by the user, ignore API
// errors in that case.
Expand Down Expand Up @@ -120,14 +119,13 @@ fn twitter_fetch_fav_dates(
token: &egg_mode::Token,
cache_file: &str,
) -> BTreeMap<DateTime<Utc>, u64> {
let mut core = Core::new().unwrap();
// Try to fetch as many tweets as possible at once, Twitter API docs say
// that is 200.
let timeline = egg_mode::tweet::liked_by(user_id, token).with_page_size(200);
let mut max_id = None;
let mut dates = BTreeMap::new();
loop {
let tweets = core.run(timeline.call(None, max_id)).unwrap();
let tweets = block_on_all(timeline.call(None, max_id)).unwrap();
if tweets.is_empty() {
break;
}
Expand Down
8 changes: 3 additions & 5 deletions src/delete_statuses.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use mammut::Error as MammutError;
use mammut::Mastodon;
use std::collections::BTreeMap;
use std::str::FromStr;
use tokio_core::reactor::Core;
use tokio::runtime::current_thread::block_on_all;

use crate::config::*;

Expand Down Expand Up @@ -78,14 +78,13 @@ pub fn twitter_delete_older_statuses(user_id: u64, token: &egg_mode::Token) {
// keyed by their dates.
let cache_file = "twitter_cache.json";
let dates = twitter_load_tweet_dates(user_id, token, cache_file);
let mut core = Core::new().unwrap();
let mut remove_dates = Vec::new();
let three_months_ago = Utc::now() - Duration::days(90);
for (date, tweet_id) in dates.range(..three_months_ago) {
println!("Deleting tweet {} from {}", tweet_id, date);
remove_dates.push(date);
let deletion = egg_mode::tweet::delete(*tweet_id, token);
let delete_result = core.run(deletion);
let delete_result = block_on_all(deletion);
match delete_result {
// The status could have been deleted already by the user, ignore API
// errors in that case.
Expand Down Expand Up @@ -121,14 +120,13 @@ fn twitter_fetch_tweet_dates(
token: &egg_mode::Token,
cache_file: &str,
) -> BTreeMap<DateTime<Utc>, u64> {
let mut core = Core::new().unwrap();
// Try to fetch as many tweets as possible at once, Twitter API docs say
// that is 200.
let timeline = egg_mode::tweet::user_timeline(user_id, true, true, token).with_page_size(200);
let mut max_id = None;
let mut dates = BTreeMap::new();
loop {
let tweets = core.run(timeline.call(None, max_id)).unwrap();
let tweets = block_on_all(timeline.call(None, max_id)).unwrap();
if tweets.is_empty() {
break;
}
Expand Down
7 changes: 3 additions & 4 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use mammut::{Mastodon, StatusesRequest};
use std::fs::File;
use std::io::prelude::*;
use std::process;
use tokio_core::reactor::Core;
use tokio::runtime::current_thread::block_on_all;

use crate::config::*;
use crate::delete_favs::*;
Expand Down Expand Up @@ -76,11 +76,10 @@ fn main() {
access: access_token,
};

let mut core = Core::new().unwrap();
let timeline = egg_mode::tweet::user_timeline(config.twitter.user_id, false, true, &token)
.with_page_size(50);

let (timeline, first_tweets) = match core.run(timeline.start()) {
let (timeline, first_tweets) = match block_on_all(timeline.start()) {
Ok(tweets) => tweets,
Err(e) => {
println!("Error fetching tweets from Twitter: {:#?}", e);
Expand All @@ -91,7 +90,7 @@ fn main() {
// We might have only one tweet because of filtering out reply tweets. Fetch
// some more tweets to make sure we have enough for comparing.
if tweets.len() < 50 {
let (_, mut next_tweets) = match core.run(timeline.older(None)) {
let (_, mut next_tweets) = match block_on_all(timeline.older(None)) {
Ok(tweets) => tweets,
Err(e) => {
println!("Error fetching older tweets from Twitter: {:#?}", e);
Expand Down
13 changes: 4 additions & 9 deletions src/registration.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use mammut::apps::{AppBuilder, Scopes};
use mammut::{Mastodon, Registration};
use std::io;
use tokio_core::reactor::Core;
use tokio::runtime::current_thread::block_on_all;

use super::*;

Expand Down Expand Up @@ -34,21 +34,16 @@ pub fn twitter_register() -> TwitterConfig {
let consumer_key = console_input("Paste your consumer key");
let consumer_secret = console_input("Paste your consumer secret");

let mut core = Core::new().unwrap();

let con_token = egg_mode::KeyPair::new(consumer_key.clone(), consumer_secret.clone());
let request_token = core
.run(egg_mode::request_token(&con_token, "oob"))
.unwrap();
let request_token = block_on_all(egg_mode::request_token(&con_token, "oob")).unwrap();
println!(
"Click this link to authorize on Twitter: {}",
egg_mode::authorize_url(&request_token)
);
let pin = console_input("Paste your PIN");

let (token, user_id, screen_name) = core
.run(egg_mode::access_token(con_token, &request_token, pin))
.unwrap();
let (token, user_id, screen_name) =
block_on_all(egg_mode::access_token(con_token, &request_token, pin)).unwrap();

match token {
egg_mode::Token::Access {
Expand Down

0 comments on commit d124596

Please sign in to comment.