mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-07-02 06:24:34 +02:00
Moved mouser info provider config to settings-bundle
This commit is contained in:
parent
5a4b7c525b
commit
5a563e4f8f
8 changed files with 621 additions and 509 deletions
|
@ -29,7 +29,7 @@
|
|||
"hshn/base64-encoded-file": "^5.0",
|
||||
"jbtronics/2fa-webauthn": "^v2.2.0",
|
||||
"jbtronics/dompdf-font-loader-bundle": "^1.0.0",
|
||||
"jbtronics/settings-bundle": "^2.0",
|
||||
"jbtronics/settings-bundle": "dev-master",
|
||||
"jfcherng/php-diff": "^6.14",
|
||||
"knpuniversity/oauth2-client-bundle": "^2.15",
|
||||
"league/csv": "^9.8.0",
|
||||
|
|
1004
composer.lock
generated
1004
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -300,12 +300,6 @@ services:
|
|||
$search_limit: '%env(int:PROVIDER_OCTOPART_SEARCH_LIMIT)%'
|
||||
$onlyAuthorizedSellers: '%env(bool:PROVIDER_OCTOPART_ONLY_AUTHORIZED_SELLERS)%'
|
||||
|
||||
App\Services\InfoProviderSystem\Providers\MouserProvider:
|
||||
arguments:
|
||||
$api_key: '%env(string:PROVIDER_MOUSER_KEY)%'
|
||||
$language: '%env(string:PROVIDER_MOUSER_SEARCH_WITH_SIGNUP_LANGUAGE)%'
|
||||
$options: '%env(string:PROVIDER_MOUSER_SEARCH_OPTION)%'
|
||||
$search_limit: '%env(int:PROVIDER_MOUSER_SEARCH_LIMIT)%'
|
||||
|
||||
####################################################################################################################
|
||||
# API system
|
||||
|
|
|
@ -37,6 +37,7 @@ use App\Services\InfoProviderSystem\DTOs\FileDTO;
|
|||
use App\Services\InfoProviderSystem\DTOs\PartDetailDTO;
|
||||
use App\Services\InfoProviderSystem\DTOs\PriceDTO;
|
||||
use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO;
|
||||
use App\Settings\InfoProviderSystem\MouserSettings;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
||||
|
@ -50,10 +51,7 @@ class MouserProvider implements InfoProviderInterface
|
|||
|
||||
public function __construct(
|
||||
private readonly HttpClientInterface $mouserClient,
|
||||
private readonly string $api_key,
|
||||
private readonly string $language,
|
||||
private readonly string $options,
|
||||
private readonly int $search_limit
|
||||
private readonly MouserSettings $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
|
@ -74,7 +72,7 @@ class MouserProvider implements InfoProviderInterface
|
|||
|
||||
public function isActive(): bool
|
||||
{
|
||||
return !empty($this->api_key);
|
||||
return !empty($this->settings->apiKey);
|
||||
}
|
||||
|
||||
public function searchByKeyword(string $keyword): array
|
||||
|
@ -119,15 +117,15 @@ class MouserProvider implements InfoProviderInterface
|
|||
|
||||
$response = $this->mouserClient->request('POST', self::ENDPOINT_URL."/keyword", [
|
||||
'query' => [
|
||||
'apiKey' => $this->api_key,
|
||||
'apiKey' => $this->settings->apiKey
|
||||
],
|
||||
'json' => [
|
||||
'SearchByKeywordRequest' => [
|
||||
'keyword' => $keyword,
|
||||
'records' => $this->search_limit, //self::NUMBER_OF_RESULTS,
|
||||
'records' => $this->settings->searchLimit, //self::NUMBER_OF_RESULTS,
|
||||
'startingRecord' => 0,
|
||||
'searchOptions' => $this->options,
|
||||
'searchWithYourSignUpLanguage' => $this->language,
|
||||
'searchOptions' => $this->settings->searchOption->value,
|
||||
'searchWithYourSignUpLanguage' => $this->settings->searchWithSignUpLanguage ? 'true' : 'false',
|
||||
]
|
||||
],
|
||||
]);
|
||||
|
@ -160,7 +158,7 @@ class MouserProvider implements InfoProviderInterface
|
|||
|
||||
$response = $this->mouserClient->request('POST', self::ENDPOINT_URL."/partnumber", [
|
||||
'query' => [
|
||||
'apiKey' => $this->api_key,
|
||||
'apiKey' => $this->settings->apiKey,
|
||||
],
|
||||
'json' => [
|
||||
'SearchByPartRequest' => [
|
||||
|
|
|
@ -34,4 +34,7 @@ class InfoProviderSettings
|
|||
|
||||
#[EmbeddedSettings]
|
||||
public LCSCSettings $lcsc;
|
||||
|
||||
#[EmbeddedSettings]
|
||||
public MouserSettings $mouser;
|
||||
}
|
32
src/Settings/InfoProviderSystem/MouserSearchOptions.php
Normal file
32
src/Settings/InfoProviderSystem/MouserSearchOptions.php
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace App\Settings\InfoProviderSystem;
|
||||
|
||||
enum MouserSearchOptions: string
|
||||
{
|
||||
case NONE = "None";
|
||||
case ROHS = "Rohs";
|
||||
case IN_STOCK = "InStock";
|
||||
case ROHS_AND_INSTOCK = "RohsAndInStock";
|
||||
}
|
59
src/Settings/InfoProviderSystem/MouserSettings.php
Normal file
59
src/Settings/InfoProviderSystem/MouserSettings.php
Normal file
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace App\Settings\InfoProviderSystem;
|
||||
|
||||
use Jbtronics\SettingsBundle\Settings\Settings;
|
||||
use Jbtronics\SettingsBundle\Settings\SettingsParameter;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
#[Settings]
|
||||
class MouserSettings
|
||||
{
|
||||
#[SettingsParameter(envVar: "PROVIDER_MOUSER_KEY")]
|
||||
public ?string $apiKey = null;
|
||||
|
||||
/** @var int The number of results to get from Mouser while searching (please note that this value is max 50) */
|
||||
#[SettingsParameter(envVar: "int:PROVIDER_MOUSER_SEARCH_LIMIT")]
|
||||
#[Assert\Range(min: 1, max: 50)]
|
||||
public int $searchLimit = 50;
|
||||
|
||||
/** @var MouserSearchOptions Filter search results by RoHS compliance and stock availability */
|
||||
#[SettingsParameter(envVar: "PROVIDER_MOUSER_SEARCH_OPTION", envVarMapper: [self::class, "mapSearchOptionEnvVar"])]
|
||||
public MouserSearchOptions $searchOption = MouserSearchOptions::NONE;
|
||||
|
||||
/** @var bool It is recommended to leave this set to 'true'. The option is not really documented by Mouser:
|
||||
* Used when searching for keywords in the language specified when you signed up for Search API. */
|
||||
#[SettingsParameter(envVar: "bool:PROVIDER_MOUSER_SEARCH_WITH_SIGNUP_LANGUAGE")]
|
||||
public bool $searchWithSignUpLanguage = true;
|
||||
|
||||
public static function mapSearchOptionEnvVar(?string $value): MouserSearchOptions
|
||||
{
|
||||
if (!$value) {
|
||||
return MouserSearchOptions::NONE;
|
||||
}
|
||||
|
||||
return MouserSearchOptions::tryFrom($value) ?? MouserSearchOptions::NONE;
|
||||
}
|
||||
|
||||
}
|
|
@ -297,12 +297,6 @@
|
|||
"./config/packages/datatables.yaml"
|
||||
]
|
||||
},
|
||||
"phenx/php-font-lib": {
|
||||
"version": "0.5.1"
|
||||
},
|
||||
"phenx/php-svg-lib": {
|
||||
"version": "v0.3.3"
|
||||
},
|
||||
"php-http/discovery": {
|
||||
"version": "1.18",
|
||||
"recipe": {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue