Pessoal, 

Conforme foi falado em aula, nosso grupos fizera uma refatoração do componente de consulta as redes sociais. A motivação dessa atividade foi a criação de abstrações únicas de acesso as diversas redes sociais (na versão antiga, existem interfaces distintas para o tweeter e o facebook). Nesse documento será tratado como é o modo de uso da nova API, para os grupos responsáveis possam alterar o código e a versão antiga da API possa ser removida do código-fonte.

Criação de "buscadores"

Na nova versão da API, a criação de buscadores é feita através de um envio de mensagem à uma fábrica abstrata, conforme exemplo abaixo:

buscador := SNETSocialNetworkQuerierFactory instance create. 

Vale notar que no exemplo acima, é criado um buscador que procura em todas as redes sociais implementadas (no momento facebook, tweeter e youtube), caso seja desejado, é possível criar um buscador para somente uma rede social, conforme exemplo abaixo, onde é criado um buscador para o facebook:

buscador := SNETSocialNetworkQuerierFactory instance createFor: 'facebook'.

Uso de buscadores

Antes de fazer buscas em redes sociais, é necessário a inicialização do buscador. Para isso, envia-se a mensagem 'init' ao buscador, conforme trecho de código abaixo:

buscador init.

Após a inicialização é possível a execução de consultas nas redes sociais. Para isso, são disponibilizadas duas operações abaixo :

  • query: aQuery first: anElementCount by: anUser since: aStartingDate until: anEndingDate
  • query: aQuery first: anElementCount since: aStartingDate until: anEndingDate

Nas operações acima os parametros tem a seguinte semântica:

aQuery compreende o texto a ser buscado;
anElementCount indica a quantidade de elementos a serem retornados;
aStartingDate e anEndingDate respectivamente o inicio e o fim da janela de busca.

A primeira operação tem também um parâmetro chamado anUser, que indica um usuário para ser usado como filtro nas buscas.

Processamento de Resultados

Após a execução de uma busca, será sempre retornado um objeto do tipo SNETSocialNetworkQueryResult, que por sua vez tem uma propriedade chamada elements, que contém todos os resultados de busca encontrados. Os resultados de busca podem ser de dois tipos, SNETPage e SNETPost:

SNETPage


Instâncias de SNETPage abstraem o conceito de página de uma rede social. Como exemplos de página, pode-se citar a Timeline de um usuário no tweeter, a página pessoal de um usuário ou de um grupo no facebook e etc. Páginas têm as seguintes propriedades:

downVotes negativações
description descrição da página
shares número de compartilhamentos
socialNetwork identificador da rede social de origem (valores válidos atualmente: 'facebook', 'tweeter' e 'youtube')
upVotes número de curtidas
creationTime data e hora de criação
owners coleção de "donos" da página
title título da página
posts coleção de postagens na página (instâncias de SNETPost)
views número de visualizações


SNETPost


Instâncias de SNETPage abstraem o conceito de postagens de uma rede social. Como exemplos de postagens, pode-se citar um tweet, um comentário num video no youtube, uma postagem e comentários na página pessoal de um usuário no facebook e etc. Posts têm as seguintes propriedades:

downVotes número de negativações
description texto da postagem
shares número de compartilhamento
socialNetwork dentificador da rede social de origem (valores válidos atualmente: 'facebook', 'tweeter' e 'youtube')
upVotes número de curtidas
creationTime data e hora de criação
user usuários resposável pela postagem
comments comentários relativos à postagem (instâncias de SNETPost)