#!/usr/bin/env python

"""
Because, how awesome is Twitter as an APN service?
"""

import os
from argparse import ArgumentParser

import requests as req
from termcolor import colored


def environment():
    """Parse any command line arguments."""
    parser = ArgumentParser()
    parser.add_argument('status', type=str, nargs='+',
                        help="The status to post to Twitter")
    args = parser.parse_args()
    return args


def alert(env):
    auth = (os.getenv('FOAUTH_USER'), os.getenv('FOAUTH_PASS'))
    foauth = "https://foauth.org/api.twitter.com/1/statuses/update.json"
    if env.status:
        # This way, I'll get a notification.
        message = [username()]
        message.extend(env.status)
        message = " ".join(message)
        response = req.post(foauth, data={'status': message}, auth=auth)
        if response.status_code == 200:
            status = "Notification sent successfully."
            symbol = colored(u"\u2713", 'green')
        else:
            code = response.status_code
            status = "Hmm, encountered the following status code: %d" % (code)
            symbol = colored(u"\u2717", 'red')
        return "%s  %s" % (symbol, status)


def username():
    """Get the Twitter username environment variable."""
    user = os.getenv('PUSH_TWITTER')
    if not user.startswith('@'):
        user = "@" + user
    return user


if __name__ == '__main__':
    env = environment()
    status = alert(env)
    print "\n", status, "\n"
