Browse Source

Merge pull request #50 from majsterkoo/master

Additional exceptions added
tags/1.3.3 1.3.3
Paul Zloi 5 years ago
committed by GitHub
parent
commit
8149731894
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      src/Client.php
  2. 16
      src/Config.php
  3. 13
      src/Exceptions/BadCredentialsException.php
  4. 13
      src/Exceptions/ConnectException.php
  5. 1
      src/Exceptions/StreamException.php
  6. 5
      src/SocketTrait.php
  7. 8
      tests/ClientTest.php

9
src/Client.php

@ -4,6 +4,8 @@ namespace RouterOS;
use DivineOmega\SSHConnection\SSHConnection; use DivineOmega\SSHConnection\SSHConnection;
use RouterOS\Exceptions\ClientException; use RouterOS\Exceptions\ClientException;
use RouterOS\Exceptions\ConnectException;
use RouterOS\Exceptions\BadCredentialsException;
use RouterOS\Exceptions\ConfigException; use RouterOS\Exceptions\ConfigException;
use RouterOS\Interfaces\ClientInterface; use RouterOS\Interfaces\ClientInterface;
use RouterOS\Interfaces\QueryInterface; use RouterOS\Interfaces\QueryInterface;
@ -57,6 +59,8 @@ class Client implements Interfaces\ClientInterface
* @param bool $autoConnect If false it will skip auto-connect stage if not need to instantiate connection * @param bool $autoConnect If false it will skip auto-connect stage if not need to instantiate connection
* *
* @throws \RouterOS\Exceptions\ClientException * @throws \RouterOS\Exceptions\ClientException
* @throws \RouterOS\Exceptions\ConnectException
* @throws \RouterOS\Exceptions\BadCredentialsException
* @throws \RouterOS\Exceptions\ConfigException * @throws \RouterOS\Exceptions\ConfigException
* @throws \RouterOS\Exceptions\QueryException * @throws \RouterOS\Exceptions\QueryException
*/ */
@ -82,7 +86,7 @@ class Client implements Interfaces\ClientInterface
// Throw error if cannot to connect // Throw error if cannot to connect
if (false === $this->connect()) { if (false === $this->connect()) {
throw new ClientException('Unable to connect to ' . $config->get('host') . ':' . $config->get('port'));
throw new ConnectException('Unable to connect to ' . $config->get('host') . ':' . $config->get('port'));
} }
} }
@ -445,6 +449,7 @@ class Client implements Interfaces\ClientInterface
* *
* @return bool * @return bool
* @throws \RouterOS\Exceptions\ClientException * @throws \RouterOS\Exceptions\ClientException
* @throws \RouterOS\Exceptions\BadCredentialsException
* @throws \RouterOS\Exceptions\ConfigException * @throws \RouterOS\Exceptions\ConfigException
* @throws \RouterOS\Exceptions\QueryException * @throws \RouterOS\Exceptions\QueryException
*/ */
@ -487,7 +492,7 @@ class Client implements Interfaces\ClientInterface
// If RouterOS answered with invalid credentials then throw error // If RouterOS answered with invalid credentials then throw error
if (!empty($response[0]) && '!trap' === $response[0]) { if (!empty($response[0]) && '!trap' === $response[0]) {
throw new ClientException('Invalid user name or password');
throw new BadCredentialsException('Invalid user name or password');
} }
// Return true if we have only one line from server and this line is !done // Return true if we have only one line from server and this line is !done

16
src/Config.php

