Exemple #1
0
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)
Exemple #2
0
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}')
Exemple #3
0
def _get_hashtag(counter_name: Optional[str]) -> Optional[Hashtag]:
    if not counter_name:
        return None
    counter = CounterName(counter_name)
    return get_settings(counter).hashtag
Exemple #4
0
def test_missing_counter_ids():
    for counter in list(CounterName):
        get_settings(counter)
Exemple #5
0
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)
Exemple #6
0
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)