public function testSanitizeFilename()
 {
     // initialize the API client
     $s = new ObjectSerializer();
     $this->assertSame("sun.gif", $s->sanitizeFilename("sun.gif"));
     $this->assertSame("sun.gif", $s->sanitizeFilename("../sun.gif"));
     $this->assertSame("sun.gif", $s->sanitizeFilename("/var/tmp/sun.gif"));
     $this->assertSame("sun.gif", $s->sanitizeFilename("./sun.gif"));
     $this->assertSame("sun", $s->sanitizeFilename("sun"));
     $this->assertSame("sun.gif", $s->sanitizeFilename("..\\sun.gif"));
     $this->assertSame("sun.gif", $s->sanitizeFilename("\var\tmp\\sun.gif"));
     $this->assertSame("sun.gif", $s->sanitizeFilename("c:\var\tmp\\sun.gif"));
     $this->assertSame("sun.gif", $s->sanitizeFilename(".\\sun.gif"));
 }
Esempio n. 2
0
 function readObject()
 {
     $data = '';
     if ($this->ready()) {
         while (($c = $this->read()) != '') {
             $data .= $c;
             if ($data === 'obj[') {
                 break;
             }
         }
         if ($data == 'obj[') {
             $count = '';
             while (($c = $this->read()) != '') {
                 if ($c === ']') {
                     break;
                 }
                 $count .= $c;
             }
             settype($count, 'integer');
             $c = $this->read();
             if ($c === '[' && $count > 0) {
                 $pos = 0;
                 $data = '';
                 while (($c = $this->read()) != '' && $pos < $count) {
                     $data .= $c;
                     $pos++;
                 }
                 if ($c === ']' && strlen($data) === $count) {
                     return ObjectSerializer::load($data);
                 }
             }
         }
     }
     return NULL;
 }
Esempio n. 3
0
 function writeObject($object)
 {
     if (isset($object)) {
         $serialized = ObjectSerializer::save($object);
         $len = strlen($serialized);
         $data = 'obj[' . $len . '][' . $serialized . ']';
         $this->write($data);
     }
 }
Esempio n. 4
0
 /**
  * Make the HTTP call (Sync)
  * @param string $resourcePath path to method endpoint
  * @param string $method       method to call
  * @param array  $queryParams  parameters to be place in query URL
  * @param array  $postData     parameters to be placed in POST body
  * @param array  $headerParams parameters to be place in request header
  * @param string $responseType expected response type of the endpoint
  * @throws \Swagger\Client\ApiException on a non 2xx response
  * @return mixed
  */
 public function callApi($resourcePath, $method, $queryParams, $postData, $headerParams, $responseType = null)
 {
     $headers = array();
     // construct the http header
     $headerParams = array_merge((array) $this->config->getDefaultHeaders(), (array) $headerParams);
     foreach ($headerParams as $key => $val) {
         $headers[] = "{$key}: {$val}";
     }
     // form data
     if ($postData and in_array('Content-Type: application/x-www-form-urlencoded', $headers)) {
         $postData = http_build_query($postData);
     } else {
         if ((is_object($postData) or is_array($postData)) and !in_array('Content-Type: multipart/form-data', $headers)) {
             // json model
             $postData = json_encode($this->serializer->sanitizeForSerialization($postData));
         }
     }
     $url = $this->config->getHost() . $resourcePath;
     $curl = curl_init();
     // set timeout, if needed
     if ($this->config->getCurlTimeout() != 0) {
         curl_setopt($curl, CURLOPT_TIMEOUT, $this->config->getCurlTimeout());
     }
     // return the result on success, rather than just TRUE
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
     if (!empty($queryParams)) {
         $url = $url . '?' . http_build_query($queryParams);
     }
     if ($method == self::$POST) {
         curl_setopt($curl, CURLOPT_POST, true);
         curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
     } else {
         if ($method == self::$HEAD) {
             curl_setopt($curl, CURLOPT_NOBODY, true);
         } else {
             if ($method == self::$OPTIONS) {
                 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "OPTIONS");
                 curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
             } else {
                 if ($method == self::$PATCH) {
                     curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH");
                     curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
                 } else {
                     if ($method == self::$PUT) {
                         curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
                         curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
                     } else {
                         if ($method == self::$DELETE) {
                             curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
                             curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
                         } else {
                             if ($method != self::$GET) {
                                 throw new ApiException('Method ' . $method . ' is not recognized.');
                             }
                         }
                     }
                 }
             }
         }
     }
     curl_setopt($curl, CURLOPT_URL, $url);
     // Set user agent
     curl_setopt($curl, CURLOPT_USERAGENT, $this->config->getUserAgent());
     // debugging for curl
     if ($this->config->getDebug()) {
         error_log("[DEBUG] HTTP Request body  ~BEGIN~\n" . print_r($postData, true) . "\n~END~\n", 3, $this->config->getDebugFile());
         curl_setopt($curl, CURLOPT_VERBOSE, 1);
         curl_setopt($curl, CURLOPT_STDERR, fopen($this->config->getDebugFile(), 'a'));
     } else {
         curl_setopt($curl, CURLOPT_VERBOSE, 0);
     }
     // obtain the HTTP response headers
     curl_setopt($curl, CURLOPT_HEADER, 1);
     // Make the request
     $response = curl_exec($curl);
     $http_header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
     $http_header = substr($response, 0, $http_header_size);
     $http_body = substr($response, $http_header_size);
     $response_info = curl_getinfo($curl);
     // debug HTTP response body
     if ($this->config->getDebug()) {
         error_log("[DEBUG] HTTP Response body ~BEGIN~\n" . print_r($http_body, true) . "\n~END~\n", 3, $this->config->getDebugFile());
     }
     // Handle the response
     if ($response_info['http_code'] == 0) {
         throw new ApiException("API call to {$url} timed out: " . serialize($response_info), 0, null, null);
     } else {
         if ($response_info['http_code'] >= 200 && $response_info['http_code'] <= 299) {
             // return raw body if response is a file
             if ($responseType == '\\SplFileObject') {
                 return array($http_body, $http_header);
             }
             $data = json_decode($http_body);
             if (json_last_error() > 0) {
                 // if response is a string
                 $data = $http_body;
             }
         } else {
             throw new ApiException("[" . $response_info['http_code'] . "] Error connecting to the API ({$url})", $response_info['http_code'], $http_header, $http_body);
         }
     }
     return array($data, $http_header);
 }
Esempio n. 5
0
    public function testDeserializationOfMapOfMapOfOrder()
    {
        $order_json = <<<ORDER
{
  "test": {
    "test2": {
      "id": 10,
      "petId": 20,
      "quantity": 30,
      "shipDate": "2015-08-22T07:13:36.613Z",
      "status": "placed",
      "complete": false
    }
  }
}
ORDER;
        $order = ObjectSerializer::deserialize(json_decode($order_json), 'map[string,map[string,\\Swagger\\Client\\Model\\Order]]');
        $this->assertArrayHasKey('test', $order);
        $this->assertArrayHasKey('test2', $order['test']);
        $_order = $order['test']['test2'];
        $this->assertInstanceOf('Swagger\\Client\\Model\\Order', $_order);
        $this->assertSame(10, $_order->getId());
        $this->assertSame(20, $_order->getPetId());
        $this->assertSame(30, $_order->getQuantity());
        $this->assertTrue(new \DateTime("2015-08-22T07:13:36.613Z") == $_order->getShipDate());
        $this->assertSame("placed", $_order->getStatus());
        $this->assertSame(false, $_order->getComplete());
    }