/**
  * @param WebHookReceiver    $webHookReceiver
  * @param WebHookRelay       $webHookRelay
  * @param CampaignRepository $campaignRepository
  * @param ClientRepository   $clientRepository
  * @param HttpRequest        $httpRequest
  */
 public function index(WebHookReceiver $webHookReceiver, WebHookRelay $webHookRelay, CampaignRepository $campaignRepository, ClientRepository $clientRepository, HttpRequest $httpRequest)
 {
     $vars = $webHookReceiver->receiveHook(Request::all());
     Log::info('Web Hook Received : ' . print_r($vars, true));
     $campaign = $campaignRepository->findByDomain($vars['domain']);
     $client = $clientRepository->find($campaign->clientId());
     $webHookRelay->relay($vars, $client, $httpRequest);
 }
 public function setUp()
 {
     parent::setUp();
     // we need to mock the clientRepository for authentication
     $this->clientRepository = Mockery::mock('App\\AmbitiousMailSender\\Clients\\ClientRepository', 'ClientRepository');
     $this->app->instance('App\\AmbitiousMailSender\\Clients\\ClientRepository', $this->clientRepository);
     $this->clientRepository->shouldReceive('findByName')->with('user')->andReturn(new Client(['id' => 1, 'apiKey' => 'secret']));
 }
 public function __construct(ClientRepository $clientRepository)
 {
     $username = Request::header('php-auth-user');
     $password = Request::header('php-auth-pw');
     $client = $clientRepository->findByName($username);
     if (!$client) {
         abort(401, 'Permission Denied');
     }
     if ($client->apiKey() !== $password) {
         abort(401, 'Permission Denied');
     }
     $this->client_id = $client->id();
 }