Пример #1
0
def mediacache_redirect(request, blob_urn, mime_type, additional_args, resource):
    """Redirect to a mediacache resource

    This will issue a redirect to the mediacache url that serves this resource,
    given by DUCTUS_MEDIACACHE_URL.  If DUCTUS_MEDIACACHE_URL is not defined,
    it will be assumed to be '/mediacache'.
    """

    # as an additional layer of protection, make sure each mediacache module
    # view doesn't allow the insertion of rogue characters into additional_args
    if additional_args:
        if not _legal_additional_args_re.match(additional_args):
            raise Exception("illegal characters given in additional_args!")

    hash_type, digest = split_urn(blob_urn)

    pathname = "%s/%s%s.%s" % (hash_type, digest,
                               _dotstr(additional_args),
                               mime_to_ext[mime_type])

    if request.is_secure() and getattr(settings, "DUCTUS_MEDIACACHE_URL_SECURE", None):
        mediacache_url = settings.DUCTUS_MEDIACACHE_URL_SECURE
    elif settings.DUCTUS_MEDIACACHE_URL:
        mediacache_url = settings.DUCTUS_MEDIACACHE_URL
    else:
        mediacache_url = '/mediacache'

    url = "%s/%s?%s" % (mediacache_url, pathname, resource.urn)
    return HttpResponseRedirect(url)
Пример #2
0
def __to_filename(urn, mime_type, additional_args):
    hash_type, digest = split_urn(urn)
    extension = mime_to_ext[mime_type]

    basename = "%s%s.%s" % (digest, _dotstr(additional_args), extension)
    # fixme: assert that there are no illegal characters in filename
    filename = os.path.join(settings.DUCTUS_MEDIACACHE_DIR, hash_type,
                            digest[0:2], (digest[2:4] or digest[0:2]), basename)
    return filename
Пример #3
0
def resolve_relative_mediacache_url(resource, mime_type=None, additional_args=None, blob_urn=None):
    hash_type, digest = split_urn(blob_urn or resource.blob.href)
    ext = mime_to_ext[mime_type or resource.blob.mime_type]
    return "%s/%s%s.%s?%s" % (hash_type, digest, _dotstr(additional_args),
                              ext, resource.urn)
Пример #4
0
 def __storage_location(self, urn):
     hash_type, digest = split_urn(urn)
     return os.path.join(self.__storage_directory, hash_type,
                         digest[0:2], (digest[2:4] or digest[0:2]), digest)