Feature/has#6 - Service para integrar o projeto à API do Instagram

Desenvolvi o core do projeto que é trazer fotos baseado em uma dada hashtag. Considerações:

1) Tentei o modelo de rota http://hashgram.com/home/index/hashtag/Salvador contudo não funcionou (404 - Not Found). Diante disso, a página segue o modelo http://hashgram/?hashtag=Salvador. Caso o parâmetro esteja vazio, ele assume que a hashtag é Salvador.

2) Tentei dar um pull-request mas ele não funcionou. Primeiro, ainda dentro da branch feature/HAS#6 eu tentei $ git request-pull feature/HAS#6 dev mas recebi o erro:
```
fatal: 'dev' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
The following changes since commit 9d17ef462d38e19d66ad2e4a33c2fd6e065f529e:

  Show photos and hashtag searched (2014-07-04 10:36:23 +0100)

are available in the git repository at:

  dev

for you to fetch changes up to 9d17ef462d38e19d66ad2e4a33c2fd6e065f529e:

  Show photos and hashtag searched (2014-07-04 10:36:23 +0100)
```

Depois fechei a branch com o git flow finish e tentei $ git request-pull feature/HAS#6 dev mas recebi o erro
```

fatal: Not a valid revision: HAS#6
```

3) Agora estou na branch dev, qual é o próximo passo? Eu vou documentar esse processo de dar pull-request e utilizar o gitflow porque eu ainda me confundo um pouco.
É mais elegante e apropriado, lançar uma exceção para possíveis erros do que escrever um echo.

```php
if (empty(self::CLIENT_ID) || empty(self::CLIENT_SECRET) || empty(self::CALLBACK) || empty(self::GRANT_TYPE)){
      throw new \Exception('Mensagem de erro e possível solução');
}
```

Para if's com muitas condições (não que seja o caso), uma boa prática para facilitar leitura, é escrever assim (mas fica a cargo do dev):
```php
if (empty(self::CLIENT_ID)
    || empty(self::CLIENT_SECRET)
    && empty(self::CALLBACK)
    && empty(self::GRANT_TYPE))
    || empty(self::GRANT_TYPE))
    || ....
{
```

Outra coisa. **SEMPRE** temos que criar a cultura de logar tudo que puder ser logado para facilitar nossa vida depois. Um erro/exceção é algo a ser logado por exemplo.

Para logar algo no slim:
```php
$log = $this->app->getLog();
$log->warning($e);
```
##Ver documentação do slim
http://docs.slimframework.com/#Logging-Overview

Eu escreveria este código assim:

```php
```php
if (empty(self::CLIENT_ID) || empty(self::CLIENT_SECRET) || empty(self::CALLBACK) || empty(self::GRANT_TYPE)){
      $e = 'Mensagem de erro e possível solução';
      $log = $this->app->getLog();
      $log->warning($e);  //aqui a gente loga usando o slim
      throw new \Exception($e); //aqui a gente lança uma exceção que é capturada pelo slim, teste pra ver como funciona
}
```
```