@ -184,15 +184,15 @@ class Config implements ConfigInterface
* *
* @throws \RouterOS\Exceptions\ConfigException when parameter is not allowed * @throws \RouterOS\Exceptions\ConfigException when parameter is not allowed
*/ */
public function delete(string $name): ConfigInterface
public function delete(string $parameter): ConfigInterface
{ {
// Check of key in array // Check of key in array
if (ArrayHelper::checkIfKeyNotExist($name, self::ALLOWED)) {
throw new ConfigException("Requested parameter '$name' not found in list [" . implode(',', array_keys(self::ALLOWED)) . ']');
if (ArrayHelper::checkIfKeyNotExist($parameter, self::ALLOWED)) {
throw new ConfigException("Requested parameter '$parameter' not found in list [" . implode(',', array_keys(self::ALLOWED)) . ']');
} }
// Save value to array // Save value to array
unset($this->_parameters[$name]);
unset($this->_parameters[$parameter]);
return $this; return $this;
} }
@ -202,14 +202,14 @@ class Config implements ConfigInterface
* *
* @throws \RouterOS\Exceptions\ConfigException when parameter is not allowed * @throws \RouterOS\Exceptions\ConfigException when parameter is not allowed
*/ */
public function get(string $name)
public function get(string $parameter)
{ {
// Check of key in array // Check of key in array
if (ArrayHelper::checkIfKeyNotExist($name, self::ALLOWED)) {
throw new ConfigException("Requested parameter '$name' not found in list [" . implode(',', array_keys(self::ALLOWED)) . ']');
if (ArrayHelper::checkIfKeyNotExist($parameter, self::ALLOWED)) {
throw new ConfigException("Requested parameter '$parameter' not found in list [" . implode(',', array_keys(self::ALLOWED)) . ']');
} }
return $this->getPort($name) ?? $this->_parameters[$name];
return $this->getPort($parameter) ?? $this->_parameters[$parameter];
} }
/** /**

13
src/Exceptions/BadCredentialsException.php

@ -0,0 +1,13 @@
<?php
namespace RouterOS\Exceptions;
/**
* Class BadCredentialsException thrown when a password or login is wrong.
*
* @package RouterOS\Exceptions
* @since 1.3.3
*/
class BadCredentialsException extends ClientException
{
}

13
src/Exceptions/ConnectException.php

@ -0,0 +1,13 @@
<?php
namespace RouterOS\Exceptions;
/**
* Class ConnectException thrown when a connection cannot be established.
*
* @package RouterOS\Exceptions
* @since 1.3.3
*/
class ConnectException extends ClientException
{
}

1
src/Exceptions/StreamException.php

@ -8,7 +8,6 @@ namespace RouterOS\Exceptions;
* @package RouterOS\Exceptions * @package RouterOS\Exceptions
* @since 0.9 * @since 0.9
*/ */
class StreamException extends \Exception class StreamException extends \Exception
{ {
} }

5
src/SocketTrait.php

@ -2,7 +2,7 @@
namespace RouterOS; namespace RouterOS;
use RouterOS\Exceptions\ClientException;
use RouterOS\Exceptions\ConnectException;
trait SocketTrait trait SocketTrait
{ {
@ -32,6 +32,7 @@ trait SocketTrait
* *
* @return void * @return void
* @throws \RouterOS\Exceptions\ClientException * @throws \RouterOS\Exceptions\ClientException
* @throws \RouterOS\Exceptions\ConnectException
* @throws \RouterOS\Exceptions\ConfigException * @throws \RouterOS\Exceptions\ConfigException
*/ */
private function openSocket(): void private function openSocket(): void
@ -56,7 +57,7 @@ trait SocketTrait
// Throw error is socket is not initiated // Throw error is socket is not initiated
if (false === $socket) { if (false === $socket) {
throw new ClientException('Unable to establish socket session, ' . $this->socket_err_str);
throw new ConnectException('Unable to establish socket session, ' . $this->socket_err_str);
} }
//Timeout read //Timeout read

8
tests/ClientTest.php

@ -10,6 +10,8 @@ use RouterOS\Exceptions\QueryException;
use RouterOS\Query; use RouterOS\Query;
use RouterOS\Config; use RouterOS\Config;
use RouterOS\Exceptions\ClientException; use RouterOS\Exceptions\ClientException;
use RouterOS\Exceptions\ConnectException;
use RouterOS\Exceptions\BadCredentialsException;
class ClientTest extends TestCase class ClientTest extends TestCase
{ {
@ -109,7 +111,7 @@ class ClientTest extends TestCase
public function testConstructExceptionBadHost(): void public function testConstructExceptionBadHost(): void
{ {
$this->expectException(ClientException::class);
$this->expectException(ConnectException::class);
new Client([ new Client([
'host' => '127.0.0.1', 'host' => '127.0.0.1',
@ -159,7 +161,7 @@ class ClientTest extends TestCase
public function testConstructWrongPass(): void public function testConstructWrongPass(): void
{ {
$this->expectException(ClientException::class);
$this->expectException(BadCredentialsException::class);
new Client([ new Client([
'user' => $this->config['user'], 'user' => $this->config['user'],
@ -171,7 +173,7 @@ class ClientTest extends TestCase
public function testConstructWrongNet(): void public function testConstructWrongNet(): void
{ {
$this->expectException(ClientException::class);
$this->expectException(ConnectException::class);
new Client([ new Client([
'user' => $this->config['user'], 'user' => $this->config['user'],

Loading…
Cancel
Save