Browse Source

laravel support added

tags/1.2.0
Paul Rock 6 years ago
parent
commit
559485cb65
  1. 22
      composer.json
  2. 13
      configs/routeros-api.php
  3. 2
      src/Config.php
  4. 13
      src/Laravel/ClientFacade.php
  5. 34
      src/Laravel/ClientServiceProvide.php
  6. 24
      src/Laravel/ClientWrapper.php

22
composer.json

@ -1,12 +1,15 @@
{
"name": "evilfreelancer/routeros-api-php",
"type": "library",
"description": "Modern Mikrotik RouterOS API PHP7 client for your applications",
"description": "Modern Mikrotik RouterOS API PHP client for your applications (with Laravel support)",
"keywords": [
"socket-client",
"psr-4",
"routeros",
"mikrotik"
"mikrotik",
"laravel",
"plugin",
"facade"
],
"license": "MIT",
"autoload": {
@ -25,11 +28,22 @@
"role": "Developer"
}
],
"extra": {
"laravel": {
"providers": [
"RouterOS\\Laravel\\ClientServiceProvide"
],
"aliases": {
"RouterOS": "RouterOS\\Laravel\\ClientFacade"
}
}
},
"require": {
"php": "^7.1",
"php": "^7.2",
"ext-sockets": "*"
},
"require-dev": {
"phpunit/phpunit": "^7.0"
"phpunit/phpunit": "^7.0",
"orchestra/testbench": "^3.0"
}
}

13
configs/routeros-api.php

@ -0,0 +1,13 @@
<?php
return [
// 'host' => null,
// 'user' => null,
// 'pass' => null,
// 'port' => null,
'ssl' => false,
'legacy' => false,
'timeout' => 10,
'attempts' => 10,
'delay' => 1,
];

2
src/Config.php

@ -77,7 +77,7 @@ class Config implements ConfigInterface
private function getPort(string $parameter)
{
// If client need port number and port is not set
if ($parameter === 'port' && !isset($this->_parameters['port'])) {
if ($parameter === 'port' && !isset($this->_parameters['port']) && null !== $this->_parameters['port']) {
// then use default with or without ssl encryption
return (isset($this->_parameters['ssl']) && $this->_parameters['ssl'])
? Client::PORT_SSL

13
src/Laravel/ClientFacade.php

@ -0,0 +1,13 @@
<?php
namespace RouterOS\Laravel;
use Illuminate\Support\Facades\Facade;
class ClientFacade extends Facade
{
protected static function getFacadeAccessor()
{
return ClientWrapper::class;
}
}

34
src/Laravel/ClientServiceProvide.php

@ -0,0 +1,34 @@
<?php
namespace RouterOS\Laravel;
use Illuminate\Support\ServiceProvider as BaseServiceProvider;
class ClientServiceProvide extends BaseServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
$this->publishes([
__DIR__ . '/../configs/routeros-api.php' => config_path('routeros-api.php'),
]);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->mergeConfigFrom(
__DIR__ . '/../configs/routeros-api.php', 'routeros-api'
);
$this->app->bind(ClientWrapper::class);
}
}

24
src/Laravel/ClientWrapper.php

@ -0,0 +1,24 @@
<?php
namespace RouterOS\Laravel;
use RouterOS\Client;
class ClientWrapper
{
/**
* @param array $params
*
* @return \RouterOS\Client
* @throws \RouterOS\Exceptions\ClientException
* @throws \RouterOS\Exceptions\ConfigException
* @throws \RouterOS\Exceptions\QueryException
*/
public function getClient(array $params = []): Client
{
$configs = config('routeros-api');
$configs = array_merge($configs, $params);
return new Client($configs);
}
}
Loading…
Cancel
Save