Creates the signable string for a request and returns it.

        Keyword arguments:
        request -- A request object which can be consumed by this API.
        authheaders -- A string-indexable object which contains the headers appropriate for this signature version.

def signable(self, request, authheaders):
        """Creates the signable string for a request and returns it.

        Keyword arguments:
        request -- A request object which can be consumed by this API.
        authheaders -- A string-indexable object which contains the headers appropriate for this signature version.
        """
        method = request.method.upper()
        md5 = hashlib.md5()
        if request.body is not None:
            md5.update(request.body)
        bodyhash = md5.hexdigest()
        ctype = request.get_header("content-type")
        date = request.get_header("date")
        cheaders = []
        cheader_first = True
        cheaders_sign = ''
        if "headers" in authheaders:
            cheaders = authheaders["headers"].split(";")
        cheaders.sort()
        for cheader in cheaders:
            if cheader_first:
                cheader_first = False
            else:
                cheaders_sign += '\n'
            cheaders_sign += '{0}: {1}'.format(cheader.lower(), request.get_header(cheader))
        requri = request.url.request_uri()

        return '{0}\n{1}\n{2}\n{3}\n{4}\n{5}'.format(method, bodyhash, ctype, date, cheaders_sign, requri)