<?php
/**
 *  Copyright 2014 Reverb Technologies, Inc.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/**
 *
 * NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually.
 */
class PetApi {

	function __construct($apiClient) {
	  $this->apiClient = $apiClient;
	}

  /**
	 * getPetById
	 * Find pet by ID
   * petId, int: ID of pet that needs to be fetched (required)

   * @return Pet
	 */

   public function getPetById($petId) {

  		//parse inputs
  		$resourcePath = "/pet/{petId}";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "GET";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'application/json';

      if($petId != null) {
  			$resourcePath = str_replace("{" . "petId" . "}",
  			                            $this->apiClient->toPathValue($petId), $resourcePath);
  		}
  		//make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      if(! $response){
          return null;
        }

  		$responseObject = $this->apiClient->deserialize($response,
  		                                                'Pet');
  		return $responseObject;

      }
  /**
	 * deletePet
	 * Deletes a pet
   * petId, string: Pet id to delete (required)

   * @return 
	 */

   public function deletePet($petId) {

  		//parse inputs
  		$resourcePath = "/pet/{petId}";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "DELETE";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'application/json';

      if($petId != null) {
  			$resourcePath = str_replace("{" . "petId" . "}",
  			                            $this->apiClient->toPathValue($petId), $resourcePath);
  		}
  		//make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      }
  /**
	 * partialUpdate
	 * partial updates to a pet
   * petId, string: ID of pet that needs to be fetched (required)

   * body, Pet: Pet object that needs to be added to the store (required)

   * @return Array[Pet]
	 */

   public function partialUpdate($petId, $body) {

  		//parse inputs
  		$resourcePath = "/pet/{petId}";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "PATCH";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json,application/xml';
      $headerParams['Content-Type'] = 'application/json,application/xml';

      if($petId != null) {
  			$resourcePath = str_replace("{" . "petId" . "}",
  			                            $this->apiClient->toPathValue($petId), $resourcePath);
  		}
  		//make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      if(! $response){
          return null;
        }

  		$responseObject = $this->apiClient->deserialize($response,
  		                                                'Array[Pet]');
  		return $responseObject;

      }
  /**
	 * updatePetWithForm
	 * Updates a pet in the store with form data
   * petId, string: ID of pet that needs to be updated (required)

   * name, string: Updated name of the pet (optional)

   * status, string: Updated status of the pet (optional)

   * @return 
	 */

   public function updatePetWithForm($petId, $name=null, $status=null) {

  		//parse inputs
  		$resourcePath = "/pet/{petId}";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "POST";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'application/x-www-form-urlencoded';

      if($petId != null) {
  			$resourcePath = str_replace("{" . "petId" . "}",
  			                            $this->apiClient->toPathValue($petId), $resourcePath);
  		}
  		//make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      }
  /**
	 * uploadFile
	 * uploads an image
   * additionalMetadata, string: Additional data to pass to server (optional)

   * body, File: file to upload (optional)

   * @return 
	 */

   public function uploadFile($additionalMetadata=null, $body=null) {

  		//parse inputs
  		$resourcePath = "/pet/uploadImage";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "POST";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'multipart/form-data';

      //make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      }
  /**
	 * addPet
	 * Add a new pet to the store
   * body, Pet: Pet object that needs to be added to the store (required)

   * @return 
	 */

   public function addPet($body) {

  		//parse inputs
  		$resourcePath = "/pet";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "POST";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'application/json,application/xml';

      //make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      }
  /**
	 * updatePet
	 * Update an existing pet
   * body, Pet: Pet object that needs to be updated in the store (required)

   * @return 
	 */

   public function updatePet($body) {

  		//parse inputs
  		$resourcePath = "/pet";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "PUT";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'application/json';

      //make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      }
  /**
	 * findPetsByStatus
	 * Finds Pets by status
   * status, string: Status values that need to be considered for filter (required)

   * @return Array[Pet]
	 */

   public function findPetsByStatus($status) {

  		//parse inputs
  		$resourcePath = "/pet/findByStatus";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "GET";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'application/json';

      if($status != null) {
  		  $queryParams['status'] = $this->apiClient->toQueryValue($status);
  		}
  		//make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      if(! $response){
          return null;
        }

  		$responseObject = $this->apiClient->deserialize($response,
  		                                                'Array[Pet]');
  		return $responseObject;

      }
  /**
	 * findPetsByTags
	 * Finds Pets by tags
   * tags, string: Tags to filter by (required)

   * @return Array[Pet]
	 */

   public function findPetsByTags($tags) {

  		//parse inputs
  		$resourcePath = "/pet/findByTags";
  		$resourcePath = str_replace("{format}", "json", $resourcePath);
  		$method = "GET";
      $queryParams = array();
      $headerParams = array();
      $headerParams['Accept'] = 'application/json';
      $headerParams['Content-Type'] = 'application/json';

      if($tags != null) {
  		  $queryParams['tags'] = $this->apiClient->toQueryValue($tags);
  		}
  		//make the API Call
      if (! isset($body)) {
        $body = null;
      }
  		$response = $this->apiClient->callAPI($resourcePath, $method,
  		                                      $queryParams, $body,
  		                                      $headerParams);


      if(! $response){
          return null;
        }

  		$responseObject = $this->apiClient->deserialize($response,
  		                                                'Array[Pet]');
  		return $responseObject;

      }
  

}

