symfony-doge/veslo

View on GitHub
src/AnthillBundle/Vacancy/ConfigurableRoadmapInterface.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

/*
 * This file is part of the Veslo project <https://github.com/symfony-doge/veslo>.
 *
 * (C) 2019 Pavel Petrov <itnelo@gmail.com>.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @license https://opensource.org/licenses/GPL-3.0 GPL-3.0
 */

declare(strict_types=1);

namespace Veslo\AnthillBundle\Vacancy;

use Veslo\AnthillBundle\Vacancy\Roadmap\ConfigurationInterface;
use Veslo\AnthillBundle\Vacancy\Roadmap\StrategyInterface;

/**
 * Should be implemented by roadmap service that can be configured with specific strategy and settings
 * Provides opportunity to customize vacancy search algorithm, adds support for different search criteria
 *
 * Configurable roadmaps can retrieve data (based on configuration) for traversing job sites with preferable strategy
 * For example:
 * - URL with vacancy identifier increment, ex. jobsite.ltd/category/(id, id+1, id+2)
 * - URL with search criteria, ex. jobsite.ltd/vacancies?text=$query&from=$from&to=$to ...
 */
interface ConfigurableRoadmapInterface extends RoadmapInterface
{
    /**
     * Returns strategy service that holds website-specific vacancy search algorithm
     *
     * @return StrategyInterface
     */
    public function getStrategy(): StrategyInterface;

    /**
     * Returns configuration which will be used by search strategy
     *
     * @return ConfigurationInterface
     */
    public function getConfiguration(): ConfigurationInterface;
}