/**
  * (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;
    }
Beispiel #3
0
 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']);
 }
Beispiel #7
0
 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;
 }
Beispiel #8
0
 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;
 }
Beispiel #9
0
 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'];
 }
Beispiel #10
0
 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);
 }
Beispiel #11
0
 /**
  * @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);
 }
Beispiel #12
0
 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();
 }
Beispiel #13
0
 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);
 }
Beispiel #14
0
 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());
 }
Beispiel #17
0
 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());
 }
Beispiel #18
0
 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));
 }
Beispiel #19
0
 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());
 }
Beispiel #23
0
 /**
  * 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);
 }
Beispiel #25
0
 /**
  * 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);
 }
Beispiel #29
0
 /**
  * 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;
 }