Upgrading cloudinary 0.2 to 1
Breaking0.2.8 → 1.46.3Breaking6Security1Platform4New222Changed47Fixed82Other138
BreakingUpgrade verdict
6 breaking changes and 4 platform requirement changes and a security fix.
In plain terms
- The option previously called custom_action is now called custom_function, so old code using the old name must be updated.
- Callers that relied on the default for `public_ids` must now pass it explicitly.
- Removes django_tests from the package.
- Removes the no longer needed upload_chunked endpoint.
Must act Top 5 of 11 that need code or config changes
Adds certifi, six, urllib3 >=1.26.5.
Installs 3 packages in all (was 0).
What you must change
Breaking6
Renames
custom_action to custom_function.custom_actioncustom_functionRemoves the default value for the
public_ids argument.public_idsRemoves django_tests from the package.
django_testsRemoves the no longer needed upload_chunked endpoint.
upload_chunkedRenames CloudinaryImage.url method to build_url to avoid conflicts with the url property.
CloudinaryImage.urlCloudinaryImage.build_urlReplaces Exception with ValueError.
ValueErrorSecurity1
Verifies the protocol in CLOUDINARY_URL.
CLOUDINARY_URLPlatform4
Adds Python 3.9 support.
Adds Python 3.8 support.
Adds support for Python 3.7 and Django 2.1.
Supports Python 2 and 3, and Django 1.7 and 1.9.
API changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- removed:
method CloudinaryImage.image(**options) - removed:
method CloudinaryImage.url(**options) - removed:
method CloudinaryImage.validate() - removed:
method Config.update(**keywords) - changed:
class CloudinaryImage(object) → class CloudinaryImage(CloudinaryResource) - changed:
class Config(object) → class Config(BaseConfig) - changed:
constructor CloudinaryImage(public_id, format=…, version=…, signature=…) → constructor CloudinaryImage(public_id=…, **kwargs) - added:
class BaseConfig(object) - added:
class CloudinaryResource(object) - added:
class CloudinaryVideo(CloudinaryResource) - added:
constructor BaseConfig() - added:
constructor CloudinaryResource(public_id=…, format=…, version=…, signature=…, url_options=…, metadata=…, type=…, resource_type=…, default_resource_type=…) - added:
constructor CloudinaryVideo(public_id=…, **kwargs) - added:
export GeneralError - added:
export HttpClient - added:
export Search - added:
export SearchFolders - added:
export parse_qs - added:
export responsive_breakpoints_cache - added:
export urlparse - added:
field CloudinaryResource.default_video_sources - added:
function get_user_agent() - added:
method BaseConfig.update(**keywords) - added:
method CloudinaryResource.build_url(**options) - added:
method CloudinaryResource.get_expected_signature() - added:
method CloudinaryResource.get_prep_value() - added:
method CloudinaryResource.get_presigned() - added:
method CloudinaryResource.image(**options) - added:
method CloudinaryResource.picture(**options) - added:
method CloudinaryResource.source(**options) - added:
method CloudinaryResource.validate() - added:
method CloudinaryResource.video(**options) - added:
method CloudinaryResource.video_thumbnail(**options) - added:
property CloudinaryResource.url - added:
static method CloudinaryResource.default_poster_options(options) - added:
static method CloudinaryResource.default_source_types() - added:
variable AKAMAI_SHARED_CDN - added:
variable API_VERSION - added:
variable CERT_KWARGS - added:
variable CF_SHARED_CDN - added:
variable CL_BLANK - added:
variable OLD_AKAMAI_SHARED_CDN - added:
variable SHARED_CDN - added:
variable URI_SCHEME - added:
variable USER_AGENT - added:
variable USER_PLATFORM - added:
variable VERSION - added:
variable ch - added:
variable formatter - added:
variable logger
- removed:
class AlreadyExists(Error) - removed:
class AuthorizationRequired(Error) - removed:
class BadRequest(Error) - removed:
class Error(Exception) - removed:
class GeneralError(Error) - removed:
class NotAllowed(Error) - removed:
class NotFound(Error) - removed:
class RateLimited(Error) - removed:
class Response(dict) - removed:
constructor Response(result, response) - removed:
function call_api(method, uri, params, **options) - removed:
variable EXCEPTION_CODES - changed:
function only(hash, *keys) → function only(source, *keys) - added:
function ack_notifications(receipt_handles, **options) - added:
function add_metadata_field(field, **options) - added:
function add_metadata_rule(rule, **options) - added:
function add_related_assets(public_id, assets_to_relate, resource_type=…, type=…, **options) - added:
function add_related_assets_by_asset_ids(asset_id, assets_to_relate, **options) - added:
function analyze(input_type, analysis_type, uri=…, **options) - added:
function config(**options) - added:
function create_folder(path, **options) - added:
function create_streaming_profile(name, **options) - added:
function create_trigger(uri, event_type, uri_type=…, **options) - added:
function create_upload_mapping(name, **options) - added:
function create_upload_preset(**options) - added:
function delete_all_resources(**options) - added:
function delete_backed_up_assets(asset_id, version_ids, **options) - added:
function delete_datasource_entries(field_external_id, entries_external_id, **options) - added:
function delete_derived_by_transformation(public_ids, transformations, resource_type=…, type=…, invalidate=…, **options) - added:
function delete_folder(path, **options) - added:
function delete_metadata_field(field_external_id, **options) - added:
function delete_metadata_rule(rule_external_id, **options) - added:
function delete_related_assets(public_id, assets_to_unrelate, resource_type=…, type=…, **options) - added:
function delete_related_assets_by_asset_ids(asset_id, assets_to_unrelate, **options) - added:
function delete_resources_by_asset_ids(asset_ids, **options) - added:
function delete_resources_by_tag(tag, **options) - added:
function delete_streaming_profile(name, **options) - added:
function delete_trigger(trigger_id, **options) - added:
function delete_upload_mapping(name, **options) - added:
function delete_upload_preset(name, **options) - added:
function get_streaming_profile(name, **options) - added:
function list_metadata_fields(**options) - added:
function list_metadata_rules(**options) - added:
function list_streaming_profiles(**options) - added:
function metadata_field_by_field_id(field_external_id, **options) - added:
function notifications(channel=…, batch_id=…, max_messages=…, wait_seconds=…, visibility_timeout=…, **options) - added:
function ping(**options) - added:
function publish_by_ids(public_ids, **options) - added:
function publish_by_prefix(prefix, **options) - added:
function publish_by_tag(tag, **options) - added:
function rename_folder(from_path, to_path, **options) - added:
function reorder_metadata_field_datasource(field_external_id, order_by, direction=…, **options) - added:
function reorder_metadata_fields(order_by, direction=…, **options) - added:
function resource_by_asset_id(asset_id, **options) - added:
function resources_by_asset_folder(asset_folder, **options) - added:
function resources_by_asset_ids(asset_ids, **options) - added:
function resources_by_context(key, value=…, **options) - added:
function resources_by_ids(public_ids, **options) - added:
function resources_by_moderation(kind, status, **options) - added:
function restore(public_ids, **options) - added:
function restore_by_asset_ids(asset_ids, **options) - added:
function restore_metadata_field_datasource(field_external_id, entries_external_ids, **options) - added:
function root_folders(**options) - added:
function subfolders(of_folder_path, **options) - added:
function test_trigger(trigger_id, sample_data=…, **options) - added:
function triggers(**options) - added:
function update(public_id, **options) - added:
function update_metadata_field(field_external_id, field, **options) - added:
function update_metadata_field_datasource(field_external_id, entries_external_id, **options) - added:
function update_metadata_rule(rule_external_id, rule, **options) - added:
function update_streaming_profile(name, **options) - added:
function update_trigger(trigger_id, new_uri, **options) - added:
function update_upload_mapping(name, **options) - added:
function update_upload_preset(name, **options) - added:
function upload_mapping(name, **options) - added:
function upload_mappings(**options) - added:
function upload_preset(name, **options) - added:
function upload_presets(**options) - added:
function usage(**options) - added:
function visual_search(image_url=…, image_asset_id=…, text=…, image_file=…, **options)
- added:
variable ACCOUNT_SUB_PATH - added:
variable PROVISIONING_SUB_PATH
- added:
function call_api(method, uri, params, **options) - added:
function call_json_api(method, uri, params, **options) - added:
function call_metadata_api(method, uri, params, **options) - added:
function call_metadata_rules_api(method, uri, params, **options) - added:
variable logger
- added:
class Response(dict) - added:
constructor Response(result, response, **kwargs) - added:
function execute_request(http_connector, method, params, headers, auth, api_url, **options) - added:
variable EXCEPTION_CODES
- added:
class TCPKeepAliveHTTPConnectionPool(HTTPConnectionPool) - added:
class TCPKeepAliveHTTPSConnectionPool(HTTPSConnectionPool) - added:
class TCPKeepAlivePoolManager(PoolManager) - added:
class TCPKeepAliveProxyManager(ProxyManager) - added:
class TCPKeepAliveValidationMethods - added:
constructor TCPKeepAlivePoolManager(num_pools=…, headers=…, **connection_pool_kw) - added:
constructor TCPKeepAliveProxyManager(proxy_url, num_pools=…, headers=…, proxy_headers=…, **connection_pool_kw) - added:
static method TCPKeepAliveValidationMethods.adjust_connection_socket(conn, protocol=…) - added:
variable TCP_KEEPALIVE - added:
variable TCP_KEEPALIVE_INTERVAL - added:
variable TCP_KEEP_CNT - added:
variable TCP_KEEP_IDLE
- added:
function generate(url=…, acl=…, start_time=…, duration=…, expiration=…, ip=…, key=…, token_name=…, **_) - added:
variable AUTH_TOKEN_NAME - added:
variable AUTH_TOKEN_SEPARATOR - added:
variable AUTH_TOKEN_UNSAFE_RE
- added:
class CacheAdapter - added:
method CacheAdapter.delete(public_id, type, resource_type, transformation, format) - added:
method CacheAdapter.flush_all() - added:
method CacheAdapter.get(public_id, type, resource_type, transformation, format) - added:
method CacheAdapter.set(public_id, type, resource_type, transformation, format, value)
- added:
class KeyValueCacheAdapter(CacheAdapter) - added:
constructor KeyValueCacheAdapter(storage) - added:
method KeyValueCacheAdapter.delete(public_id, type, resource_type, transformation, format) - added:
method KeyValueCacheAdapter.flush_all() - added:
method KeyValueCacheAdapter.get(public_id, type, resource_type, transformation, format) - added:
method KeyValueCacheAdapter.set(public_id, type, resource_type, transformation, format, value) - added:
property KeyValueCacheAdapter.enabled - added:
static method KeyValueCacheAdapter.generate_cache_key(public_id, type, resource_type, transformation, format)
- added:
class ResponsiveBreakpointsCache - added:
constructor ResponsiveBreakpointsCache(**cache_options) - added:
method ResponsiveBreakpointsCache.delete(public_id, **options) - added:
method ResponsiveBreakpointsCache.flush_all() - added:
method ResponsiveBreakpointsCache.get(public_id, **options) - added:
method ResponsiveBreakpointsCache.set(public_id, value, **options) - added:
method ResponsiveBreakpointsCache.set_cache_adapter(cache_adapter) - added:
property ResponsiveBreakpointsCache.enabled - added:
variable instance
- added:
class FileSystemKeyValueStorage(KeyValueStorage) - added:
constructor FileSystemKeyValueStorage(root_path) - added:
method FileSystemKeyValueStorage.clear() - added:
method FileSystemKeyValueStorage.delete(key) - added:
method FileSystemKeyValueStorage.get(key) - added:
method FileSystemKeyValueStorage.set(key, value)
- added:
class KeyValueStorage - added:
method KeyValueStorage.clear() - added:
method KeyValueStorage.delete(key) - added:
method KeyValueStorage.get(key) - added:
method KeyValueStorage.set(key, value)
- added:
function advance_iterator(it) - added:
function cldrange(*args, **kwargs) - added:
variable NotConnected - added:
variable advance_iterator - added:
variable cldrange - added:
variable httplib - added:
variable parse_qs - added:
variable parse_qsl - added:
variable quote_plus - added:
variable to_bytearray - added:
variable to_bytes - added:
variable to_string - added:
variable unquote - added:
variable urlencode - added:
variable urllib2 - added:
variable urlparse
- added:
class AlreadyExists(Error) - added:
class AuthorizationRequired(Error) - added:
class BadRequest(Error) - added:
class Error(Exception) - added:
class GeneralError(Error) - added:
class NotAllowed(Error) - added:
class NotFound(Error) - added:
class RateLimited(Error)
- changed:
constructor CloudinaryFileField(*args, **kwargs) → constructor CloudinaryFileField(options=…, autosave=…, *args, **kwargs) - changed:
constructor CloudinaryJsFileField(*args, **kwargs) → constructor CloudinaryJsFileField(attrs=…, options=…, autosave=…, *args, **kwargs) - changed:
method CloudinaryInput.render(name, value, attrs=…) → method CloudinaryInput.render(name, value, attrs=…, renderer=…) - added:
class CloudinaryUnsignedJsFileField(CloudinaryJsFileField) - added:
constructor CloudinaryUnsignedJsFileField(upload_preset, attrs=…, options=…, autosave=…, *args, **kwargs) - added:
field CloudinaryFileField.default_error_messages - added:
field CloudinaryFileField.my_default_error_messages - added:
field CloudinaryJsFileField.default_error_messages
- added:
class HttpClient - added:
constructor HttpClient(**options) - added:
field HttpClient.DEFAULT_HTTP_TIMEOUT - added:
method HttpClient.get_json(url)
- added:
function with_metaclass(meta, *bases) - added:
method CloudinaryField.from_db_value(value, expression, connection, *args, **kwargs) - added:
method CloudinaryField.parse_cloudinary_resource(value) - added:
method CloudinaryField.pre_save(model_instance, add) - added:
variable CLOUDINARY_FIELD_DB_RE
- added:
variable version
- added:
class MultipartParam(object) - added:
constructor MultipartParam(name, value=…, filename=…, filetype=…, filesize=…, fileobj=…, cb=…) - added:
function encode_and_quote(data) - added:
function encode_file_header(boundary, paramname, filesize, filename=…, filetype=…) - added:
function encode_string(boundary, name, value) - added:
function gen_boundary() - added:
function get_body_size(params, boundary) - added:
function get_headers(params, boundary) - added:
function multipart_encode(params, boundary=…, cb=…) - added:
method MultipartParam.encode(boundary) - added:
method MultipartParam.encode_hdr(boundary) - added:
method MultipartParam.get_size(boundary) - added:
method MultipartParam.iter_encode(boundary, blocksize=…) - added:
method MultipartParam.reset() - added:
static method MultipartParam.from_file(paramname, filename) - added:
static method MultipartParam.from_params(params)
- added:
class StreamingHTTPConnection(_StreamingHTTPMixin, httplib.HTTPConnection) - added:
class StreamingHTTPHandler(urllib2.HTTPHandler) - added:
class StreamingHTTPRedirectHandler(urllib2.HTTPRedirectHandler) - added:
class StreamingHTTPSConnection(_StreamingHTTPMixin, httplib.HTTPSConnection) - added:
class StreamingHTTPSHandler(urllib2.HTTPSHandler) - added:
field StreamingHTTPHandler.handler_order - added:
field StreamingHTTPRedirectHandler.handler_order - added:
field StreamingHTTPSHandler.handler_order - added:
function register_openers() - added:
method StreamingHTTPHandler.http_open(req) - added:
method StreamingHTTPHandler.http_request(req) - added:
method StreamingHTTPRedirectHandler.redirect_request(req, fp, code, msg, headers, newurl) - added:
method StreamingHTTPSHandler.https_open(req) - added:
method StreamingHTTPSHandler.https_request(req)
- added:
export AccountConfig - added:
export Role - added:
export access_keys - added:
export account_config - added:
export add_user_to_group - added:
export create_agent_account - added:
export create_cloud - added:
export create_sub_account - added:
export create_user - added:
export create_user_group - added:
export delete_access_key - added:
export delete_sub_account - added:
export delete_user - added:
export delete_user_group - added:
export generate_access_key - added:
export remove_user_from_group - added:
export reset_config - added:
export sub_account - added:
export sub_accounts - added:
export update_access_key - added:
export update_sub_account - added:
export update_user - added:
export update_user_group - added:
export user - added:
export user_group - added:
export user_group_users - added:
export user_groups - added:
export user_in_user_groups - added:
export users
- added:
class Role(object) - added:
field Role.ADMIN - added:
field Role.BILLING - added:
field Role.MASTER_ADMIN - added:
field Role.MEDIA_LIBRARY_ADMIN - added:
field Role.MEDIA_LIBRARY_USER - added:
field Role.REPORTS - added:
field Role.TECHNICAL_ADMIN - added:
function access_keys(sub_account_id, page_size=…, page=…, sort_by=…, sort_order=…, **options) - added:
function add_user_to_group(user_group_id, user_id, **options) - added:
function create_agent_account(email, agent_framework, agent_llm_model, agent_goal, sdk_framework=…, **options) - added:
function create_cloud(delivery_ips=…, email=…, agent_framework=…, agent_llm_model=…, agent_goal=…, sdk_framework=…, **options) - added:
function create_sub_account(name, cloud_name=…, custom_attributes=…, enabled=…, base_account=…, **options) - added:
function create_user(name, email, role, sub_account_ids=…, **options) - added:
function create_user_group(name, **options) - added:
function delete_access_key(sub_account_id, api_key=…, name=…, **options) - added:
function delete_sub_account(sub_account_id, **options) - added:
function delete_user(user_id, **options) - added:
function delete_user_group(user_group_id, **options) - added:
function generate_access_key(sub_account_id, name=…, enabled=…, **options) - added:
function remove_user_from_group(user_group_id, user_id, **options) - added:
function sub_account(sub_account_id, **options) - added:
function sub_accounts(enabled=…, ids=…, prefix=…, **options) - added:
function update_access_key(sub_account_id, api_key, name=…, enabled=…, dedicated_for=…, **options) - added:
function update_sub_account(sub_account_id, name=…, cloud_name=…, custom_attributes=…, enabled=…, **options) - added:
function update_user(user_id, name=…, email=…, role=…, sub_account_ids=…, **options) - added:
function update_user_group(user_group_id, name, **options) - added:
function user(user_id, **options) - added:
function user_group(user_group_id, **options) - added:
function user_group_users(user_group_id, **options) - added:
function user_groups(**options) - added:
function user_in_user_groups(user_id, **options) - added:
function users(user_ids=…, sub_account_id=…, status=…, prefix=…, last_login=…, from_date=…, to_date=…, **options) - added:
variable ACCESS_KEYS - added:
variable AGENTS_SUB_PATH - added:
variable CLOUDS_SUB_PATH - added:
variable SUB_ACCOUNTS_SUB_PATH - added:
variable USERS_SUB_PATH - added:
variable USER_GROUPS_SUB_PATH
- added:
class AccountConfig(BaseConfig) - added:
constructor AccountConfig() - added:
function account_config(**keywords) - added:
function reset_config() - added:
variable ACCOUNT_URI_SCHEME
- added:
class Search(object) - added:
constructor Search() - added:
field Search.ASSETS - added:
method Search.aggregate(value) - added:
method Search.as_dict() - added:
method Search.endpoint(endpoint) - added:
method Search.execute(**options) - added:
method Search.expression(value) - added:
method Search.fields(value) - added:
method Search.max_results(value) - added:
method Search.next_cursor(value) - added:
method Search.sort_by(field_name, direction=…) - added:
method Search.to_json() - added:
method Search.to_url(ttl=…, next_cursor=…, **options) - added:
method Search.ttl(ttl) - added:
method Search.with_field(value)
- added:
class SearchFolders(Search) - added:
constructor SearchFolders() - added:
field SearchFolders.FOLDERS
- changed:
function cloudinary_includes() → function cloudinary_includes(processing=…) - changed:
function cloudinary_tag(image, **options) → function cloudinary_tag(context, image, options_dict=…, **options) - added:
function cloudinary_direct_upload_field(field_name=…, request=…) - added:
function cloudinary_js_config() - added:
function cloudinary_url(context, source, options_dict=…, **options) - added:
variable CLOUDINARY_JS_CONFIG_PARAMS
- removed:
function build_custom_headers(headers) - removed:
function build_eager(transformations) - removed:
function build_upload_params(**options) - removed:
function now() - changed:
function call_api(action, params, **options) → function call_api(action, params, http_headers=…, return_error=…, unsigned=…, file=…, timeout=…, extra_headers=…, **options) - added:
function add_context(context, public_ids, **options) - added:
function call_cacheable_api(action, params, http_headers=…, return_error=…, unsigned=…, file=…, timeout=…, **options) - added:
function call_context_api(context, command, public_ids=…, **options) - added:
function create_archive(**options) - added:
function create_slideshow(**options) - added:
function create_zip(**options) - added:
function download_generated_sprite(tag=…, urls=…, **options) - added:
function download_multi(tag=…, urls=…, **options) - added:
function explode(public_id, **options) - added:
function generate_sprite(tag=…, urls=…, **options) - added:
function is_appengine_sandbox() - added:
function multi(tag=…, urls=…, **options) - added:
function remove_all_context(public_ids, **options) - added:
function remove_all_tags(public_ids, **options) - added:
function rename(from_public_id, to_public_id, **options) - added:
function unsigned_upload(file, upload_preset, **options) - added:
function update_metadata(metadata, public_ids, **options) - added:
function upload_image(file, **options) - added:
function upload_large(file, **options) - added:
function upload_large_part(file, **options) - added:
function upload_resource(file, **options) - added:
variable UPLOAD_LARGE_CHUNK_SIZE - added:
variable upload_options
- changed:
function api_sign_request(params_to_sign, api_secret) → function api_sign_request(params_to_sign, api_secret, algorithm=…, signature_version=…) - changed:
function smart_escape(string) → function smart_escape(source, unsafe=…) - added:
function api_string_to_sign(params_to_sign, signature_version=…) - added:
function archive_params(**options) - added:
function base64_encode_url(url) - added:
function base64url_decode(data) - added:
function base64url_encode(data) - added:
function base_api_url(path, **options) - added:
function bracketize_seq(params) - added:
function breakpoint_settings_mapper(breakpoint_settings) - added:
function build_custom_headers(headers) - added:
function build_distribution_domain(options) - added:
function build_eager(transformations) - added:
function build_list_of_dicts(val) - added:
function build_multi_and_sprite_params(**options) - added:
function build_single_eager(options) - added:
function build_upload_params(**options) - added:
function chain_transformations(options, transformations) - added:
function check_property_enabled(f) - added:
function cleanup_params(params) - added:
function cloudinary_api_download_url(action, params, **options) - added:
function cloudinary_scaled_url(source, width, transformation, options) - added:
function compute_hex_hash(s, algorithm=…) - added:
function download_archive_url(**options) - added:
function download_backedup_asset(asset_id, version_id, **options) - added:
function download_folder(folder_path, **options) - added:
function download_zip_url(**options) - added:
function encode_context(context) - added:
function encode_date_to_usage_api_format(date_obj) - added:
function encode_dict(arg) - added:
function encode_double_array(array) - added:
function encode_list(obj) - added:
function encode_unicode_url(url_str) - added:
function file_io_size(file_io) - added:
function finalize_resource_type(resource_type, type, url_suffix, use_root_path, shorten) - added:
function finalize_source(source, format, url_suffix) - added:
function fq_public_id(public_id, resource_type=…, type=…) - added:
function generate_auth_token(**options) - added:
function generate_responsive_breakpoints_string(breakpoints) - added:
function get_http_connector(conf, options) - added:
function handle_file_parameter(file, filename) - added:
function html_attrs(attrs, only=…) - added:
function is_fraction(width) - added:
function is_remote_url(file) - added:
function json_body(params, headers=…) - added:
function json_encode(value, sort_keys=…) - added:
function merge(*dict_args) - added:
function norm_auto_range_value(value) - added:
function norm_range_value(value) - added:
function normalize_context_value(value) - added:
function normalize_expression(expression) - added:
function normalize_params(params) - added:
function now() - added:
function patch_fetch_format(options) - added:
function private_download_url(public_id, format, **options) - added:
function process_conditional(conditional) - added:
function process_custom_function(custom_function) - added:
function process_custom_pre_function(custom_function) - added:
function process_fps(fps) - added:
function process_ki(ki) - added:
function process_layer(layer, layer_parameter) - added:
function process_params(params) - added:
function process_radius(param) - added:
function process_video_codec_param(param) - added:
function safe_cast(val, casting_fn, default=…) - added:
function sign_request(params, options) - added:
function split_range(range) - added:
function translate_if(match) - added:
function unique(collection, key=…) - added:
function unsigned_download_url_prefix(source, cloud_name, private_cdn, cdn_subdomain, secure_cdn_subdomain, cname, secure, secure_distribution) - added:
function verify_api_response_signature(public_id, version, signature, algorithm=…) - added:
function verify_notification(message, valid_for=…, algorithm=…) - added:
function verify_notification_signature(body, timestamp, signature, valid_for=…, algorithm=…) - added:
function zip_download_url(tag, **options) - added:
variable DEFAULT_RESPONSIVE_WIDTH_TRANSFORMATION - added:
variable FLOAT_RE - added:
variable IF_OPERATORS - added:
variable LONG_URL_SIGNATURE_LENGTH - added:
variable PREDEFINED_VARS - added:
variable PathLibPathType - added:
variable RANGE_RE - added:
variable RANGE_VALUE_RE - added:
variable REMOTE_URL_RE - added:
variable SHORT_URL_SIGNATURE_LENGTH - added:
variable SIGNATURE_SHA1 - added:
variable SIGNATURE_SHA256 - added:
variable VAR_NAME_RE - added:
variable replaceRE - added:
variable signature_algorithms - added:
variable unquote - added:
variable upload_params - added:
variable urlencode