Cloudinary::unsigned_download_url_prefix PHP Method

unsigned_download_url_prefix() private static method

if cdn_domain is true uses a[1-5].cname for http. For https, uses the same naming scheme as 1 for shared distribution and as 2 for private distribution.
private static unsigned_download_url_prefix ( $source, $cloud_name, $private_cdn, $cdn_subdomain, $secure_cdn_subdomain, $cname, $secure, $secure_distribution )
    private static function unsigned_download_url_prefix($source, $cloud_name, $private_cdn, $cdn_subdomain, $secure_cdn_subdomain, $cname, $secure, $secure_distribution)
    {
        $shared_domain = !$private_cdn;
        $prefix = NULL;
        if ($secure) {
            if (empty($secure_distribution) || $secure_distribution == Cloudinary::OLD_AKAMAI_SHARED_CDN) {
                $secure_distribution = $private_cdn ? $cloud_name . '-res.cloudinary.com' : Cloudinary::SHARED_CDN;
            }
            if (empty($shared_domain)) {
                $shared_domain = $secure_distribution == Cloudinary::SHARED_CDN;
            }
            if (is_null($secure_cdn_subdomain) && $shared_domain) {
                $secure_cdn_subdomain = $cdn_subdomain;
            }
            if ($secure_cdn_subdomain) {
                $secure_distribution = str_replace('res.cloudinary.com', "res-" . Cloudinary::domain_shard($source) . ".cloudinary.com", $secure_distribution);
            }
            $prefix = "https://" . $secure_distribution;
        } else {
            if ($cname) {
                $subdomain = $cdn_subdomain ? "a" . Cloudinary::domain_shard($source) . '.' : "";
                $prefix = "http://" . $subdomain . $cname;
            } else {
                $host = implode(array($private_cdn ? $cloud_name . "-" : "", "res", $cdn_subdomain ? "-" . Cloudinary::domain_shard($source) : "", ".cloudinary.com"));
                $prefix = "http://" . $host;
            }
        }
        if ($shared_domain) {
            $prefix = $prefix . '/' . $cloud_name;
        }
        return $prefix;
    }

Usage Example

示例#1
0
 public static function cloudinary_url($source, &$options = array())
 {
     $source = self::check_cloudinary_field($source, $options);
     $type = Cloudinary::option_consume($options, "type", "upload");
     if ($type == "fetch" && !isset($options["fetch_format"])) {
         $options["fetch_format"] = Cloudinary::option_consume($options, "format");
     }
     $transformation = Cloudinary::generate_transformation_string($options);
     $resource_type = Cloudinary::option_consume($options, "resource_type", "image");
     $version = Cloudinary::option_consume($options, "version");
     $format = Cloudinary::option_consume($options, "format");
     $cloud_name = Cloudinary::option_consume($options, "cloud_name", Cloudinary::config_get("cloud_name"));
     if (!$cloud_name) {
         throw new InvalidArgumentException("Must supply cloud_name in tag or in configuration");
     }
     $secure = Cloudinary::option_consume($options, "secure", Cloudinary::config_get("secure"));
     $private_cdn = Cloudinary::option_consume($options, "private_cdn", Cloudinary::config_get("private_cdn"));
     $secure_distribution = Cloudinary::option_consume($options, "secure_distribution", Cloudinary::config_get("secure_distribution"));
     $cdn_subdomain = Cloudinary::option_consume($options, "cdn_subdomain", Cloudinary::config_get("cdn_subdomain"));
     $secure_cdn_subdomain = Cloudinary::option_consume($options, "secure_cdn_subdomain", Cloudinary::config_get("secure_cdn_subdomain"));
     $cname = Cloudinary::option_consume($options, "cname", Cloudinary::config_get("cname"));
     $shorten = Cloudinary::option_consume($options, "shorten", Cloudinary::config_get("shorten"));
     $sign_url = Cloudinary::option_consume($options, "sign_url", Cloudinary::config_get("sign_url"));
     $api_secret = Cloudinary::option_consume($options, "api_secret", Cloudinary::config_get("api_secret"));
     $url_suffix = Cloudinary::option_consume($options, "url_suffix", Cloudinary::config_get("url_suffix"));
     $use_root_path = Cloudinary::option_consume($options, "use_root_path", Cloudinary::config_get("use_root_path"));
     if (!$private_cdn and !empty($url_suffix)) {
         throw new InvalidArgumentException("URL Suffix only supported in private CDN");
     }
     if (!$source) {
         return $source;
     }
     if (preg_match("/^https?:\\//i", $source)) {
         if ($type == "upload") {
             return $source;
         }
     }
     $resource_type_and_type = Cloudinary::finalize_resource_type($resource_type, $type, $url_suffix, $use_root_path, $shorten);
     $sources = Cloudinary::finalize_source($source, $format, $url_suffix);
     $source = $sources["source"];
     $source_to_sign = $sources["source_to_sign"];
     if (strpos($source_to_sign, "/") && !preg_match("/^https?:\\//", $source_to_sign) && !preg_match("/^v[0-9]+/", $source_to_sign) && empty($version)) {
         $version = "1";
     }
     $version = $version ? "v" . $version : NULL;
     $signature = NULL;
     if ($sign_url) {
         $to_sign = implode("/", array_filter(array($transformation, $source_to_sign)));
         $signature = str_replace(array('+', '/', '='), array('-', '_', ''), base64_encode(sha1($to_sign . $api_secret, TRUE)));
         $signature = 's--' . substr($signature, 0, 8) . '--';
     }
     $prefix = Cloudinary::unsigned_download_url_prefix($source, $cloud_name, $private_cdn, $cdn_subdomain, $secure_cdn_subdomain, $cname, $secure, $secure_distribution);
     return preg_replace("/([^:])\\/+/", "\$1/", implode("/", array_filter(array($prefix, $resource_type_and_type, $signature, $transformation, $version, $source))));
 }