Projeto Cuidando do Meu Bairro/Guia APIs
Para o público em geral: Técnica:
|
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 | editar código-fonte]Microservice para comentários.
Similar a posativ/Isso, usando Viralata para autenticação. Maiores detalhes github.com/okfn-brasil/tagarela.
OpenShift Hosting
[editar | editar código-fonte]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:
API
[editar | editar código-fonte]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 | editar código-fonte]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 | editar código-fonte]Workflow comum:
- Use os endpoints
register
oulogin
para obter uma tokenmain
e umamicro
. - Use a
micro
token to access the other microservices. - Use a
main
token to get a newmicro
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 | editar código-fonte]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
API
[editar | editar código-fonte]Needs a 'static' doc, but accessing the root of a hosted instance it's possible to see a Swagger doc.