<?php
/**
 * Class SoapClient
 *
 * @package DhlPolska\API\WebApi
 */

namespace DhlPolska\API\WebApi;

use DhlPolska\API\LoggingSoapClient;
use DhlPolska\API\WebApi\Method\BookCourier;
use DhlPolska\API\WebApi\Method\CancelCourierBooking;
use DhlPolska\API\WebApi\Method\CreateShipment;
use DhlPolska\API\WebApi\Method\CreateShipments;
use DhlPolska\API\WebApi\Method\CreateShipmentReturn;
use DhlPolska\API\WebApi\Method\DeleteShipments;
use DhlPolska\API\WebApi\Method\GetLabels;
use DhlPolska\API\WebApi\Method\GetPnp;
use DhlPolska\API\WebApi\Method\GetPostalCodeServices;
use DhlPolska\API\WebApi\Method\GetReturnByWaybill;

/**
 * WebAPI SoapClient.
 */
class SoapClient extends LoggingSoapClient {

	/**
	 * @param GetPostalCodeServices $request .
	 *
	 * @return object
	 */
	public function getPostalCodeServices( GetPostalCodeServices $request ): object {
		return $this->__soapCall( 'getPostalCodeServices', [ $request ] );
	}

	/**
	 * @param BookCourier $request .
	 *
	 * @return object
	 */
	public function bookCourier( BookCourier $request ): object {
		return $this->__soapCall( 'bookCourier', [ $request ] );
	}

	/**
	 * @param CancelCourierBooking $request .
	 *
	 * @return object
	 */
	public function cancelCourierBooking( CancelCourierBooking $request ): object {
		return $this->__soapCall( 'cancelCourierBooking', [ $request ] );
	}

	/**
	 * @param CreateShipment $request .
	 *
	 * @return object
	 */
	public function createShipment( CreateShipment $request ): object {
		return $this->__soapCall( 'createShipment', [ $request ] );
	}

	/**
	 * @param CreateShipments $request .
	 *
	 * @return object
	 */
	public function createShipments( CreateShipments $request ): object {
		return $this->__soapCall( 'createShipments', [ $request ] );
	}

	/**
	 * @param CreateShipmentReturn $request .
	 *
	 * @return object
	 */
	public function createShipmentReturn( CreateShipmentReturn $request ): object {
		return $this->__soapCall( 'createShipmentReturn', [ $request ] );
	}

	/**
	 * @param DeleteShipments $request .
	 *
	 * @return object
	 */
	public function deleteShipments( DeleteShipments $request ): object {
		return $this->__soapCall( 'deleteShipments', [ $request ] );
	}

	/**
	 * @param GetLabels $request .
	 *
	 * @return object
	 */
	public function getLabels( GetLabels $request ): object {
		return $this->__soapCall( 'getLabels', [ $request ] );
	}

	/**
	 * @param GetPnp $request .
	 *
	 * @return object
	 */
	public function getPnp( GetPnp $request ): object {
		return $this->__soapCall( 'getPnp', [ $request ] );
	}

	/**
	 * @param GetReturnByWaybill $request .
	 *
	 * @return object
	 */
	public function getReturnByWaybill( GetReturnByWaybill $request ): object {
		return $this->__soapCall( 'getReturnByWaybill', [ $request ] );
	}
}
