初始化
This commit is contained in:
parent
7984fdc92f
commit
3b4674ed92
|
|
@ -0,0 +1,5 @@
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule ^ server.php [QSA,L]
|
||||||
|
|
@ -4,34 +4,15 @@
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="App\" />
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="App\" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/mcp/sdk" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/opis/json-schema" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/opis/string" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/opis/uri" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/discovery" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpdoc-parser" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/clock" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-handler" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-server-middleware" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-contracts" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-contracts" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-uuid" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/uid" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
|
|
||||||
|
|
@ -12,29 +12,10 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="PhpIncludePathManager">
|
<component name="PhpIncludePathManager">
|
||||||
<include_path>
|
<include_path>
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/clock" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/mcp/sdk" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-server-handler" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/php-http/discovery" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/opis/uri" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-server-middleware" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/opis/string" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-uuid" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/composer" />
|
<path value="$PROJECT_DIR$/vendor/composer" />
|
||||||
<path value="$PROJECT_DIR$/vendor/opis/json-schema" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
||||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/uid" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
# Merchant AI HTTP API
|
||||||
|
|
||||||
|
PHP 8.2 JSON API service for merchant order statistics, offline order analysis, and merchant ranking.
|
||||||
|
|
||||||
|
## Environment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
MERCHANT_API_TOKEN=your-admin-api-token
|
||||||
|
MERCHANT_API_BASE_URI=https://tpoint.agrimedia.cn
|
||||||
|
MERCHANT_API_TIMEOUT=10
|
||||||
|
```
|
||||||
|
|
||||||
|
`MERCHANT_API_TOKEN` is required. `MERCHANT_API_BASE_URI` and `MERCHANT_API_TIMEOUT` are optional.
|
||||||
|
|
||||||
|
## Start Locally
|
||||||
|
|
||||||
|
```bash
|
||||||
|
php -S 127.0.0.1:8080 server.php
|
||||||
|
```
|
||||||
|
|
||||||
|
## Response Format
|
||||||
|
|
||||||
|
Success:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"data": {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Error:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": false,
|
||||||
|
"error": {
|
||||||
|
"code": "server_error",
|
||||||
|
"message": "error message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Endpoints
|
||||||
|
|
||||||
|
|
||||||
|
### `GET|POST /tools`
|
||||||
|
|
||||||
|
Returns available API tools and input schemas.
|
||||||
|
|
||||||
|
### `GET|POST /api/order-summary`
|
||||||
|
|
||||||
|
Returns order count, active merchant count, successful order count, and amount totals.
|
||||||
|
|
||||||
|
### `GET|POST /api/offline-orders/analyze`
|
||||||
|
|
||||||
|
Returns status, payment type, order type, and amount distribution analysis.
|
||||||
|
|
||||||
|
### `GET|POST /api/merchant-ranking`
|
||||||
|
|
||||||
|
Returns merchant ranking by `orderCount`, `successOrderCount`, `totalOrderAmount`, or `totalRealPay`.
|
||||||
|
|
||||||
|
## Common Parameters
|
||||||
|
|
||||||
|
- `date`: date range, for example `2026/06/23-2026/06/23`; defaults to today.
|
||||||
|
- `status`: order status; defaults to `-1`.
|
||||||
|
- `keyword`: search keyword, sent to upstream API as `real_name`.
|
||||||
|
- `fieldKey`: upstream `field_key`; defaults to `all`.
|
||||||
|
- `payType`: upstream `pay_type`.
|
||||||
|
- `type`: upstream order `type`.
|
||||||
|
- `btcId`: upstream merchant category ID.
|
||||||
|
|
||||||
|
`/api/merchant-ranking` also supports:
|
||||||
|
|
||||||
|
- `sortBy`: `orderCount`, `successOrderCount`, `totalOrderAmount`, or `totalRealPay`; defaults to `totalRealPay`.
|
||||||
|
- `limit`: number of merchants to return; defaults to `10`, max `100`.
|
||||||
|
|
||||||
|
## POST Example
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST http://127.0.0.1:8080/api/merchant-ranking \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"date":"2026/06/23-2026/06/23","sortBy":"totalRealPay","limit":10}'
|
||||||
|
```
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"mcp/sdk": "^0.6.0",
|
|
||||||
"guzzlehttp/guzzle": "^7.12"
|
"guzzlehttp/guzzle": "^7.12"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -4,7 +4,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
require __DIR__ . '/vendor/autoload.php';
|
require __DIR__ . '/vendor/autoload.php';
|
||||||
|
|
||||||
use App\Server\ServerFactory;
|
use App\Api\ApiFactory;
|
||||||
use Mcp\Server\Transport\StdioTransport;
|
use App\Http\HttpRequest;
|
||||||
|
|
||||||
ServerFactory::create()->run(new StdioTransport());
|
ApiFactory::create()->handle(HttpRequest::fromGlobals());
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Server;
|
namespace App\Api;
|
||||||
|
|
||||||
use App\Config\ApiConfig;
|
use App\Config\ApiConfig;
|
||||||
use App\Http\MerchantApiClient;
|
use App\Http\MerchantApiClient;
|
||||||
|
|
@ -10,25 +10,18 @@ use App\Repositories\OfflineOrderRepository;
|
||||||
use App\Tools\AnalyzeOfflineOrdersTool;
|
use App\Tools\AnalyzeOfflineOrdersTool;
|
||||||
use App\Tools\MerchantRankingTool;
|
use App\Tools\MerchantRankingTool;
|
||||||
use App\Tools\OrderSummaryTool;
|
use App\Tools\OrderSummaryTool;
|
||||||
use App\Tools\ToolRegistrar;
|
|
||||||
use Mcp\Server;
|
|
||||||
|
|
||||||
final class ServerFactory
|
final class ApiFactory
|
||||||
{
|
{
|
||||||
public static function create(): Server
|
public static function create(): ApiKernel
|
||||||
{
|
{
|
||||||
$apiClient = new MerchantApiClient(ApiConfig::fromEnvironment());
|
$apiClient = new MerchantApiClient(ApiConfig::fromEnvironment());
|
||||||
$orders = new OfflineOrderRepository($apiClient);
|
$orders = new OfflineOrderRepository($apiClient);
|
||||||
|
|
||||||
$registrar = new ToolRegistrar(
|
return new ApiKernel(
|
||||||
new OrderSummaryTool($orders),
|
new OrderSummaryTool($orders),
|
||||||
new AnalyzeOfflineOrdersTool($orders),
|
new AnalyzeOfflineOrdersTool($orders),
|
||||||
new MerchantRankingTool($orders),
|
new MerchantRankingTool($orders),
|
||||||
);
|
);
|
||||||
|
|
||||||
$builder = Server::builder()
|
|
||||||
->setServerInfo('Merchant MCP', '1.0.0');
|
|
||||||
|
|
||||||
return $registrar->register($builder)->build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,142 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Api;
|
||||||
|
|
||||||
|
use App\Http\HttpRequest;
|
||||||
|
use App\Http\JsonResponse;
|
||||||
|
use App\Tools\AnalyzeOfflineOrdersTool;
|
||||||
|
use App\Tools\MerchantRankingTool;
|
||||||
|
use App\Tools\OrderSummaryTool;
|
||||||
|
|
||||||
|
final readonly class ApiKernel
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
private OrderSummaryTool $orderSummaryTool,
|
||||||
|
private AnalyzeOfflineOrdersTool $analyzeOfflineOrdersTool,
|
||||||
|
private MerchantRankingTool $merchantRankingTool,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handle(HttpRequest $request): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
match ($request->path) {
|
||||||
|
'/', '/health' => $this->ok(['status' => 'ok', 'service' => 'merchant-ai-api']),
|
||||||
|
'/tools' => $this->ok($this->tools()),
|
||||||
|
'/api/order-summary' => $this->ok($this->orderSummary($request)),
|
||||||
|
'/api/offline-orders/analyze' => $this->ok($this->analyzeOfflineOrders($request)),
|
||||||
|
'/api/merchant-ranking' => $this->ok($this->merchantRanking($request)),
|
||||||
|
default => JsonResponse::send([
|
||||||
|
'success' => false,
|
||||||
|
'error' => [
|
||||||
|
'code' => 'not_found',
|
||||||
|
'message' => 'API route not found.',
|
||||||
|
],
|
||||||
|
], 404),
|
||||||
|
};
|
||||||
|
} catch (\Throwable $exception) {
|
||||||
|
JsonResponse::send([
|
||||||
|
'success' => false,
|
||||||
|
'error' => [
|
||||||
|
'code' => 'server_error',
|
||||||
|
'message' => $exception->getMessage(),
|
||||||
|
],
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array<string, mixed> $data
|
||||||
|
*/
|
||||||
|
private function ok(array $data): void
|
||||||
|
{
|
||||||
|
JsonResponse::send([
|
||||||
|
'success' => true,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
private function tools(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'tools' => [
|
||||||
|
[
|
||||||
|
'name' => OrderSummaryTool::NAME,
|
||||||
|
'description' => OrderSummaryTool::DESCRIPTION,
|
||||||
|
'method' => 'GET|POST',
|
||||||
|
'path' => '/api/order-summary',
|
||||||
|
'inputSchema' => OrderSummaryTool::inputSchema(),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => AnalyzeOfflineOrdersTool::NAME,
|
||||||
|
'description' => AnalyzeOfflineOrdersTool::DESCRIPTION,
|
||||||
|
'method' => 'GET|POST',
|
||||||
|
'path' => '/api/offline-orders/analyze',
|
||||||
|
'inputSchema' => AnalyzeOfflineOrdersTool::inputSchema(),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => MerchantRankingTool::NAME,
|
||||||
|
'description' => MerchantRankingTool::DESCRIPTION,
|
||||||
|
'method' => 'GET|POST',
|
||||||
|
'path' => '/api/merchant-ranking',
|
||||||
|
'inputSchema' => MerchantRankingTool::inputSchema(),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
private function orderSummary(HttpRequest $request): array
|
||||||
|
{
|
||||||
|
return ($this->orderSummaryTool)(
|
||||||
|
$request->string('date'),
|
||||||
|
$request->int('status'),
|
||||||
|
$request->string('keyword'),
|
||||||
|
$request->string('fieldKey'),
|
||||||
|
$request->string('payType'),
|
||||||
|
$request->string('type'),
|
||||||
|
$request->int('btcId'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
private function analyzeOfflineOrders(HttpRequest $request): array
|
||||||
|
{
|
||||||
|
return ($this->analyzeOfflineOrdersTool)(
|
||||||
|
$request->string('date'),
|
||||||
|
$request->int('status'),
|
||||||
|
$request->string('keyword'),
|
||||||
|
$request->string('fieldKey'),
|
||||||
|
$request->string('payType'),
|
||||||
|
$request->string('type'),
|
||||||
|
$request->int('btcId'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
private function merchantRanking(HttpRequest $request): array
|
||||||
|
{
|
||||||
|
return ($this->merchantRankingTool)(
|
||||||
|
$request->string('date'),
|
||||||
|
$request->int('status'),
|
||||||
|
$request->string('keyword'),
|
||||||
|
$request->string('fieldKey'),
|
||||||
|
$request->string('payType'),
|
||||||
|
$request->string('type'),
|
||||||
|
$request->int('btcId'),
|
||||||
|
$request->string('sortBy'),
|
||||||
|
$request->int('limit'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Http;
|
||||||
|
|
||||||
|
final readonly class HttpRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param array<string, mixed> $input
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
public string $method,
|
||||||
|
public string $path,
|
||||||
|
public array $input,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function fromGlobals(): self
|
||||||
|
{
|
||||||
|
$method = strtoupper((string) ($_SERVER['REQUEST_METHOD'] ?? 'GET'));
|
||||||
|
$uri = (string) ($_SERVER['REQUEST_URI'] ?? '/');
|
||||||
|
$path = parse_url($uri, PHP_URL_PATH) ?: '/';
|
||||||
|
$input = $_GET;
|
||||||
|
|
||||||
|
if (in_array($method, ['POST', 'PUT', 'PATCH'], true)) {
|
||||||
|
$body = trim((string) file_get_contents('php://input'));
|
||||||
|
|
||||||
|
if ($body !== '') {
|
||||||
|
$decoded = json_decode($body, true);
|
||||||
|
|
||||||
|
if (is_array($decoded)) {
|
||||||
|
$input = array_merge($input, $decoded);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new self($method, $path, $input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function string(string $key): ?string
|
||||||
|
{
|
||||||
|
if (!array_key_exists($key, $this->input)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$value = $this->input[$key];
|
||||||
|
|
||||||
|
if ($value === null || is_array($value)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (string) $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function int(string $key): ?int
|
||||||
|
{
|
||||||
|
if (!array_key_exists($key, $this->input)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$value = $this->input[$key];
|
||||||
|
|
||||||
|
if ($value === null || $value === '' || is_array($value)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int) $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Http;
|
||||||
|
|
||||||
|
final class JsonResponse
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param array<string, mixed> $payload
|
||||||
|
*/
|
||||||
|
public static function send(array $payload, int $statusCode = 200): void
|
||||||
|
{
|
||||||
|
http_response_code($statusCode);
|
||||||
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
|
|
||||||
|
echo json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,81 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace App\Tools;
|
|
||||||
|
|
||||||
use Mcp\Server\Builder;
|
|
||||||
|
|
||||||
final readonly class ToolRegistrar
|
|
||||||
{
|
|
||||||
public function __construct(
|
|
||||||
private OrderSummaryTool $orderSummaryTool,
|
|
||||||
private AnalyzeOfflineOrdersTool $analyzeOfflineOrdersTool,
|
|
||||||
private MerchantRankingTool $merchantRankingTool,
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public function register(Builder $builder): Builder
|
|
||||||
{
|
|
||||||
return $builder
|
|
||||||
->addTool(
|
|
||||||
handler: $this->orderSummaryHandler(),
|
|
||||||
name: OrderSummaryTool::NAME,
|
|
||||||
description: OrderSummaryTool::DESCRIPTION,
|
|
||||||
inputSchema: OrderSummaryTool::inputSchema(),
|
|
||||||
)
|
|
||||||
->addTool(
|
|
||||||
handler: $this->analyzeOfflineOrdersHandler(),
|
|
||||||
name: AnalyzeOfflineOrdersTool::NAME,
|
|
||||||
description: AnalyzeOfflineOrdersTool::DESCRIPTION,
|
|
||||||
inputSchema: AnalyzeOfflineOrdersTool::inputSchema(),
|
|
||||||
)
|
|
||||||
->addTool(
|
|
||||||
handler: $this->merchantRankingHandler(),
|
|
||||||
name: MerchantRankingTool::NAME,
|
|
||||||
description: MerchantRankingTool::DESCRIPTION,
|
|
||||||
inputSchema: MerchantRankingTool::inputSchema(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function orderSummaryHandler(): \Closure
|
|
||||||
{
|
|
||||||
return fn (
|
|
||||||
?string $date = null,
|
|
||||||
?int $status = null,
|
|
||||||
?string $keyword = null,
|
|
||||||
?string $fieldKey = null,
|
|
||||||
?string $payType = null,
|
|
||||||
?string $type = null,
|
|
||||||
?int $btcId = null,
|
|
||||||
): array => ($this->orderSummaryTool)($date, $status, $keyword, $fieldKey, $payType, $type, $btcId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function analyzeOfflineOrdersHandler(): \Closure
|
|
||||||
{
|
|
||||||
return fn (
|
|
||||||
?string $date = null,
|
|
||||||
?int $status = null,
|
|
||||||
?string $keyword = null,
|
|
||||||
?string $fieldKey = null,
|
|
||||||
?string $payType = null,
|
|
||||||
?string $type = null,
|
|
||||||
?int $btcId = null,
|
|
||||||
): array => ($this->analyzeOfflineOrdersTool)($date, $status, $keyword, $fieldKey, $payType, $type, $btcId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function merchantRankingHandler(): \Closure
|
|
||||||
{
|
|
||||||
return fn (
|
|
||||||
?string $date = null,
|
|
||||||
?int $status = null,
|
|
||||||
?string $keyword = null,
|
|
||||||
?string $fieldKey = null,
|
|
||||||
?string $payType = null,
|
|
||||||
?string $type = null,
|
|
||||||
?int $btcId = null,
|
|
||||||
?string $sortBy = null,
|
|
||||||
?int $limit = null,
|
|
||||||
): array => ($this->merchantRankingTool)($date, $status, $keyword, $fieldKey, $payType, $type, $btcId, $sortBy, $limit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -9,6 +9,5 @@ return array(
|
||||||
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
|
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
|
||||||
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
|
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
|
||||||
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||||
'09f6b20656683369174dd6fa83b7e5fb' => $vendorDir . '/symfony/polyfill-uuid/bootstrap.php',
|
|
||||||
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -6,27 +6,11 @@ $vendorDir = dirname(__DIR__);
|
||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-common/src'),
|
|
||||||
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
|
||||||
'Symfony\\Polyfill\\Uuid\\' => array($vendorDir . '/symfony/polyfill-uuid'),
|
|
||||||
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
|
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
|
||||||
'Symfony\\Component\\Uid\\' => array($vendorDir . '/symfony/uid'),
|
|
||||||
'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
|
|
||||||
'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-middleware/src', $vendorDir . '/psr/http-server-handler/src'),
|
|
||||||
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
|
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
|
||||||
'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
|
'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
|
||||||
'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
|
|
||||||
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
|
|
||||||
'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
|
|
||||||
'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'),
|
|
||||||
'Opis\\Uri\\' => array($vendorDir . '/opis/uri/src'),
|
|
||||||
'Opis\\String\\' => array($vendorDir . '/opis/string/src'),
|
|
||||||
'Opis\\JsonSchema\\' => array($vendorDir . '/opis/json-schema/src'),
|
|
||||||
'Mcp\\' => array($vendorDir . '/mcp/sdk/src'),
|
|
||||||
'Http\\Discovery\\' => array($vendorDir . '/php-http/discovery/src'),
|
|
||||||
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
|
'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
|
||||||
'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
|
'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
|
||||||
'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
|
'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
|
||||||
'Doctrine\\Deprecations\\' => array($vendorDir . '/doctrine/deprecations/src'),
|
|
||||||
'App\\' => array($baseDir . '/src'),
|
'App\\' => array($baseDir . '/src'),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -10,49 +10,18 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
|
||||||
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
|
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
|
||||||
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
||||||
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||||
'09f6b20656683369174dd6fa83b7e5fb' => __DIR__ . '/..' . '/symfony/polyfill-uuid/bootstrap.php',
|
|
||||||
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
|
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
|
||||||
);
|
);
|
||||||
|
|
||||||
public static $prefixLengthsPsr4 = array (
|
public static $prefixLengthsPsr4 = array (
|
||||||
'p' =>
|
|
||||||
array (
|
|
||||||
'phpDocumentor\\Reflection\\' => 25,
|
|
||||||
),
|
|
||||||
'W' =>
|
|
||||||
array (
|
|
||||||
'Webmozart\\Assert\\' => 17,
|
|
||||||
),
|
|
||||||
'S' =>
|
'S' =>
|
||||||
array (
|
array (
|
||||||
'Symfony\\Polyfill\\Uuid\\' => 22,
|
|
||||||
'Symfony\\Polyfill\\Php80\\' => 23,
|
'Symfony\\Polyfill\\Php80\\' => 23,
|
||||||
'Symfony\\Component\\Uid\\' => 22,
|
|
||||||
),
|
),
|
||||||
'P' =>
|
'P' =>
|
||||||
array (
|
array (
|
||||||
'Psr\\Log\\' => 8,
|
|
||||||
'Psr\\Http\\Server\\' => 16,
|
|
||||||
'Psr\\Http\\Message\\' => 17,
|
'Psr\\Http\\Message\\' => 17,
|
||||||
'Psr\\Http\\Client\\' => 16,
|
'Psr\\Http\\Client\\' => 16,
|
||||||
'Psr\\EventDispatcher\\' => 20,
|
|
||||||
'Psr\\Container\\' => 14,
|
|
||||||
'Psr\\Clock\\' => 10,
|
|
||||||
'PHPStan\\PhpDocParser\\' => 21,
|
|
||||||
),
|
|
||||||
'O' =>
|
|
||||||
array (
|
|
||||||
'Opis\\Uri\\' => 9,
|
|
||||||
'Opis\\String\\' => 12,
|
|
||||||
'Opis\\JsonSchema\\' => 16,
|
|
||||||
),
|
|
||||||
'M' =>
|
|
||||||
array (
|
|
||||||
'Mcp\\' => 4,
|
|
||||||
),
|
|
||||||
'H' =>
|
|
||||||
array (
|
|
||||||
'Http\\Discovery\\' => 15,
|
|
||||||
),
|
),
|
||||||
'G' =>
|
'G' =>
|
||||||
array (
|
array (
|
||||||
|
|
@ -60,10 +29,6 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
|
||||||
'GuzzleHttp\\Promise\\' => 19,
|
'GuzzleHttp\\Promise\\' => 19,
|
||||||
'GuzzleHttp\\' => 11,
|
'GuzzleHttp\\' => 11,
|
||||||
),
|
),
|
||||||
'D' =>
|
|
||||||
array (
|
|
||||||
'Doctrine\\Deprecations\\' => 22,
|
|
||||||
),
|
|
||||||
'A' =>
|
'A' =>
|
||||||
array (
|
array (
|
||||||
'App\\' => 4,
|
'App\\' => 4,
|
||||||
|
|
@ -71,37 +36,10 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
|
||||||
);
|
);
|
||||||
|
|
||||||
public static $prefixDirsPsr4 = array (
|
public static $prefixDirsPsr4 = array (
|
||||||
'phpDocumentor\\Reflection\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
|
||||||
1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
|
||||||
2 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
|
|
||||||
),
|
|
||||||
'Webmozart\\Assert\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/webmozart/assert/src',
|
|
||||||
),
|
|
||||||
'Symfony\\Polyfill\\Uuid\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/symfony/polyfill-uuid',
|
|
||||||
),
|
|
||||||
'Symfony\\Polyfill\\Php80\\' =>
|
'Symfony\\Polyfill\\Php80\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
|
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
|
||||||
),
|
),
|
||||||
'Symfony\\Component\\Uid\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/symfony/uid',
|
|
||||||
),
|
|
||||||
'Psr\\Log\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/psr/log/src',
|
|
||||||
),
|
|
||||||
'Psr\\Http\\Server\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/psr/http-server-middleware/src',
|
|
||||||
1 => __DIR__ . '/..' . '/psr/http-server-handler/src',
|
|
||||||
),
|
|
||||||
'Psr\\Http\\Message\\' =>
|
'Psr\\Http\\Message\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/psr/http-factory/src',
|
0 => __DIR__ . '/..' . '/psr/http-factory/src',
|
||||||
|
|
@ -111,42 +49,6 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/psr/http-client/src',
|
0 => __DIR__ . '/..' . '/psr/http-client/src',
|
||||||
),
|
),
|
||||||
'Psr\\EventDispatcher\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/psr/event-dispatcher/src',
|
|
||||||
),
|
|
||||||
'Psr\\Container\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/psr/container/src',
|
|
||||||
),
|
|
||||||
'Psr\\Clock\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/psr/clock/src',
|
|
||||||
),
|
|
||||||
'PHPStan\\PhpDocParser\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src',
|
|
||||||
),
|
|
||||||
'Opis\\Uri\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/opis/uri/src',
|
|
||||||
),
|
|
||||||
'Opis\\String\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/opis/string/src',
|
|
||||||
),
|
|
||||||
'Opis\\JsonSchema\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/opis/json-schema/src',
|
|
||||||
),
|
|
||||||
'Mcp\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/mcp/sdk/src',
|
|
||||||
),
|
|
||||||
'Http\\Discovery\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/php-http/discovery/src',
|
|
||||||
),
|
|
||||||
'GuzzleHttp\\Psr7\\' =>
|
'GuzzleHttp\\Psr7\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
|
0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
|
||||||
|
|
@ -159,10 +61,6 @@ class ComposerStaticInit842ab640c1f6a67d129686b79420231b
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
|
0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
|
||||||
),
|
),
|
||||||
'Doctrine\\Deprecations\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/doctrine/deprecations/src',
|
|
||||||
),
|
|
||||||
'App\\' =>
|
'App\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/../..' . '/src',
|
0 => __DIR__ . '/../..' . '/src',
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,9 +1,9 @@
|
||||||
<?php return array(
|
<?php return array(
|
||||||
'root' => array(
|
'root' => array(
|
||||||
'name' => '__root__',
|
'name' => '__root__',
|
||||||
'pretty_version' => '1.0.0+no-version-set',
|
'pretty_version' => 'dev-master',
|
||||||
'version' => '1.0.0.0',
|
'version' => 'dev-master',
|
||||||
'reference' => null,
|
'reference' => '7984fdc92f51bf7a1b1cac42da4ec23fb57ccf8d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
|
@ -11,23 +11,14 @@
|
||||||
),
|
),
|
||||||
'versions' => array(
|
'versions' => array(
|
||||||
'__root__' => array(
|
'__root__' => array(
|
||||||
'pretty_version' => '1.0.0+no-version-set',
|
'pretty_version' => 'dev-master',
|
||||||
'version' => '1.0.0.0',
|
'version' => 'dev-master',
|
||||||
'reference' => null,
|
'reference' => '7984fdc92f51bf7a1b1cac42da4ec23fb57ccf8d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'doctrine/deprecations' => array(
|
|
||||||
'pretty_version' => '1.1.6',
|
|
||||||
'version' => '1.1.6.0',
|
|
||||||
'reference' => 'd4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../doctrine/deprecations',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'guzzlehttp/guzzle' => array(
|
'guzzlehttp/guzzle' => array(
|
||||||
'pretty_version' => '7.12.1',
|
'pretty_version' => '7.12.1',
|
||||||
'version' => '7.12.1.0',
|
'version' => '7.12.1.0',
|
||||||
|
|
@ -55,126 +46,6 @@
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'mcp/sdk' => array(
|
|
||||||
'pretty_version' => 'v0.6.0',
|
|
||||||
'version' => '0.6.0.0',
|
|
||||||
'reference' => '433c84b58af346dd32f15f9909679e96a46ebe23',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../mcp/sdk',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'opis/json-schema' => array(
|
|
||||||
'pretty_version' => '2.6.0',
|
|
||||||
'version' => '2.6.0.0',
|
|
||||||
'reference' => '8458763e0dd0b6baa310e04f1829fc73da4e8c8a',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../opis/json-schema',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'opis/string' => array(
|
|
||||||
'pretty_version' => '2.1.0',
|
|
||||||
'version' => '2.1.0.0',
|
|
||||||
'reference' => '3e4d2aaff518ac518530b89bb26ed40f4503635e',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../opis/string',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'opis/uri' => array(
|
|
||||||
'pretty_version' => '1.1.0',
|
|
||||||
'version' => '1.1.0.0',
|
|
||||||
'reference' => '0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../opis/uri',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'php-http/async-client-implementation' => array(
|
|
||||||
'dev_requirement' => false,
|
|
||||||
'provided' => array(
|
|
||||||
0 => '*',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
'php-http/client-implementation' => array(
|
|
||||||
'dev_requirement' => false,
|
|
||||||
'provided' => array(
|
|
||||||
0 => '*',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
'php-http/discovery' => array(
|
|
||||||
'pretty_version' => '1.20.0',
|
|
||||||
'version' => '1.20.0.0',
|
|
||||||
'reference' => '82fe4c73ef3363caed49ff8dd1539ba06044910d',
|
|
||||||
'type' => 'composer-plugin',
|
|
||||||
'install_path' => __DIR__ . '/../php-http/discovery',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'phpdocumentor/reflection-common' => array(
|
|
||||||
'pretty_version' => '2.2.0',
|
|
||||||
'version' => '2.2.0.0',
|
|
||||||
'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'phpdocumentor/reflection-docblock' => array(
|
|
||||||
'pretty_version' => '6.0.3',
|
|
||||||
'version' => '6.0.3.0',
|
|
||||||
'reference' => '7bae67520aa9f5ecc506d646810bd40d9da54582',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'phpdocumentor/type-resolver' => array(
|
|
||||||
'pretty_version' => '2.0.0',
|
|
||||||
'version' => '2.0.0.0',
|
|
||||||
'reference' => '327a05bbee54120d4786a0dc67aad30226ad4cf9',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'phpstan/phpdoc-parser' => array(
|
|
||||||
'pretty_version' => '2.3.2',
|
|
||||||
'version' => '2.3.2.0',
|
|
||||||
'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpstan/phpdoc-parser',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'psr/clock' => array(
|
|
||||||
'pretty_version' => '1.0.0',
|
|
||||||
'version' => '1.0.0.0',
|
|
||||||
'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../psr/clock',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'psr/container' => array(
|
|
||||||
'pretty_version' => '2.0.2',
|
|
||||||
'version' => '2.0.2.0',
|
|
||||||
'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../psr/container',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'psr/event-dispatcher' => array(
|
|
||||||
'pretty_version' => '1.0.0',
|
|
||||||
'version' => '1.0.0.0',
|
|
||||||
'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../psr/event-dispatcher',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'psr/http-client' => array(
|
'psr/http-client' => array(
|
||||||
'pretty_version' => '1.0.3',
|
'pretty_version' => '1.0.3',
|
||||||
'version' => '1.0.3.0',
|
'version' => '1.0.3.0',
|
||||||
|
|
@ -187,8 +58,7 @@
|
||||||
'psr/http-client-implementation' => array(
|
'psr/http-client-implementation' => array(
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
'provided' => array(
|
'provided' => array(
|
||||||
0 => '*',
|
0 => '1.0',
|
||||||
1 => '1.0',
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'psr/http-factory' => array(
|
'psr/http-factory' => array(
|
||||||
|
|
@ -203,8 +73,7 @@
|
||||||
'psr/http-factory-implementation' => array(
|
'psr/http-factory-implementation' => array(
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
'provided' => array(
|
'provided' => array(
|
||||||
0 => '*',
|
0 => '1.0',
|
||||||
1 => '1.0',
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'psr/http-message' => array(
|
'psr/http-message' => array(
|
||||||
|
|
@ -219,37 +88,9 @@
|
||||||
'psr/http-message-implementation' => array(
|
'psr/http-message-implementation' => array(
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
'provided' => array(
|
'provided' => array(
|
||||||
0 => '*',
|
0 => '1.0',
|
||||||
1 => '1.0',
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'psr/http-server-handler' => array(
|
|
||||||
'pretty_version' => '1.0.2',
|
|
||||||
'version' => '1.0.2.0',
|
|
||||||
'reference' => '84c4fb66179be4caaf8e97bd239203245302e7d4',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../psr/http-server-handler',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'psr/http-server-middleware' => array(
|
|
||||||
'pretty_version' => '1.0.2',
|
|
||||||
'version' => '1.0.2.0',
|
|
||||||
'reference' => 'c1481f747daaa6a0782775cd6a8c26a1bf4a3829',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../psr/http-server-middleware',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'psr/log' => array(
|
|
||||||
'pretty_version' => '3.0.2',
|
|
||||||
'version' => '3.0.2.0',
|
|
||||||
'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../psr/log',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'ralouphie/getallheaders' => array(
|
'ralouphie/getallheaders' => array(
|
||||||
'pretty_version' => '3.0.3',
|
'pretty_version' => '3.0.3',
|
||||||
'version' => '3.0.3.0',
|
'version' => '3.0.3.0',
|
||||||
|
|
@ -277,32 +118,5 @@
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-uuid' => array(
|
|
||||||
'pretty_version' => 'v1.37.0',
|
|
||||||
'version' => '1.37.0.0',
|
|
||||||
'reference' => '26dfec253c4cf3e51b541b52ddf7e42cb0908e94',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-uuid',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'symfony/uid' => array(
|
|
||||||
'pretty_version' => 'v7.4.9',
|
|
||||||
'version' => '7.4.9.0',
|
|
||||||
'reference' => '2676b524340abcfe4d6151ec698463cebafee439',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../symfony/uid',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'webmozart/assert' => array(
|
|
||||||
'pretty_version' => '2.4.1',
|
|
||||||
'version' => '2.4.1.0',
|
|
||||||
'reference' => '2ccb7c2e821038c03a3e6e1700c570c158c55f70',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../webmozart/assert',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 433c84b58af346dd32f15f9909679e96a46ebe23
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 8458763e0dd0b6baa310e04f1829fc73da4e8c8a
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 3e4d2aaff518ac518530b89bb26ed40f4503635e
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 82fe4c73ef3363caed49ff8dd1539ba06044910d
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 1d01c49d4ed62f25aa84a747ad35d5a16924662b
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 7bae67520aa9f5ecc506d646810bd40d9da54582
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 327a05bbee54120d4786a0dc67aad30226ad4cf9
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit a004701b11273a26cd7955a61d67a7f1e525a45a
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit e41a24703d4560fd0acb709162f73b8adfc3aa0d
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit c71ecc56dfe541dbd90c5360474fbc405f8d5963
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit dbefd12671e8a14ec7f180cab83036ed26714bb0
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 84c4fb66179be4caaf8e97bd239203245302e7d4
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit c1481f747daaa6a0782775cd6a8c26a1bf4a3829
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit f16e1d5863e37f8d8c2a01719f5b34baa2b714d3
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 26dfec253c4cf3e51b541b52ddf7e42cb0908e94
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 2676b524340abcfe4d6151ec698463cebafee439
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 2ccb7c2e821038c03a3e6e1700c570c158c55f70
|
|
||||||
Loading…
Reference in New Issue