/** * (non-PHPdoc) * @see Tinebase_Server_Plugin_Interface::getServer() */ public static function getServer(\Zend\Http\Request $request) { /**************************** JSON API *****************************/ if ($request->getHeaders('X-TINE20-REQUEST-TYPE') && $request->getHeaders('X-TINE20-REQUEST-TYPE')->getFieldValue() === 'JSON' || $request->getHeaders('CONTENT-TYPE') && substr($request->getHeaders('CONTENT-TYPE')->getFieldValue(), 0, 16) === 'application/json' || $request->getPost('requestType') === 'JSON' || $request->getHeaders('ACCESS-CONTROL-REQUEST-METHOD')) { return new Tinebase_Server_Json(); } }
public function testProcessPostRequestReturnsToken() { $request = new Request(); $request->setMethod('post'); $parameters = new ParameterDataContainer(); $parameters->setBodyParam('format', 'ZIP'); $event = new MvcEvent(); $event->setParam('ZFContentNegotiationParameterData', $parameters); $request->getHeaders()->addHeaderLine('Content-Type', 'application/json'); $request->getHeaders()->addHeaderLine('Accept', 'application/json'); $this->controller->setRequest($request); $this->controller->setEvent($event); $cwd = getcwd(); chdir(__DIR__ . '/TestAsset'); $result = $this->controller->indexAction(); chdir($cwd); $this->assertInternalType('array', $result); $this->assertTrue(isset($result['token'])); $this->assertTrue(isset($result['format'])); $package = sys_get_temp_dir() . '/apigility_' . $result['token'] . '.' . $result['format']; $this->assertTrue(file_exists($package)); return $result; }
public function testFormPluginIsNotCalledIfAjaxRequest() { $headers = $this->request->getHeaders(); $headers->addHeaderLine('X_REQUESTED_WITH', 'XMLHttpRequest'); $this->target->form('elements'); $result = $this->target->getResult(); $this->assertEmpty($result); }
/** * 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); }
/** * (non-PHPdoc) * @see Tinebase_Server_Plugin_Interface::getServer() */ public static function getServer(\Zend\Http\Request $request) { /**************************** SNOM API *****************************/ if ($request->getHeaders('USER-AGENT') && preg_match('/^Mozilla\\/4\\.0 \\(compatible; (snom...)\\-SIP (\\d+\\.\\d+\\.\\d+)/i', $request->getHeaders('USER-AGENT')->getFieldValue())) { return new Voipmanager_Server_Snom(); /**************************** ASTERISK API *****************************/ } else { if ($request->getHeaders('USER-AGENT') && $request->getHeaders('USER-AGENT')->getFieldValue() === 'asterisk-libcurl-agent/1.0') { return new Voipmanager_Server_Asterisk(); } } }
public function testOnRenderErrorCreatesAnApiProblemResponse() { $response = new Response(); $request = new Request(); $request->getHeaders()->addHeaderLine('Accept', 'application/json'); $event = new MvcEvent(); $event->setError(Application::ERROR_EXCEPTION); $event->setRequest($request); $event->setResponse($response); $this->listener->onRenderError($event); $this->assertTrue($event->propagationIsStopped()); $this->assertSame($response, $event->getResponse()); $this->assertEquals(406, $response->getStatusCode()); $headers = $response->getHeaders(); $this->assertTrue($headers->has('Content-Type')); $this->assertEquals('application/problem+json', $headers->get('content-type')->getFieldValue()); $content = json_decode($response->getContent(), true); $this->assertArrayHasKey('status', $content); $this->assertArrayHasKey('title', $content); $this->assertArrayHasKey('describedBy', $content); $this->assertArrayHasKey('detail', $content); $this->assertEquals(406, $content['status']); $this->assertEquals('Not Acceptable', $content['title']); $this->assertContains('www.w3.org', $content['describedBy']); $this->assertContains('accept', $content['detail']); }
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; }
function PlanJSONManager($action, $url, $requestjson, $uid) { $request = new Request(); $request->getHeaders()->addHeaders(array('Content-Type' => 'application/json; charset=UTF-8')); //$url=""; try { $request->setUri($url); $request->setMethod($action); $client = new Client(); if ($action == 'PUT' || $action == 'POST') { $client->setUri($url); $client->setMethod($action); $client->setRawBody($requestjson); $client->setEncType('application/json'); $response = $client->send(); return $response; } else { $response = $client->dispatch($request); //var_dump(json_decode($response->getBody(),true)); return $response; } } catch (\Exception $e) { $e->getTrace(); } return null; }
public function persist(HelpReport $report) { $data = ['description' => 'Report generated via Ocramius CLI', 'files' => ['report.json' => ['content' => json_encode($report)]], 'public' => false]; $request = new Request(); $request->setUri('https://api.github.com/gists'); $request->setContent(json_encode($data)); $request->setMethod(Request::METHOD_POST); $request->getHeaders()->addHeader(ContentType::fromString('Content-Type: application/json')); $request->getHeaders()->addHeaderLine('X-Requested-With: Ocramius CLI'); $response = $this->client->send($request); if (!$response->isSuccess()) { throw new \UnexpectedValueException('Could not obtain a valid GIST from the github API'); } $response = json_decode($response->getBody(), true); return $response['html_url']; }
public function call($params = null) { $request = new Request(); $request->getHeaders()->addHeaders(array('Accept' => 'application/json')); if (!is_null($this->bearer_token)) { $request->getHeaders()->addHeaders(array('Authorization' => $this->bearer_token)); } $request->setUri($this->endpoint); $request->setMethod($this->method); if (!is_null($params)) { $request->getPost()->fromArray($params); } $client = new Client($this->endpoint, array('adapter' => 'Zend\\Http\\Client\\Adapter\\Curl')); $response = $client->dispatch($request); return Json::decode($response->getBody(), Json::TYPE_ARRAY); }
/** * @inheritdoc */ public function request(array $params) { try { $request = new Request(); $headers = $request->getHeaders(); $request->setUri($params['url']); $headers->addHeaderLine('Accept-Encoding', 'gzip,deflate'); if ($params['config']->isAuthenticationPossible() === true && $this->option['keys']['public'] !== null && $this->option['keys']['private'] !== null) { /** * Note: DATE_RFC1123 my not be RFC 1123 compliant, depending on your platform. * @link http://www.php.net/manual/de/function.gmdate.php#25031 */ $date = gmdate('D, d M Y H:i:s \\G\\M\\T'); $path = $request->getUri()->getPath(); $headers->addHeaderLine('Date', $date); $headers->addHeaderLine('Authorization', $this->signRequest('GET', $date, $path)); } if (isset($params['lastmodified'])) { $headers->addHeaderLine('If-Modified-Since', $params['lastmodified']); } $response = $this->client->send($request); $body = $response->getBody(); $headers = null; if ($this->option['responseheader']) { $headers = $response->getHeaders()->toArray(); $this->lastResponseHeaders = $headers; } } catch (\Exception $e) { throw new ClientException('Client exception catched, use getPrevious().', 0, $e); } return $this->createResponse($params['config']->isJson(), $response->getStatusCode(), $body, $headers); }
public function callServer($method, $params) { // Get the URI and Url Elements $apiUrl = $this->generateUrl($method); $requestUri = $apiUrl['uri']; // Convert the params to something MC can understand $params = $this->processParams($params); $params["apikey"] = $this->getConfig('apiKey'); $request = new Request(); $request->setMethod(Request::METHOD_POST); $request->setUri($requestUri); $request->getHeaders()->addHeaders(array('Host' => $apiUrl['host'], 'User-Agent' => 'MCAPI/' . $this->getConfig('apiVersion'), 'Content-type' => 'application/x-www-form-urlencoded')); $client = new Client(); $client->setRequest($request); $client->setParameterPost($params); $result = $client->send(); if ($result->getHeaders()->get('X-MailChimp-API-Error-Code')) { $error = unserialize($result->getBody()); if (isset($error['error'])) { throw new MailchimpException('The mailchimp API has returned an error (' . $error['code'] . ': ' . $error['error'] . ')'); return false; } else { throw new MailchimpException('There was an unspecified error'); return false; } } return $result->getBody(); }
public function testAtomAcceptHeaderSelectsFeedStrategy() { $request = new HttpRequest(); $request->getHeaders()->addHeaderLine('Accept', 'application/atom+xml'); $this->event->setRequest($request); $result = $this->strategy->selectRenderer($this->event); $this->assertSame($this->renderer, $result); }
private function preparePostRequest($post) { $postRequest = new Request(); $postRequest->setMethod(Request::METHOD_POST); $postRequest->setPost($post); $postRequest->setUri($this->url); $postRequest->getHeaders()->addHeaders(['Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8']); return $postRequest; }
public function createAjaxRequestWithSpecificPostData($postData) { $request = new Request(); $request->getHeaders()->addHeaders(['X_REQUESTED_WITH' => 'XMLHttpRequest']); $parameters = new \Zend\Stdlib\Parameters(); $parameters->fromArray($postData); $request->setPost($parameters); return $request; }
public function testChangeMethodIfHttpMethodOverrideHeaderIsPresent() { $event = new MvcEvent(); $request = new HttpRequest(); $request->getHeaders()->addHeaderLine('X-HTTP-Method-Override', 'DELETE'); $event->setRequest($request); $this->httpMethodOverrideListener->overrideHttpMethod($event); $this->assertEquals('DELETE', $event->getRequest()->getMethod()); }
public function testJavascriptAcceptHeaderSelectsJsonStrategyAndSetsJsonpCallback() { $request = new HttpRequest(); $request->getHeaders()->addHeaderLine('Accept', 'application/javascript'); $request->setQuery(new Parameters(array('callback' => 'foo'))); $this->event->setRequest($request); $result = $this->strategy->selectRenderer($this->event); $this->assertSame($this->renderer, $result); $this->assertTrue($result->hasJsonpCallback()); }
public function testDetectLanguageWithUserWithoutSettings() { $expected = 'es'; $request = new Request(); $request->getHeaders()->addHeaderline('Accept-Language', $expected); $settings = new \stdClass(); $user = $this->getMockBuilder(User::class)->getMock(); $user->expects($this->once())->method('getSettings')->with($this->equalTo('Core'))->willReturn($settings); $this->assertSame($expected, $this->localeService->detectLanguage($request, $user)); }
public function testViewModelAcceptHeaderSelectsFeedStrategyAndSetsFeedtype() { $this->event->setModel(new FeedModel()); $request = new HttpRequest(); $request->getHeaders()->addHeaderLine('Accept', 'application/atom+xml'); $this->event->setRequest($request); $result = $this->strategy->selectRenderer($this->event); $this->assertSame($this->renderer, $result); $this->assertSame('atom', $result->getFeedType()); }
/** * {@inheritdoc} * @see \InoPerunApi\Client\Authenticator\AuthenticatorInterface::configureRequest() */ public function configureRequest(\Zend\Http\Request $httpRequest) { $headers = array(); $authorizationString = $this->getOption(self::OPT_AUTHORIZATION, null, true); $headers[] = array('Authorization' => $authorizationString); if (($cookieName = $this->getOption(self::OPT_COOKIE_NAME)) && ($cookieValue = $this->getOption(self::OPT_COOKIE_VALUE))) { $headers[] = new Cookie(array($cookieName => $cookieValue)); } $httpRequest->getHeaders()->addHeaders($headers); }
/** * @dataProvider requestMethodsWithRequestBodies */ public function testBodyAccessTokenProxiesOAuthServer($method) { $token = array('user_id' => 'test'); $this->setupMockOAuth2Server($token); $this->request->setMethod($method); $this->request->getHeaders()->addHeaderLine('Content-Type', 'application/x-www-form-urlencoded'); $this->request->getPost()->set('access_token', 'TOKEN'); $identity = $this->listener->__invoke($this->mvcAuthEvent); $this->assertIdentityMatchesToken($token, $identity); }
public function testNotOverride() { $request = new Request(); $request->setMethod('POST'); $request->getHeaders()->addHeaderLine(HttpMethodOverrideService::OVERRIDE_HEADER, 'GET'); $event = new MvcEvent(); $event->setRequest($request); $this->listener->override($event); $this->assertSame('POST', $request->getMethod()); }
/** * Check if the HTTP request is a CORS request by checking if the Origin header is present and that the * request URI is not the same as the one in the Origin * * @param HttpRequest $request * @return bool */ public function isCorsRequest(HttpRequest $request) { $headers = $request->getHeaders(); if (!$headers->has('Origin')) { return false; } $originUri = UriFactory::factory($headers->get('Origin')->getFieldValue()); $requestUri = $request->getUri(); // According to the spec (http://tools.ietf.org/html/rfc6454#section-4), we should check host, port and scheme return !($originUri->getHost() === $requestUri->getHost()) || !($originUri->getPort() === $requestUri->getPort()) || !($originUri->getScheme() === $requestUri->getScheme()); }
public function testOauth2RequestIncludesHeaders() { $this->request->getHeaders()->addHeaderLine('Authorization', 'Bearer TOKEN'); $server = $this->getMockBuilder('OAuth2\\Server')->disableOriginalConstructor()->getMock(); $server->expects($this->atLeastOnce())->method('verifyResourceRequest')->with($this->callback(function (OAuth2Request $request) { return $request->headers('Authorization') === 'Bearer TOKEN'; }))->willReturn(true); $server->expects($this->atLeastOnce())->method('getAccessTokenData')->with($this->anything())->willReturn(['user_id' => 'TOKEN']); $this->listener->attach(new OAuth2Adapter($server)); $this->listener->__invoke($this->mvcAuthEvent); }
/** * Builds a request object for the given API path * * @param string $path * @return Zend\Http\Request */ protected function buildRequest($path) { $request = new Request(); $request->setUri('https://api2.dynect.net/REST' . $path); $headers = $request->getHeaders(); $headers->addHeaderLine('Content-Type', 'application/json'); $headers->addHeaderLine('API-Version', '3.5.8'); if ($this->token) { $headers->addHeaderLine('Auth-Token', $this->token); } return $request; }
public function testAddAuthorizationToVaryIfNotExists() { $request = new HttpRequest(); $request->getHeaders()->addHeaderLine('Authorization', 'abc'); $mvcEvent = new MvcEvent(); $mvcEvent->setRequest($request); $response = new HttpResponse(); $mvcEvent->setResponse($response); $listener = new AuthorizationVaryListener(); $listener->alterVaryHeader($mvcEvent); $this->assertTrue($response->getHeaders()->has('Vary')); $this->assertEquals('Authorization', $response->getHeaders()->get('Vary')->getFieldValue()); }
public function testProcessPutRequest() { $currentDir = getcwd(); $tmpDir = sys_get_temp_dir() . "/" . uniqid(__NAMESPACE__ . '_'); mkdir($tmpDir); mkdir("{$tmpDir}/module/Foo", 0775, true); mkdir("{$tmpDir}/config"); file_put_contents("{$tmpDir}/config/application.config.php", '<' . '?php return array(\'modules\'=>array(\'Foo\'));'); file_put_contents("{$tmpDir}/module/Foo/Module.php", "<" . "?php\n\nnamespace Foo;\n\nclass Module\n{\n}"); chdir($tmpDir); require 'module/Foo/Module.php'; $moduleManager = $this->getMockBuilder('Zend\\ModuleManager\\ModuleManager')->disableOriginalConstructor()->getMock(); $moduleManager->expects($this->any())->method('getLoadedModules')->will($this->returnValue(['Foo' => new \Foo\Module()])); $moduleResource = new ModuleModel($moduleManager, [], []); $controller = new ModuleCreationController($moduleResource); $request = new Request(); $request->setMethod('put'); $request->getHeaders()->addHeaderLine('Accept', 'application/json'); $request->getHeaders()->addHeaderLine('Content-Type', 'application/json'); $parameters = new ParameterDataContainer(); $parameters->setBodyParam('module', 'Foo'); $event = new MvcEvent(); $event->setParam('ZFContentNegotiationParameterData', $parameters); $plugins = new PluginManager(); $plugins->setInvokableClass('bodyParam', 'ZF\\ContentNegotiation\\ControllerPlugin\\BodyParam'); $controller->setRequest($request); $controller->setEvent($event); $controller->setPluginManager($plugins); $result = $controller->apiEnableAction(); $this->assertInstanceOf('ZF\\ContentNegotiation\\ViewModel', $result); $payload = $result->getVariable('payload'); $entity = method_exists($payload, 'getEntity') ? $payload->getEntity() : $payload->entity; $this->assertInstanceOf('ZF\\Hal\\Entity', $payload); $this->assertInstanceOf('ZF\\Apigility\\Admin\\Model\\ModuleEntity', $entity); $this->assertEquals('Foo', $entity->getName()); $this->removeDir($tmpDir); chdir($currentDir); }
/** * @dataProvider httpMethods */ public function testHttpMethodOverrideListenerReturnsProblemResponseForIllegalOverrideValue($method) { $listener = $this->listener; $request = new HttpRequest(); $request->setMethod('POST'); $request->getHeaders()->addHeaderLine('X-HTTP-Method-Override', $method); $event = new MvcEvent(); $event->setRequest($request); $result = $listener->onRoute($event); $this->assertInstanceOf(ApiProblemResponse::class, $result); $problem = $result->getApiProblem(); $this->assertEquals(400, $problem->status); $this->assertContains(sprintf('Illegal override method %s in X-HTTP-Method-Override header', $method), $problem->detail); }
/** * Determine if the incoming request provides either basic or digest * credentials * * @param Request $request * @return false|string */ public function getTypeFromRequest(Request $request) { $headers = $request->getHeaders(); $authorization = $request->getHeader('Authorization'); if (!$authorization) { return false; } $authorization = trim($authorization->getFieldValue()); $type = $this->getTypeFromAuthorizationHeader($authorization); if (!in_array($type, $this->authorizationTokenTypes)) { return false; } return $type; }
/** * Creates a HTTP request based on the userinfo request. * * @param Request $request * @param Http\Request $httpRequest * @return Http\Request */ public function buildHttpRequest(Request $request, Http\Request $httpRequest = null) { if (null === $httpRequest) { $httpRequest = new Http\Request(); } $clientInfo = $request->getClientInfo(); if (!$clientInfo instanceof ClientInfo) { throw new InvalidRequestException('No client info in request'); } $endpointUri = $clientInfo->getUserInfoEndpoint(); $httpRequest->setUri($endpointUri); $httpRequest->setMethod(Http\Request::METHOD_GET); $httpRequest->getHeaders()->addHeaders(array($this->authHeaderName => sprintf("%s %s", $this->tokenType, $request->getAccessToken()))); return $httpRequest; }