1. Go to this page and download the library: Download crwlr/crwl-extension-utils library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
crwlr / crwl-extension-utils example snippets
namespace MyVendor\MyCrwlExtension\StepBuilders;
use Crwlr\Crawler\Steps\StepInterface;
use Crwlr\Crawler\Steps\StepOutputType;
use Crwlr\CrwlExtensionUtils\ConfigParam;
use Crwlr\CrwlExtensionUtils\StepBuilder;
use MyVendor\MyCrwlExtension\Steps\MyStep;
class MyStepBuilder extends StepBuilder
{
public function stepId(): string
{
return 'my-extension.my-step';
}
public function label(): string
{
return 'This step does X.';
}
public function configToStep(array $stepConfig): StepInterface
{
$fooConfigValue = $this->getValueFromConfigArray('foo', $stepConfig);
$barConfigValue = $this->getValueFromConfigArray('bar', $stepConfig);
$bazConfigValue = $this->getValueFromConfigArray('baz', $stepConfig);
return new MyStep($fooConfigValue, $barConfigValue);
}
public function configParams(): array
{
return [
ConfigParam::string('foo')
->inputLabel('Your foo'),
ConfigParam::int('bar')
->default(5)
->inputLabel('Number of bar')
->description('Provide the number of bar, so the step can do X.'),
ConfigParam::bool('baz')
->inputLabel('Baz?'),
];
}
/**
* Define the possible output type. More info at
* https://www.crwlr.software/packages/crawler/v1.10/steps-and-data-flow/custom-steps#step-output-types
* If the underlying step can yield different output types based on the configuration,
* just return StepOutputType::Mixed.
*/
public function outputType(): StepOutputType
{
return StepOutputType::AssociativeArrayOrObject;
}
}
namespace MyVendor\MyCrwlExtension\StepBuilders;
use Crwlr\Crawler\Steps\StepInterface;
use Crwlr\Crawler\Steps\StepOutputType;use Crwlr\CrwlExtensionUtils\StepBuilder;
use MyVendor\MyCrwlExtension\Steps\MyStep;
class MyStepBuilder extends StepBuilder
{
public function stepId(): string
{
return 'my-extension.my-step';
}
public function label(): string
{
return 'This step does X.';
}
public function configToStep(array $stepConfig): StepInterface
{
return new MyStep();
}
public function outputType(): StepOutputType
{
return StepOutputType::Scalar;
}
}
public function configToStep(array $stepConfig): StepInterface
{
return new MyStep($this->fileStoragePath);
}
public function isLoadingStep(): bool
{
return true;
}
namespace MyVendor\MyCrwlExtension;
use Crwlr\CrwlExtensionUtils\ExtensionPackageManager;
use MyCrwlExtension\StepBuilders\FooStepBuilder;
use MyCrwlExtension\StepBuilders\BarStepBuilder;
use MyCrwlExtension\StepBuilders\BazStepBuilder;
class ServiceProvider extends \Illuminate\Support\ServiceProvider
{
public function register()
{
$this->app->make(ExtensionPackageManager::class)
->registerPackage('my-vendor-name/my-crwl-extension')
->registerStep(FooStepBuilder::class)
->registerStep(BarStepBuilder::class)
->registerStep(BazStepBuilder::class);
}
}
use Crwlr\CrwlExtensionUtils\TrackingGuzzleClientFactory;
// Let the factory be resolved by the laravel service container.
$factory = app()->make(TrackingGuzzleClientFactory::class);
$client = $factory->getClient();
use Crwlr\CrwlExtensionUtils\RequestTracker;
// Let the tracker be resolved by the laravel service container.
$tracker = app()->make(RequestTracker::class);
// Execute your request however you want...
$tracker->trackHttpResponse();
// or
$tracker->trackHeadlessBrowserResponse();
$tracker->trackHttpResponse($request, $response);
// or
$tracker->trackHeadlessBrowserResponse($request, $response);