#!/usr/bin/python
import sys
from ConfigParser import SafeConfigParser

from twisted.internet import reactor

from pyngfm.client import PingFMAsyncClient


def checkMessage(message):
    if len(message) > 140:
        print "Message is too long! (%s chars)" % len(message)
        sys.exit(1)


def getKeys():
    cred_file = "/etc/ping.fm.creds"
    config = SafeConfigParser()
    config.read([cred_file])
    api_key = config.get("default", "api-key")
    user_app_key = config.get("default", "user-app-key")
    return api_key, user_app_key


def pingIt(message):

    def check_result(status):
        print status

    def check_error(error):
        print error.getErrorMessage()

    def finish(ignored):
        reactor.stop()

    pinger = PingFMAsyncClient(*getKeys())
    deferred = pinger.user_post("status", body=message)
    deferred.addErrback(check_error)
    deferred.addCallback(check_result)
    deferred.addErrback(check_error)
    deferred.addCallback(finish)


if __name__ == "__main__":
    message = " ".join(sys.argv[1:])
    checkMessage(message)
    pingIt(message)
    reactor.run()