A Symfony2 bundle that integrates the Stash REST API into native Symfony2 services.
- 
Install Composer. # Install Composer curl -sS https://getcomposer.org/installer | php 
- 
Add this bundle to the composer.jsonfile of your project.# Add StashApiBundle as a dependency php composer.phar require medicorenl/stash-api-bundle dev-master
- 
After installing, you need to require Composer's autloader in the bootstrap of your project. // app/autoload.php $loader = require __DIR__ . '/../vendor/autoload.php'; 
- 
Add the bundle to your application kernel. // app/AppKernel.php public function registerBundles() { return array( // ... new StashApiBundle\StashApiBundle(), // ... ); } 
- 
Configure the bundle by adding parameters to the config.ymlfile:# app/config/config.yml stash_api.url: "http://stash.your-organisation.com/rest/api/latest/" stash_api.credentials: "username:password" 
This bundle contains a number of services, to access them through the service container:
// Get the StashApiBundle\Service\BranchService
$branchService = $this->get('stash_api.branch');
$branchService->searchBranch($project, $repository, $branch);
// Get the StashApiBundle\Service\TagService
$tagService = $this->get('stash_api.tag');
$tagService->getAll($project, $repository, $params);
// Get the StashApiBundle\Service\CommitService
$commitService = $this->get('stash_api.commit');
$commitService->getAll($project, $repository, $params);
// Get the StashApiBundle\Service\FileService
$fileService = $this->get('stash_api.file');
$fileService->getAll($project, $repository, $reference, $path);
// Get the StashApiBundle\Service\PullRequestService
$pullRequestService = $this->get('stash_api.pullrequest');
$pullRequestService->getAll($project, $repository, $params);You can also add them to the service container of your own bundle:
<!-- src/Project/Bundle/Resources/config/services.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services$
    <services>
        <service id="myproject.myservice" class="MyProject\MyBundle\Services\MyService.php" public="true">
            <argument type="service" id="stash_api.commit" />
            <argument type="service" id="stash_api.file" />
            <argument type="service" id="stash_api.branch" />
            <argument type="service" id="stash_api.tag" />
            <argument type="service" id="stash_api.pullrequest" />
        </service>
    </services>
</container>You can then use them in your own services
<?php
namespace Project\Bundle\Services;
use StashApiBundle\Service\CommitService;
use StashApiBundle\Service\FileService;
use StashApiBundle\Service\BranchService;
use StashApiBundle\Service\TagService;
use StashApiBundle\Service\PullRequestService;
/**
 * Service class for my bundle.
 */
class MyService
{
    /**
     * @var \StashApiBundle\Service\CommitService
     */
    private $commitService;
    /**
     * @var \StashApiBundle\Service\FileService
     */
    private $fileService;
    /**
     * @var \StashApiBundle\Service\BranchService
     */
    private $branchService;
    /**
     * @var \StashApiBundle\Service\TagService
     */
    private $tagService;
    /**
     * @var \StashApiBundle\Service\PullRequestService
     */
    private $pullRequestService;
    /**
     * Constructor.
     *
     * @param \StashApiBundle\Service\CommitService      $commitService
     * @param \StashApiBundle\Service\FileService        $fileService
     * @param \StashApiBundle\Service\BranchServie       $branchService
     * @param \StashApiBundle\Service\TagService         $tagService
     * @param \StashApiBundle\Service\PullRequestService $pullRequestService
     */
    public function __construct(
        CommitService      $commitService,
        FileService        $fileService,
        BranchService      $branchService,
        TagService         $tagService,
        PullRequestService $pullRequestService,
    ) {
        $this->commitService      = $commitService;
        $this->fileService        = $fileService;
        $this->branchService      = $branchService;
        $this->tagService         = $tagService;
        $this->pullRequestService = $pullRequestService;
    }
}StashApiBundle uses PHP Unit for unit testing.
- 
Download PHP Unit. # Download PHP Unit wget http://pear.phpunit.de/get/phpunit.phar chmod +x phpunit.phar
- 
Make sure all dependencies are installed through Composer. # Install dependencies php composer.phar install
- 
Run the unit tests. # Run unit tests php phpunit.phar
