def _fetch_data_and_post_tweet(counter_name: CounterName, handler: Handler) -> None: filename = '/tmp/counter_data' + _random_str() + '.csv' fetch_and_dump_data(counter_name, filename) settings = get_settings(counter_name) load_data_and_dispatch_tweet(filename, handler, date.today() - timedelta(days=1), settings.hashtag) os.remove(filename)
def _build_handler(args: argparse.Namespace) -> Handler: output = Output(args.output) counter = CounterName(args.counter) if args.counter else None if output == Output.STD: return StdOutHandler() if output == Output.SLACK: if counter: settings = get_settings(counter) if settings.slack: return SlackHandler(settings.slack) return SlackHandler(SlackSettings(args.slack_url)) if output == Output.TWITTER: if counter: settings = get_settings(counter) if settings.twitter: return TwitterHandler(settings.twitter) return TwitterHandler( TwitterSettings( args.twitter_customer_api_key, args.twitter_customer_api_secret_key, args.twitter_access_token, args.twitter_access_token_secret, )) raise NotImplementedError(f'Unhandled output mode {output}')
def _get_hashtag(counter_name: Optional[str]) -> Optional[Hashtag]: if not counter_name: return None counter = CounterName(counter_name) return get_settings(counter).hashtag
def test_missing_counter_ids(): for counter in list(CounterName): get_settings(counter)
def fetch_data_and_publish_tweet(counter_name: CounterName) -> None: settings = get_settings(counter_name) if not settings.twitter: raise ValueError('Expecting twitter settings to be defined.') handler = TwitterHandler(settings.twitter) _fetch_data_and_post_tweet(counter_name, handler)
def fetch_data_and_post_tweet_to_slack(counter_name: CounterName) -> None: settings = get_settings(counter_name) if not settings.slack: raise ValueError('Expecting slack url to be defined.') handler = SlackHandler(settings.slack) _fetch_data_and_post_tweet(counter_name, handler)