참고소스 수정본
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Firecrawl\Laravel\Facades;
|
||||
|
||||
use Firecrawl\Client\FirecrawlClient;
|
||||
use Firecrawl\Models\AgentOptions;
|
||||
use Firecrawl\Models\AgentStatusResponse;
|
||||
use Firecrawl\Models\BatchScrapeJob;
|
||||
use Firecrawl\Models\BatchScrapeOptions;
|
||||
use Firecrawl\Models\BrowserCreateResponse;
|
||||
use Firecrawl\Models\BrowserDeleteResponse;
|
||||
use Firecrawl\Models\BrowserExecuteResponse;
|
||||
use Firecrawl\Models\BrowserListResponse;
|
||||
use Firecrawl\Models\ConcurrencyCheck;
|
||||
use Firecrawl\Models\CrawlJob;
|
||||
use Firecrawl\Models\CrawlOptions;
|
||||
use Firecrawl\Models\CreditUsage;
|
||||
use Firecrawl\Models\Document;
|
||||
use Firecrawl\Models\MapData;
|
||||
use Firecrawl\Models\MapOptions;
|
||||
use Firecrawl\Models\ScrapeOptions;
|
||||
use Firecrawl\Models\SearchData;
|
||||
use Firecrawl\Models\SearchOptions;
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
|
||||
/**
|
||||
* @method static Document scrape(string $url, ?ScrapeOptions $options = null)
|
||||
* @method static BrowserExecuteResponse interact(string $jobId, string $code, string $language = 'node', ?int $timeout = null, ?string $origin = null)
|
||||
* @method static BrowserDeleteResponse stopInteractiveBrowser(string $jobId)
|
||||
* @method static CrawlJob crawl(string $url, ?CrawlOptions $options = null, int $pollIntervalSec = 2, int $timeoutSec = 300)
|
||||
* @method static CrawlJob getCrawlStatus(string $jobId)
|
||||
* @method static array<string, mixed> cancelCrawl(string $jobId)
|
||||
* @method static BatchScrapeJob batchScrape(list<string> $urls, ?BatchScrapeOptions $options = null, int $pollIntervalSec = 2, int $timeoutSec = 300)
|
||||
* @method static array<string, mixed> cancelBatchScrape(string $jobId)
|
||||
* @method static MapData map(string $url, ?MapOptions $options = null)
|
||||
* @method static SearchData search(string $query, ?SearchOptions $options = null)
|
||||
* @method static AgentStatusResponse agent(AgentOptions $options, int $pollIntervalSec = 2, int $timeoutSec = 300)
|
||||
* @method static array<string, mixed> cancelAgent(string $jobId)
|
||||
* @method static BrowserCreateResponse browser(?int $ttl = null, ?int $activityTtl = null, ?bool $streamWebView = null)
|
||||
* @method static BrowserExecuteResponse browserExecute(string $sessionId, string $code, string $language = 'bash', ?int $timeout = null)
|
||||
* @method static BrowserDeleteResponse deleteBrowser(string $sessionId)
|
||||
* @method static BrowserListResponse listBrowsers(?string $status = null)
|
||||
* @method static ConcurrencyCheck getConcurrency()
|
||||
* @method static CreditUsage getCreditUsage()
|
||||
*
|
||||
* @see FirecrawlClient
|
||||
*/
|
||||
class Firecrawl extends Facade
|
||||
{
|
||||
protected static function getFacadeAccessor(): string
|
||||
{
|
||||
return FirecrawlClient::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Firecrawl\Laravel;
|
||||
|
||||
use Firecrawl\Client\FirecrawlClient;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class FirecrawlServiceProvider extends ServiceProvider
|
||||
{
|
||||
public function register(): void
|
||||
{
|
||||
$this->mergeConfigFrom(__DIR__ . '/../../config/firecrawl.php', 'firecrawl');
|
||||
|
||||
$this->app->singleton(FirecrawlClient::class, function ($app): FirecrawlClient {
|
||||
/** @var array<string, mixed> $config */
|
||||
$config = $app['config']->get('firecrawl', []);
|
||||
|
||||
$apiKey = isset($config['api_key']) && is_string($config['api_key'])
|
||||
? trim($config['api_key'])
|
||||
: null;
|
||||
|
||||
if ($apiKey === '') {
|
||||
$apiKey = null;
|
||||
}
|
||||
|
||||
return FirecrawlClient::create(
|
||||
apiKey: $apiKey,
|
||||
apiUrl: isset($config['api_url']) && is_string($config['api_url']) ? $config['api_url'] : null,
|
||||
timeoutSeconds: (float) ($config['timeout'] ?? 300),
|
||||
maxRetries: (int) ($config['max_retries'] ?? 3),
|
||||
backoffFactor: (float) ($config['backoff_factor'] ?? 0.5),
|
||||
);
|
||||
});
|
||||
|
||||
$this->app->alias(FirecrawlClient::class, 'firecrawl');
|
||||
}
|
||||
|
||||
public function boot(): void
|
||||
{
|
||||
if ($this->app->runningInConsole()) {
|
||||
$this->publishes([
|
||||
__DIR__ . '/../../config/firecrawl.php' => $this->app->configPath('firecrawl.php'),
|
||||
], 'firecrawl-config');
|
||||
}
|
||||
}
|
||||
|
||||
/** @return list<string> */
|
||||
public function provides(): array
|
||||
{
|
||||
return [FirecrawlClient::class, 'firecrawl'];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user