#!/usr/bin/env python
import sys, os
import ydisk
import mimetypes

YD_APP_ID = 'cb76e6135dc34947bcf7620e1ab62e54'
YD_APP_SECRET = 'e4dba0141d734e1d89a5333c26a44f46'
KEY_FILE = os.path.expanduser('~/.ypload-key')

def main():
    if len(sys.argv) < 2:
        sys.stderr.write('No filename given\n')
        sys.exit(-2)

    try:
        key = ydisk.getKey(YD_APP_ID, YD_APP_SECRET, KEY_FILE)
    except:
        key = None

    while not key or not ydisk.LoginAPI(key).getInfo():
        print "Something wrong with the authorization token"
        answ = raw_input('Would you like to retry authentication? (y/N): ').strip().lower()
        if answ in ['y', "yes"]:
            if os.path.isfile(KEY_FILE):
                os.remove(KEY_FILE)
            try:
                key = ydisk.getKey(YD_APP_ID, YD_APP_SECRET, KEY_FILE)
            except:
                pass
        else:
            sys.exit(-5)

    api = ydisk.DiskAPI(key)
    api.mkdir('/JustShared')

    for fname in sys.argv[1:]:
        if os.path.isfile(fname):
            fname = sys.argv[1]
            newname = '/JustShared/' + os.path.basename(fname)
            try:
                tp, enc = mimetypes.guess_type(fname)
                if not tp:
                    tp = 'application/binary'
                api.put(newname, open(fname, 'r').read(), tp=tp)
                print api.publish(newname)
            except Exception, e:
                sys.stderr.write('Something wrong with %s\n%s\n' % (fname, e))
                sys.exit(-3)
        else:
            sys.stderr.write('No such file %s\n' % fname)
            sys.exit(-4)


if __name__ == '__main__':
    main()
