#!/usr/bin/python
"""ubuntuone-sign-uri: Request an Ubuntu One URI and sign it with OAuth"""

from optparse import OptionParser
from ubuntuone.couch import auth

import socket
import sys
socket.setdefaulttimeout(5)

if __name__ == "__main__":
    PARSER = OptionParser(usage="prog [options] urlpath")
    PARSER.add_option("--oauth-signature-method", dest="sigmeth",
                      default="HMAC_SHA1",
                      help="OAuth signature method to use (PLAINTEXT or "
                      "HMAC_SHA1)")
    PARSER.add_option("--http-method", dest="http_method",
                      default="GET",
                      help="HTTP method to use")
    PARSER.add_option("--body", dest="body",
                      default=None,
                      help="HTTP request body")
    PARSER.add_option("--consumer-key", dest="consumer_key",
                      default=None,
                      help="OAUth consumer key")
    PARSER.add_option("--consumer-secret", dest="consumer_secret",
                      default=None,
                      help="OAUth consumer secret")
    PARSER.add_option("--access-token", dest="access_token",
                      default=None,
                      help="OAUth access token")
    PARSER.add_option("--token-secret", dest="token_secret",
                      default=None,
                      help="OAUth token secret")

    (OPTIONS, ARGS) = PARSER.parse_args()
    if len(ARGS) != 1:
        PARSER.error("You must specify a url")
    RESULT = auth.request(
        url=ARGS[0], sigmeth=OPTIONS.sigmeth,
        http_method=OPTIONS.http_method, request_body=OPTIONS.body,
        access_token=OPTIONS.access_token, token_secret=OPTIONS.token_secret,
        consumer_key=OPTIONS.consumer_key,
        consumer_secret=OPTIONS.consumer_secret)
    print RESULT
    if RESULT == auth.NO_CREDENTIALS:
        sys.exit(1)

