Utils::unixTimeNow(), ]; $params = array_merge($params, $additionalParams); ArrayUtils::convertBoolToIntStrings($params); return ArrayUtils::safeFilter($params); } /** * Serializes responsive breakpoints. * * @param array $breakpoints * * @return false|string|null * * @internal */ public static function serializeResponsiveBreakpoints($breakpoints) { if (! $breakpoints) { return null; } $breakpointsParams = []; foreach (ArrayUtils::build($breakpoints) as $breakpointSettings) { if ($breakpointSettings) { $transformation = ArrayUtils::get($breakpointSettings, 'transformation'); if ($transformation) { $breakpointSettings['transformation'] = self::serializeAssetTransformations($transformation); } $breakpointsParams[] = $breakpointSettings; } } return json_encode($breakpointsParams); } /** * @param array $parameters * * @return string * * @internal */ public static function serializeQueryParams($parameters = []) { return ArrayUtils::implodeAssoc( $parameters, self::QUERY_STRING_OUTER_DELIMITER, self::QUERY_STRING_INNER_DELIMITER ); } /** * Signs parameters of the request. * * @param array $parameters Parameters to sign. * @param string $secret The API secret of the cloud. * @param string $signatureAlgorithm Signature algorithm * * @return string The signature. * * @api */ public static function signParameters($parameters, $secret, $signatureAlgorithm = Utils::ALGO_SHA1) { $parameters = array_map(self::class . '::serializeSimpleApiParam', $parameters); ksort($parameters); $signatureContent = self::serializeQueryParams($parameters); return Utils::sign($signatureContent, $secret, false, $signatureAlgorithm); } /** * Adds signature and api_key to $parameters. * * @param array|null $parameters * @param CloudConfig $cloudConfig * * @internal */ public static function signRequest(&$parameters, $cloudConfig) { $parameters['signature'] = self::signParameters( $parameters, $cloudConfig->apiSecret, $cloudConfig->signatureAlgorithm ); $parameters['api_key'] = $cloudConfig->apiKey; } }