php – Repositories podem manipular e “transformar” dados?


Estou implementando duas APIs de serviços de vídeo (Youtube e Vimeo), e por se tratar de uma camada de dados, achei ideal criar repositórios para cada um, sendo a API a “fonte” dos dados.

algo como:

class YoutubeApiRepository implements VideoRepositoryContract
{
    public function search(string $term): ?array
    {
        $YoutubeApi = new YoutubeApi;
        return $YoutubeApi->findVideos('baby shark');
        // return Google_Service_YouTube_SearchResult
    }
}

class VimeoApiRepository implements VideoRepositoryContract
{
    public function search(string $term): ?array
    {
        $VideoApi = new VimeoApiClient;
        return $VideoApi->findAllByTerm('baby shark')
        // return ()
    }
}

O “problema” é que cada API tem um retorno num formato diferente…

1 – Seria errado um repository iterar e manipular os resultados dessas API para padronizá-los?
ou isso seria melhor se atrubuído à uma outra classe “transformadora”?

2 – No caso de uma classe transformadora, sendo criada uma interface e uma implementação concreta para cada repositório, como
seria possível padronizar os paramêtros passados? por exemplo, o Youtube
retorna uma instância do Objeto Google_Service_YouTube_SearchResult, já o Vimeo
retorna um Array “cru”, e qualquer dado poderia ser passado para o transformador…

Exemplo da classe “transformadora”:

Interface VideoResponseTransformer
{
    public function transform($rawData): array
}

class YoutubeResponseTransformer implements VideoResponseTransformer
{
    public function transform($rawData) //Google_Service_YouTube_SearchResult
    {
        foreach ($rawData as $video) {
            ....
        }
   }
}

class VimeoResponseTransformer implements VideoResponseTransformer
{
    public function transform($rawData) //Array
    {
        foreach ($rawData as $video) {
            ....
        }
    }
}