Projeto Cuidando do Meu Bairro/Guia APIs

Documentação

Para o público em geral:

Técnica:

Avisos de bugs ou sugestões

Créditos e licenças  


    0%     25%     50%     75%     100%

As APIs do projeto são apresentadas na seção Arquitetura da documentação do desenvolvedor.

A navegação HTML é de responsabilidade do Cuidando2, implementado atualmente em cuidando.vc, que através de Ajax faz a comunicação com cada módulo, nos respectivos endpoints:

Função Responsabilidade Endpoint em uso Notas
Geolocalização Gastos Abertos site-cuidando.rhcloud.com/dados/api/v1 Geocodificação das coordenadas implícitas no texto.
Dados de execução orçamentária Gastos Abertos demo.gastosabertos.org Serviço de provimento de dados, leitura da base.
Autenticação dos usuários Vira-Lata viralata-cuidando.rhcloud.com Token de acesso, leitura/escrita.
Comentários dos usuários Tagarela tagarela-cuidando.rhcloud.com Serviço de comentários, leitura/escrita dos textos
Interface com eSIC EsicLivre cuidando.vc/esiclivre Serviço de pedidos de informação, leitura/postagem.



... Abaixo texto em construção ...

Tagarela

editar

Microservice para comentários.

Similar a posativ/Isso, usando Viralata para autenticação. Maiores detalhes github.com/okfn-brasil/tagarela.

OpenShift Hosting

editar

O código pode ser OpenShift *ready*


Por isso, deve ser possível para hospedá-lo gratuitamente.

Usando rhc (não se esqueça de definir a URL para o repositório usado; talvez este?):

rhc app create tagarela python-2.7 postgresql-9.2 --from-code=<code-for-repo>

Parece que OpenShift Postgres não está fazendo vácuo, por isso, fazê-lo com uma tarefa agendada:

rhc cartridge add cron -a tagarela

Você também vai precisar de um keypub para a instância Viralata usado e um local_settings.py.
Você pode usar settings/local_settings.openshift_example.py como um exemplo para o segundo.
Coloque os dois arquivos em ~/app-root/data/, dentro da engrenagem OpenShift.
E, de dentro do engrenagem, utilizando o SSH, o init a DB:

Precisa de um doc 'estático', mas acessando a raiz de uma instância hospedada é possível ver um doc Swagger.

Sintaxe. Maiores detalhes em https://tagarela-cuidando.rhcloud.com

GET /comment Lista comentários em ordem decrescente da hora de criação
PUT /comment/{comment_id} Editar um comentário em um fio
POST /comment/{comment_id} Adicionar um comentário, responder a este comentário
DELETE /comment/{comment_id} Excluir um comentário de um thread
GET /delete_reported/{token} Excluir um comentário relatado de um segmento usando um token especial
POST /report/{comment_id} Reportar comentário para possível exclusão
POST /thread/{thread_name} Acrescentar um comentário na thread
GET /thread/{thread_name} Obter comentários de uma thread
POST /vote/{comment_id} Like/dislike de um comentário na thread

Vira-Lata (Beta)

editar

Microservice para autenticação: Restlike & Social. Instalação e preparo do banco de dados: ver https://github.com/okfn-brasil/viralata

Semelhante a microauth, mas construído sobre python-sócio-auth para permitir a autenticação usando outros provedores (como oAuth).
Em vez de Microauth, Vira-Lata não tem gerenciamento de regras.

O protocolo é semelhante ao Kerberos, tendo " & quot principal; e tokens "main" e "micro".

'Este código ainda está em fase beta, por isso deve ser usado com cuidado.'

Protocolo

editar

Workflow comum:

  1. Use os endpoints register ou login para obter uma token main e uma micro.
  2. Use a micro token to access the other microservices.
  3. Use a main token to get a new micro token or logout.

Notas importantes:

  • Uma micro token não pode ser invalidada além de por tempo de expiração. Por isso, deve ter uma vida curta.
  • O Vira-Lata mantém o controle do sinal principal invalidado, para que possam ter vidas mais longas. Mas os outros microservices não sei se um token principal foi invalidada, para que eles só devem aceitar micro fichas.
  • Micro tokens não podem ser usadas para obter um novo token micro. Isso permitiria infinito renovar. Somente fichas principais podem ser usadas para este propósito.

As tokens são JWTs. Para assiná-los o Vira-Lata precisa de uma chave privada. Os outros serviços de micro precisa da chave pública. As tokens tem username (nome do usuário), type ("micro" ou "main") e um campo exp (tempo de expiração).

Hospedagem OpenShift

editar

This code should be OpenShift ready.
So it should be possible to host it for free.

Using rhc (don't forget to set the URL for the used repository; maybe this one?):

rhc app create viralata python-2.7 postgresql-9.2 --from-code=<code-for-repo>

Looks like OpenShift Postgres is not doing Vacuum, so we do it with a cron job:

rhc cartridge add cron -a viralata

You will also need a key file and a local_settings.py file.
You can use settings/local_settings.openshift_example.py as an example for the second one.
Place both files in ~/app-root/data/, inside the OpenShift gear.
And, from inside the gear, using SSH, init the DB:

. $OPENSHIFT_PYTHON_DIR/virtenv/bin/activate
~/app-root/repo
python manage.py -s $OPENSHIFT_DATA_DIR initdb

Needs a 'static' doc, but accessing the root of a hosted instance it's possible to see a Swagger doc.