initial version

This commit is contained in:
2025-10-09 00:31:04 +02:00
commit 884584ee9f
10 changed files with 2380 additions and 0 deletions

12
.editorconfig Normal file
View File

@@ -0,0 +1,12 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
vendor/

1
README.md Normal file
View File

@@ -0,0 +1 @@
# Symfony bundle for Dolibarr ERP client

36
composer.json Normal file
View File

@@ -0,0 +1,36 @@
{
"name": "magdev/dolibarr-api-bundle",
"description": "Symfony bundle for Dolibarr ERP API client",
"type": "symfony-bundle",
"minimum-stability": "stable",
"license": "MIT",
"authors": [
{
"name": "magdev",
"email": "magdev3.0@gmail.com"
}
],
"require": {
"magdev/dolibarr-api": "dev-main",
"symfony/dependency-injection": "^7.3",
"symfony/config": "^7.3",
"symfony/yaml": "^7.3"
},
"require-dev": {
"symfony/framework-bundle": "^7.3"
},
"autoload": {
"psr-4": {
"Magdev\\DolibarrApiBundle\\": "src/"
}
},
"repositories": [
{
"type": "path",
"url": "/home/magdev/workspaces/php/dolibarr-api",
"options": {
"symlink": true
}
}
]
}

2240
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

0
src/.gitignore vendored Normal file
View File

View File

@@ -0,0 +1,37 @@
<?php
declare(strict_types=1);
namespace Magdev\DolibarrApiBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
/**
* @author Marco Grätsch <magdev3.0@gmail.com>
*/
final class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder(): TreeBuilder
{
$treeBuilder = new TreeBuilder(name: 'magdev_dolibarr_api');
$rootNode = $treeBuilder->getRootNode();
$rootNode->children()
->scalarNode(name: 'baseUri')
->isRequired()
->cannotBeEmpty()
->example(example: 'http://localhost')
->end()
->scalarNode(name: 'token')
->isRequired()
->cannotBeEmpty()
->example(example: 'your-secret-api-token')
->end()
->booleanNode(name: 'verifyHttps')
->defaultTrue()
->end()
->end()
;
return $treeBuilder;
}
}

View File

@@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
namespace Magdev\DolibarrApiBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
/**
* @author Marco Grätsch <magdev3.0@gmail.com>
*/
final class MagdevDolibarrApiExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container): void
{
$config = $this->processConfiguration(configuration: new Configuration(), configs: $configs);
if (isset($config['baseUri'])) {
$container->setParameter(name: 'magdev.dolibarr_api.base_uri', value: $config['baseUri']);
}
if (isset($config['token'])) {
$container->setParameter(name: 'magdev.dolibarr_api.token', value: $config['token']);
}
if (isset($config['verifyHttps'])) {
$container->setParameter(name: 'magdev.dolibarr_api.verify_https', value: $config['verifyHttps']);
}
$loader = new YamlFileLoader(
container: $container,
locator: new FileLocator(paths: __DIR__.'/../Resources/config')
);
$loader->load(resource: 'services.yaml');
}
}

View File

@@ -0,0 +1,14 @@
<?php
declare(strict_types=1);
namespace Magdev\DolibarrApiBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
/**
* @author Marco Grätsch <magdev3.0@gmail.com>
*/
final class MagdevDolibarrApiBundle extends Bundle
{
}

View File

@@ -0,0 +1,3 @@
services:
Magdev\DolibarrApi\DolibarrApiClient:
arguments: [null, '%magdev.dolibarr_api.base_uri%', '%magdev.dolibarr_api.token%', '%magdev.dolibarr_api.verify_https%']