Skip to content

Instantly share code, notes, and snippets.

@guiocavalcanti
Last active December 17, 2015 08:09
Show Gist options
  • Save guiocavalcanti/5577847 to your computer and use it in GitHub Desktop.
Save guiocavalcanti/5577847 to your computer and use it in GitHub Desktop.
Projeto da disciplina Engenharia de Sw. Educativo

Descrição de Projeto: encapsuladores

Este projeto consiste na criação de um encapsulador para a API REST do Mural do Redu.

O que é um encapsulador?

Encapsuladores (para APIs REST), também conhecidos como wrappers, são bibliotecas que abstraem detalhes de rede na comunicação com serviços terceiros.

Por exemplo, para criar um post no mural de um usuário no Redu é necessário realizar uma requisição HTTP do tipo POST para a URL http://redu.com.br/api/users/:user_id/statuses passando-se como payload o seguinte json:

{ "status": { "text": "Meu novo post" } }

Um encapsulador na linguagem Ruby faria este trabalho da seguinte forma:

client.create_post(:user => 12, :text => "Meu novo post")

Note que usuário do encapsulador não precisa ter conhecimento a respeito das requisições HTTP enviadas, pois ele abstrai os detalhes. Toda a interação é feita através de invocação de métodos e inicialização de objetos.

O Redu possui alguns encapsuladores oficiais:

Requisitos

O encapsulador pode ser escrito em qualquer linguagem.

De preferência uma das citadas abaixo:

  • PHP
  • JavaScript (para browsers e servidores [Node.js])
  • Objective-C
  • C#
  • C++
  • Go
  • Lua
  • Haskell
  • Scala
  • Java
  • Python
  • Ruby
  • Shellscript
  • Perl
  • Erlang

O encapsulador deve realizar a autenticação via OAuth2.

Vocês podem utilizar bibliotecas de terceiros para isso. É apenas esperado que quem for utilizar o encapsulador de vocês informe as credenciais cadastradas no Redu.

Para uma lista extensiva, porém não completa, de implementações de clientes OAuth2, visitem o site oficial. Uma busca no Github também pode ajudar.

O encapsulador deve ser livre

Vocês irão deter os direitos autorais, porém o código deve ser livre (as in freedom). Sugiro a licença MIT. O código devera ser disponibilizado em um repositório aberto do Github.

O encapsulador deverá ser documentado

Tanto o código quanto o repositório deverá possuir documentação. No caso do repositório, um arquivo README na raíz do mesmo é suficiente. Não custa nada utilizar alguma linguagem de marcação como o markdown, textile, etc.

Lembrem-se de adicionar informações sobre como contribuir com o código.

Casos de erro devem ser tratados

O encapsulador deve lidar com erros de rede. Por exemplo, ao tentar fazer uma requisição tipo GET para /api/status/:id, passando-se um ID inexistente, o encapsulador deve levantar uma exceção ou retorna um objeto que represente falta de resposta.

O encapsulador deve implementar todas as funcionalidades do Mural

O encapsulador deve cobrir a postagem de informações no mural do Usuário, Disciplina e Aula. Além disso a visualização e listagem dos mesmos deve ser possível.

Percebam que os posts englobam os seguintes recursos: status, activity, log, helper e answer. Para mais informações consulte a documentação.

O encapsulador deve ser entregue até o dia 30/05

Ganha ponto quem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment