public function testProcessGetRequest() { $moduleManager = $this->getMockBuilder('Zend\ModuleManager\ModuleManager') ->disableOriginalConstructor() ->getMock(); $moduleManager->expects($this->any()) ->method('getLoadedModules') ->will($this->returnValue(array('ZFTest\Apigility\Admin\Model\TestAsset\Bar' => new BarModule))); $moduleResource = new ModuleModel($moduleManager, array(), array()); $controller = new SourceController($moduleResource); $request = new Request(); $request->setMethod('get'); $request->getQuery()->module = 'ZFTest\Apigility\Admin\Model\TestAsset\Bar'; $request->getQuery()->class = 'ZFTest\Apigility\Admin\Model\TestAsset\Bar\Module'; $controller->setRequest($request); $result = $controller->sourceAction(); $this->assertTrue($result->getVariable('source') != ''); $this->assertTrue($result->getVariable('file') != ''); $this->assertEquals($result->getVariable('module'), $request->getQuery()->module); $this->assertEquals($result->getVariable('class'), $request->getQuery()->class); }
/** * @return string */ public function getIdentifier($paramName) { $tokenValue = $this->request->getQuery($paramName, false); if ($tokenValue) { return $tokenValue; } return md5(uniqid(rand(), true)); }
/** @return null|mixed */ protected function getIdentity() { $accessToken = $this->request->getQuery('access_token', $this->request->getPost('access_token')); if ($accessToken === null) { return null; } $oAuthRequest = OAuth2RequestFactory::create($this->request); $accessTokenData = $this->oauthServer->getAccessTokenData($oAuthRequest); return $this->identity = $this->identityStorageAdapter->findByUsername($accessTokenData['user_id']); }
/** * Return logout text after user has logged out. * Shown only after the first page load if loggedOut param is true. * * @return string Logout message */ public function __invoke() { if ($this->authManager->userHasLoggedOut() && $this->request->getQuery('logout', false)) { if (!isset($this->session->logoutMessageShown) || !$this->session->logoutMessageShown) { $this->session->logoutMessageShown = true; return 'logout_success_message'; } } return false; }
/** * Convert a Zend\Http\Response in a PSR-7 response, using zend-diactoros * * @param ZendRequest $zendRequest * @return ServerRequest */ public static function fromZend(ZendRequest $zendRequest) { $body = new Stream('php://memory', 'wb+'); $body->write($zendRequest->getContent()); $headers = empty($zendRequest->getHeaders()) ? [] : $zendRequest->getHeaders()->toArray(); $query = empty($zendRequest->getQuery()) ? [] : $zendRequest->getQuery()->toArray(); $post = empty($zendRequest->getPost()) ? [] : $zendRequest->getPost()->toArray(); $files = empty($zendRequest->getFiles()) ? [] : $zendRequest->getFiles()->toArray(); $request = new ServerRequest([], self::convertFilesToUploaded($files), $zendRequest->getUriString(), $zendRequest->getMethod(), $body, $headers); $request = $request->withQueryParams($query); return $request->withParsedBody($post); }
public function findRegion($country, $query) { $request = new Request(); $request->setMethod(Request::METHOD_GET); foreach ($query as $key => $value) { $request->getQuery()->set($key, $value); } $request->getHeaders()->addHeaderLine('Accept', 'application/json'); switch ($country) { case 'CH': $request->setUri($this->config['url'] . '/ch-region'); break; default: $request->setUri($this->config['url'] . '/ch-region'); break; } $client = new Client(); $response = $client->send($request); $body = $response->getBody(); $result = json_decode($body, true); if ($result) { return $result['_embedded']['ch_region']; } /*echo "<textarea cols='100' rows='30' style='position:relative; z-index:10000; width:inherit; height:200px;'>"; print_r($body); echo "</textarea>"; die();*/ return null; }
/** * @param FacebookConfig $config */ public function __construct(array $config, Request $request) { $this->getParams = $request->getQuery()->toArray(); $error = $request->getQuery('error'); if (!empty($error)) { $this->isValid = false; return; } // if (!$config->isEnabled()) // { // throw new \Exception('Twitter is not enabled'); // } $this->consumerKey = $config['consumer_key']; $this->consumerSecret = $config['consumer_secret']; $this->returnUrlData = $config['return_url']; }
/** * Login * * @param \Zend\Http\Request $request * @param \Zend\Http\Response $response * @return null|array|\Zend\Http\Response */ public function login(array $options, HttpRequest $request, HttpResponse $response = null) { if (null === $response) { $response = new PhpResponse(); } $session = $this->getSessionContainer(); $code = $request->getQuery('code'); if (empty($options['redirect_uri'])) { $options['redirect_uri'] = $request->getUri()->getScheme() . '://' . $this->getSiteInfo()->getFulldomain() . $request->getRequestUri(); } if (empty($code)) { $session['state'] = String::generateRandom(32); $session['redirect_uri'] = $options['redirect_uri']; $response->setContent('')->setStatusCode(302)->getHeaders()->clearHeaders()->addHeaderLine('Location', static::DIALOG_URI . '?' . http_build_query(array('client_id' => $options['client_id'], 'redirect_uri' => $options['redirect_uri'], 'state' => $session['state'], 'scope' => 'email'))); if ($response instanceof PhpResponse) { $response->send(); exit; } else { return $response; } } $state = $request->getQuery('state'); if (empty($session['state']) || $state !== $session['state']) { return null; } $client = $this->getHttpClient(); $params = null; @parse_str($client->setMethod('GET')->setUri(static::ACCESS_URI)->setParameterGet(array('client_id' => $options['client_id'], 'redirect_uri' => $session['redirect_uri'], 'client_secret' => $options['client_secret'], 'code' => $code))->send()->getBody(), $params); unset($session['state']); unset($session['redirect_uri']); if (empty($params['access_token'])) { return null; } return @json_decode($client->setMethod('GET')->setUri(static::API_URI)->setParameterGet(array('access_token' => $params['access_token']))->send()->getBody(), true); }
/** * Prepare a Zend Request by Operation with $parameters * * @param Operation $operation * @param array $parameters * @param int $options BitMask of options to skip or something else * @return Request * @throws \InvalidArgumentException * @throws \RuntimeException */ public function makeRequestByOperation(Operation $operation, array $parameters = [], $options = 0) { $request = new Request(); $path = $operation->path; if ($operation->parameters) { foreach ($operation->parameters as $parameter) { if (isset($parameters[$parameter->name])) { switch ($parameter->in) { case 'path': $path = str_replace('{' . $parameter->name . '}', $parameters[$parameter->name], $path); break; case 'query': $request->getQuery()->set($parameter->name, $parameters[$parameter->name]); break; case 'formData': $request->getPost()->set($parameter->name, $parameters[$parameter->name]); break; default: throw new RuntimeException(sprintf('Parameter "%s" with ->in = "%s" is not supported', $parameter->parameter, $parameter->in)); } } elseif ($parameter->required && !($options & SwaggerWrapper::SKIP_REQUIRED)) { throw new InvalidArgumentException(sprintf('Parameter "%s" is required, please pass value for this in $parameters', $parameter->name)); } } } $request->setUri($path); $request->setMethod($operation->method); return $request; }
public function testToUriStringMultiQueryOverwrite() { $request = new Request(); $request->setUri('http://google.ca/test.html?foo=bar'); $request->getQuery()->set('foo', 'value'); $this->assertEquals('http://google.ca/test.html?foo=value', RequestUtils::toUriString($request)); }
public function __invoke($name = null, $params = [], $options = [], $reuseMatchedParams = false) { if (null === $this->router) { throw new Exception\RuntimeException('No RouteStackInterface instance provided'); } if (3 === func_num_args() && is_bool($options)) { $reuseMatchedParams = $options; $options = []; } // Inherit query parameters if ($reuseMatchedParams) { $providedQueryParams = isset($options['query']) ? $options['query'] : []; $currentQueryParams = $this->request->getQuery()->toArray(); $options['query'] = array_merge($currentQueryParams, $providedQueryParams); } return parent::__invoke($name, $params, $options, $reuseMatchedParams); }
public function testQueryAccessTokenProxiesOAuthServer() { $token = ['user_id' => 'test']; $this->setupMockOAuth2Server($token); $this->request->getQuery()->set('access_token', 'TOKEN'); $identity = $this->listener->__invoke($this->mvcAuthEvent); $this->assertIdentityMatchesToken($token, $identity); }
public static function create(HttpRequest $request) { $queryParams = $request->getQuery()->toArray(); $postParams = $request->getPost()->toArray(); $files = $request->getFiles()->toArray(); $cookies = ($c = $request->getCookie()) ? [$c] : []; return new OAuth2Request($queryParams, $postParams, [], $cookies, $files, $_SERVER); }
public function setUp() { $request = new Request(); $request->getQuery()->fromArray(array('all' => 'query', 'query_and_post' => 'query')); $request->getPost()->fromArray(array('all' => 'post', 'query_and_post' => 'post', 'post_only' => 'post')); $this->request = $request; $this->routeMatch = new RouteMatch(array('all' => 'route')); }
/** * Get an array of hidden filters * * @param string $searchClassId Active search class * @param bool $returnDefaultsIfEmpty Whether to return default tab filters if * no filters are currently active * @param bool $ignoreCurrentRequest Whether to ignore hidden filters in * the current request * * @return array */ public function getHiddenFilters($searchClassId, $returnDefaultsIfEmpty = true, $ignoreCurrentRequest = false) { $filters = $ignoreCurrentRequest ? null : $this->request->getQuery('hiddenFilters'); if (null === $filters && $returnDefaultsIfEmpty) { $filters = $this->getDefaultTabHiddenFilters($searchClassId); } return null === $filters ? [] : $this->parseFilters($searchClassId, $filters); }
/** * @depends testProcessPostRequestReturnsToken */ public function testProcessGetRequestReturnsFile(array $data) { $request = new Request(); $request->setMethod('get'); $request->getQuery()->set('format', $data['format']); $request->getQuery()->set('token', $data['token']); $this->controller->setRequest($request); $package = sys_get_temp_dir() . '/apigility_' . $data['token'] . '.' . $data['format']; $content = file_get_contents($package); $response = $this->controller->indexAction(); $this->assertTrue($response->isSuccess()); $this->assertEquals($content, $response->getRawBody()); $this->assertEquals('application/octet-stream', $response->getHeaders()->get('Content-Type')->getFieldValue()); $this->assertEquals(strlen($content), $response->getHeaders()->get('Content-Length')->getFieldValue()); // Removal of file only happens during destruct $this->controller->__destruct(); $this->assertFalse(file_exists($package)); }
public function setUp() { $request = new Request(); $request->getQuery()->fromArray(array('all' => 'query', 'query_and_post' => 'query')); $request->getPost()->fromArray(array('all' => 'post', 'query_and_post' => 'post', 'post_only' => 'post')); $routeMatch = new RouteMatch(array('all' => 'route')); $mvcEvent = new MvcEvent(); $mvcEvent->setRouteMatch($routeMatch); $mock = $this->getMock('Zend\\Mvc\\Controller\\AbstractController'); $mock->expects($this->once())->method('getRequest')->will($this->returnValue($request)); $mock->expects($this->once())->method('getEvent')->will($this->returnValue($mvcEvent)); $this->plugin = new FromLegacyParams(); $this->plugin->setController($mock); }
public function testParameterRetrievalDefaultValue() { $request = new Request(); $p = new \Zend\Stdlib\Parameters(array('foo' => 'bar')); $request->setQuery($p); $request->setPost($p); $request->setFiles($p); $default = 15; $this->assertSame($default, $request->getQuery('baz', $default)); $this->assertSame($default, $request->getPost('baz', $default)); $this->assertSame($default, $request->getFiles('baz', $default)); $this->assertSame($default, $request->getHeaders('baz', $default)); $this->assertSame($default, $request->getHeader('baz', $default)); }
/** * (non-PHPdoc) * @see Tinebase_Server_Plugin_Interface::getServer() */ public static function getServer(\Zend\Http\Request $request) { /**************************** WebDAV / CardDAV / CalDAV API ********************************** * RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ * RewriteRule ^/$ /index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA] * * RewriteRule ^/addressbooks /index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA] * RewriteRule ^/calendars /index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA] * RewriteRule ^/principals /index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA] * RewriteRule ^/webdav /index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA] */ if ($request->getQuery('frontend') === 'webdav') { return new Tinebase_Server_WebDAV(); } }
public function testRequestAllowsSettingOfParameterContainer() { $request = new Request(); $p = new \Zend\Stdlib\Parameters(); $request->setQuery($p); $request->setPost($p); $request->setFile($p); $request->setServer($p); $request->setEnv($p); $this->assertSame($p, $request->getQuery()); $this->assertSame($p, $request->getPost()); $this->assertSame($p, $request->getFile()); $this->assertSame($p, $request->getServer()); $this->assertSame($p, $request->getEnv()); }
protected function get($url, $data, $options = array()) { $request = new Request(); $request->setUri($url); $request->setMethod('GET'); $request->getQuery()->fromArray($data); $client = new Client(); $client->setOptions($options); $response = $client->dispatch($request); try { $result = Json::decode($response->getBody(), Json::TYPE_ARRAY); return $result; } catch (RuntimeException $e) { return $response->getBody(); } }
/** * Creates and configures a HTTP request based on the provided base URL and the Perun request object. * * @param string $baseUrl * @param PerunRequest $perunRequest * @param HttpRequest $httpRequest * @return \Zend\Http\Request */ public function createRequest($baseUrl, PerunRequest $perunRequest) { /* @var $httpRequest \Zend\Http\Request */ $httpRequest = new HttpRequest(); $httpRequest->setUri($this->constructUrl($baseUrl, $perunRequest)); if ($perunRequest->isChangeState()) { $serializedParams = $this->serializer->serialize($perunRequest->getPayload()); $httpRequest->setMethod(HttpRequest::METHOD_POST); $httpRequest->setContent($serializedParams); $httpRequest->getHeaders()->addHeaders(array('Content-Type' => $this->serializer->getMimeType())); } else { $params = $perunRequest->getPayload()->getParams(); $httpRequest->setMethod(HttpRequest::METHOD_GET); $httpRequest->getQuery()->fromArray($params); } return $httpRequest; }
/** * HTTP GET METHOD (static) * * @param string $url * @param array $query * @param array $headers * @param mixed $body * @return Response|bool */ public static function get($url, $query = array(), $headers = array(), $body = null) { if (empty($url)) { return false; } $request = new Request(); $request->setUri($url); $request->setMethod(Request::METHOD_GET); if (!empty($query) && is_array($query)) { $request->getQuery()->fromArray($query); } if (!empty($headers) && is_array($headers)) { $request->getHeaders()->addHeaders($headers); } if (!empty($body)) { $request->setBody($body); } return static::getStaticClient()->send($request); }
/** * Attempt to authenticate the current request. * * @param Request $request * @param Response $response * @param MvcAuthEvent $mvcAuthEvent * @return false|Identity\IdentityInterface False on failure, IdentityInterface * otherwise */ public function authenticate(Request $request, Response $response, MvcAuthEvent $mvcAuthEvent) { $oauth2request = new OAuth2Request($request->getQuery()->toArray(), $request->getPost()->toArray(), [], $request->getCookie() ? $request->getCookie()->getArrayCopy() : [], $request->getFiles() ? $request->getFiles()->toArray() : [], method_exists($request, 'getServer') ? $request->getServer()->toArray() : $_SERVER, $request->getContent(), $request->getHeaders()->toArray()); // Failure to validate if (!$this->oauth2Server->verifyResourceRequest($oauth2request)) { $oauth2Response = $this->oauth2Server->getResponse(); $status = $oauth2Response->getStatusCode(); // 401 or 403 mean invalid credentials or unauthorized scopes; report those. if (in_array($status, [401, 403], true) && null !== $oauth2Response->getParameter('error')) { return $this->mergeOAuth2Response($status, $response, $oauth2Response); } // Merge in any headers; typically sets a WWW-Authenticate header. $this->mergeOAuth2ResponseHeaders($response, $oauth2Response->getHttpHeaders()); // Otherwise, no credentials were present at all, so we just return a guest identity. return new Identity\GuestIdentity(); } $token = $this->oauth2Server->getAccessTokenData($oauth2request); $identity = new Identity\AuthenticatedIdentity($token); $identity->setName($token['user_id']); return $identity; }
/** * @param \Zend\Http\Request $request */ public function it_should_fall_back_on_query_token_when_no_authentication_header_is_available($request) { $request->getHeader('Authorization')->willReturn(null); $request->getQuery('token', [])->willReturn(['token' => 'user_token_id', 'auth' => 'encrypted_auth']); $this->setRequest($request); $this->createToken()->shouldReturnAnInstanceOf('Phpro\\MvcAuthToken\\Token'); }
/** * Handles all GET requests to a web service * * @param string $path Path * @param array $parms Array of GET parameters * @param string $type Type of a request ("xml"|"json") * @return mixed decoded response from web service * @throws Zend_Service_Delicious_Exception */ public function makeRequest($path, array $params = array(), $type = 'xml') { // if previous request was made less then 1 sec ago // wait until we can make a new request $timeDiff = microtime(true) - self::$lastRequestTime; if ($timeDiff < 1) { usleep((1 - $timeDiff) * 1000000); } $this->httpClient->setAuth($this->authUname, $this->authPass); $this->httpClient->setOptions(array('ssltransport' => 'ssl')); $request = new HttpRequest(); $request->setMethod(HttpRequest::METHOD_GET); switch ($type) { case 'xml': $request->setUri(self::API_URI); break; case 'json': $params['raw'] = true; $request->setUri(self::JSON_URI); break; default: throw new Exception('Unknown request type'); } self::$lastRequestTime = microtime(true); $request->getQuery()->fromArray($params); $response = $this->httpClient->send($request); if (!$response->isSuccess()) { throw new Exception("Http client reported an error: '{$response->getReasonPhrase()}'"); } $responseBody = $response->getBody(); switch ($type) { case 'xml': $dom = new \DOMDocument(); if (!@$dom->loadXML($responseBody)) { throw new Exception('XML Error'); } return $dom; case 'json': return \Zend\Json\Decoder::decode($responseBody); } }
/** * Does the request represent a collection? * * @param string $serviceName * @param array $data * @param RouteMatch $matches * @param HttpRequest $request * @return bool */ protected function isCollection($serviceName, $data, RouteMatch $matches, HttpRequest $request) { if (!array_key_exists($serviceName, $this->restControllers)) { return false; } if ($request->isPost() && (empty($data) || ArrayUtils::isHashTable($data))) { return false; } $identifierName = $this->restControllers[$serviceName]; if ($matches->getParam($identifierName)) { return false; } return null === $request->getQuery($identifierName, null); }
/** * Makes and HTTP GET request to given $path with $options. * HTTP Response is first validated, then returned. * * @param string $path * @param array $options * @return Response * @throws Exception\RuntimeException on failure * @access protected */ protected function makeRequest($path, $options = array()) { $httpClient = $this->getHttpClient(); $httpClient->resetParameters(); $request = new HttpRequest(); $request->setUri($path); $request->getQuery()->fromArray($options); $response = $httpClient->send($request); self::checkResponse($response); return $response; }
public function testRemoveAuthenticationMapRequest() { $request = new Request(); $request->setMethod('delete'); $request->getHeaders()->addHeaderLine('Accept', 'application/vnd.apigility.v2+json'); $request->getHeaders()->addHeaderLine('Content-Type', 'application/json'); $request->getQuery()->set('version', 1); $this->controller->setRequest($request); $params = ['name' => 'Status']; $this->routeMatch = new RouteMatch($params); $this->routeMatch->setMatchedRouteName('zf-apigility/api/module/authentication'); $this->event->setRouteMatch($this->routeMatch); $result = $this->controller->mappingAction(); $this->assertInstanceOf('Zend\\Http\\PhpEnvironment\\Response', $result); $this->assertEquals(204, $result->getStatusCode()); }
/** * @group 3711 */ public function testPartRouteMarkedAsMayTerminateButWithQueryRouteChildWillMatchChildRoute() { $options = array('route' => array('type' => 'Zend\\Mvc\\Router\\Http\\Literal', 'options' => array('route' => '/resource', 'defaults' => array('controller' => 'ResourceController', 'action' => 'resource'))), 'route_plugins' => new RoutePluginManager(), 'may_terminate' => true, 'child_routes' => array('query' => array('type' => 'Zend\\Mvc\\Router\\Http\\Query', 'options' => array('defaults' => array('query' => 'string'))))); $route = Part::factory($options); $request = new Request(); $request->setUri('http://example.com/resource?foo=bar'); $query = new Parameters(array('foo' => 'bar')); $request->setQuery($query); $query = $request->getQuery(); $match = $route->match($request); $this->assertInstanceOf('Zend\\Mvc\\Router\\RouteMatch', $match); $this->assertEquals('string', $match->getParam('query')); $this->assertEquals('bar', $match->getParam('foo')); }