/** * Sign given request with [[signatureMethod]]. * @param \yii\httpclient\Request $request request instance. * @param OAuthToken|null $token OAuth token to be used for signature, if not set [[accessToken]] will be used. * @since 2.1 this method is public. */ public function signRequest($request, $token = null) { $params = $request->getData(); if (isset($params['oauth_signature_method'])) { // avoid double sign of request return; } if (empty($params)) { $params = $this->generateCommonRequestParams(); } else { $params = array_merge($this->generateCommonRequestParams(), $params); } $url = $request->getFullUrl(); $signatureMethod = $this->getSignatureMethod(); $params['oauth_signature_method'] = $signatureMethod->getName(); $signatureBaseString = $this->composeSignatureBaseString($request->getMethod(), $url, $params); $signatureKey = $this->composeSignatureKey($token); $params['oauth_signature'] = $signatureMethod->generateSignature($signatureBaseString, $signatureKey); $request->setData($params); if ($this->authorizationHeaderMethods === null || in_array(strtoupper($request->getMethod()), array_map('strtoupper', $this->authorizationHeaderMethods), true)) { $authorizationHeader = $this->composeAuthorizationHeader($params); if (!empty($authorizationHeader)) { $request->addHeaders($authorizationHeader); } } }
/** * @param Client $client * @return $this */ protected function _httpAuth(Request $request) { if ($this->httpAuthLogin && $this->httpAuthPassword) { $code = base64_encode("{$this->httpAuthLogin}:{$this->httpAuthPassword}"); $request->addHeaders(['Authorization' => 'Basic ' . $code]); } return $this; }