public function presign()

in src/OSS/Signer/SignerV1.php [37:67]


    public function presign(RequestCore $request, Credentials $credentials, array &$options)
    {
        $headers = $request->request_headers;
        // Date
        $expiration = $options['expiration'];
        if (!isset($request->request_headers['Date'])) {
            $request->add_header('Date', gmdate('D, d M Y H:i:s \G\M\T'));
        }
        $parsed_url = parse_url($request->request_url);
        $queryString = isset($parsed_url['query']) ? $parsed_url['query'] : '';
        $query = array();
        if ($queryString !== null) {
            parse_str($queryString, $query);
        }
        // Credentials information
        if (!empty($credentials->getSecurityToken())) {
            $query["security-token"] = $credentials->getSecurityToken();
        }
        $method = strtoupper($request->method);
        $date = $expiration . "";
        $resourcePath = $this->getResourcePath($options);
        $stringToSign = $this->calcStringToSign($method, $date, $headers, $resourcePath, $query);
        $options['string_to_sign'] = $stringToSign;
        $signature = base64_encode(hash_hmac('sha1', $stringToSign, $credentials->getAccessKeySecret(), true));
        $query['OSSAccessKeyId'] = $credentials->getAccessKeyId();
        $query['Expires'] = $date;
        $query['Signature'] = $signature;
        $queryString = OssUtil::toQueryString($query);
        $parsed_url['query'] = $queryString;
        $request->request_url = OssUtil::unparseUrl($parsed_url);
    }