Aula

No contexto da API, a Aula é referenciada como lecture
. Uma Aula representa a unidade mínima de conteúdo, como um texto ou vídeo, que possui interações sociais (ver Mural). Várias Aulas podem ser agrupadas e ordenadas em um módulo.

Tipos de Lecture
Existem cinco tipos de Aula, são estas
- Página: Conteúdo em Rich Text Format.
- Documento: Arquivo de texto (txt, pdf, doc, docx, ppt, pptx, etc).
- Mídia: Arquivo de vídeo (mov, avi, mpeg, mp4, etc) ou vídeo hospedado no Youtube.
- Exercício: Possui questões a serem respondidas.
- Canvas: Aplicativo.

Atributos
Abaixo são descritos os atributos de uma Aula:
Atributo | Descrição |
---|---|
created_at | Data de criação |
name | Nome (título) |
position | Posição na ordenação dentro módulo |
type | Tipo (Canvas, Document, Exercise, Page, Media) |
id | Identificador |
rating | Avaliação feita pelos usuários |
view_count | Quantidade de vezes que foi visualizada |
updated_at | Data da última atualização |
Links
Abaixo são descritos os links presentes na representação de uma Aula:
Link | Descrição |
---|---|
self | Aula em questão |
self_link | Aula no Redu (HTML) |
subject | Módulo onde a Aula se encontra |
space | Disciplina onde a Aula se encontra |
course | Curso onde a Aula se encontra |
environment | Ambiente onde a Aula se encontra |
Tipos de aulas
Page
Esta aula é simplesmente um conteúdo baseado em Rich Text Format , originado pelo CKEditor.
Chave | Descrição |
---|---|
content | Conteúdo gerado pelo CKEditor. Inclui formatação HTML e CSS |
raw | Contéudo cru da aula, nem um tipo de formatação e estilo é adicionado |
Document
Este tipo de aula é composto basicamente por um documento, o qual pode ter o formato txt, pdf, doc, docx, ppt, pptx, etc.
Chave | Descrição |
---|---|
mimetype | Formato do arquivo |
Este tipo de aula também possui links, são estes:
Link | Descrição |
---|---|
raw | Endereço do arquivo bruto para download |
scribd | Endereço do arquivo hospedado no Scribd (com player para ser usado embedded) |
Media
Este tipo de Lecture representa arquivos de mídia, podendo ser áudio ou vídeo, inclusive mídias do Youtube.
Chave | Descrição |
---|---|
mimetype | MimeType do arquivo de mídia |
Link | Descrição |
---|---|
raw | Endereço para download do arquivo |
Para casos de vídeos do Youtube, o MimeType retornado será video/x-youtube
. Por exemplo:
Exercise
Canvas
Mais informações podem ser encontradas na documentação do Canvas.
GET /api/subjects/:id/lectures
Lista todas a Lectures presentes no Subject.
Autorização
É necessário estar matriculado no Course do qual o Subject faz parte.
Parâmetros
Atributo | Descrição | Restrições |
---|---|---|
id | ID do Subject. | N/A |
Exemplo
Requisição: GET /api/spaces/12/lectures
Resposta:
[{
"name": "Aula youtube",
"position": 1,
"rating": 0,
"type": "Media",
"links": [
{ "rel": "next_lecture", "href": "http://www.redu.com.br/api/lectures/105-conheca-o-seu-cliente" },
{ "rel": "course", "href": "http://www.redu.com.br/api/courses/recife" },
{ "rel": "environment", "href": "http://www.redu.com.br/api/environments/www" },
{ "rel": "subject", "href": "http://www.redu.com.br/api/subjects/114" },
{ "rel": "self", "href": "http://www.redu.com.br/api/lectures/107-aula-youtube" },
{ "rel": "raw", "href": "http://www.youtube.com/watch?v=GrV2SZuRPv0" },
{ "rel": "self_link", "href": "http://www.redu.com.br/espacos/27/modulos/114/aulas/107-aula-youtube" },
{ "rel": "space", "href": "http://www.redu.com.br/api/spaces/27" }
],
"view_count": 6,
"mimetype": "video/x-youtube",
"updated_at": "2011-11-22T22:56:59-02:00",
"id": 107,
"created_at": "2011-02-21T10:11:05-03:00"
}]
GET /api/lectures/:id
Retorna a Aula em questão.
Autorização
Deve estar matriculado no Curso ao qual o módulo pertence (no caso, o curso ao qual a disciplina pertence).
Parâmetros
Parâmetro | Descrição | Restrições |
---|---|---|
id | ID da Aula | N/A |
Exemplo
Requisição: GET /api/lectures/1
Resposta:
- Página (
Page
)
{
"created_at": "2013-01-16T10:28:23-02:00",
"name": "Nome da aula",
"links": [
{ "href": "http://www.redu.com.br/api/lectures/4877-novo", "rel": "self" },
{ "href": "http://www.redu.com.br/espacos/1412/modulos/3111/aulas/4877-novo", "rel": "self_link" },
{ "href": "http://www.redu.com.br/api/subjects/3111", "rel": "subject" },
{ "href": "http://www.redu.com.br/api/spaces/1412", "rel": "space" },
{ "href": "http://www.redu.com.br/api/courses/curso-de-exemplo", "rel": "course" },
{ "href": "http://www.redu.com.br/api/environments/ambiente-de-exemplo-api", "rel": "environment" },
{ "href": "http://www.redu.com.br/api/lectures/4877/statuses", "rel": "statuses" },
],
"position": 1,
"content": "<html></html>",
"raw": "lorem lipsum",
"type": "Page",
"mimetype": "text/html",
"id": 4877,
"rating": 0,
"view_count": 1,
"updated_at": "2013-01-16T10:28:23-02:00"
}
- Documento (
Document
)
{
"created_at": "2013-01-16T10:28:23-02:00",
"name": "Nome da aula",
"links": [
{ "href": "http://www.redu.com.br/api/lectures/4877-novo", "rel": "self" },
{ "href": "http://www.redu.com.br/espacos/1412/modulos/3111/aulas/4877-novo", "rel": "self_link" },
{ "href": "http://www.redu.com.br/api/subjects/3111", "rel": "subject" },
{ "href": "http://www.redu.com.br/api/spaces/1412", "rel": "space" },
{ "href": "http://www.redu.com.br/api/courses/curso-de-exemplo", "rel": "course" },
{ "href": "http://www.redu.com.br/api/environments/ambiente-de-exemplo-api", "rel": "environment" },
{ "href": "http://www.redu.com.br/api/lectures/4877/statuses", "rel": "statuses" },
{ "href": "http://s3.amazonaws.com/redu_uploads/documents/attachments/1837/original/04-platform-101.pdf?1358254757", "rel" : "raw" },
{ "href": "http://www.scribd.com/embeds/120454644/content?start_page=1&view_mode=list&access_key=key-1k5p2ziz2wckhlhjsm9n", "rel" : "scribd" },
],
"mimetype": "application/pdf",
"position": 1,
"type": "Document",
"id": 4877,
"rating": 0,
"view_count": 1,
"updated_at": "2013-01-16T10:28:23-02:00"
}
- Exercício (
Exercise
)
- Canvas (
Canvas
). Ver documentação do Canvas.
- Mídia (
Media
)
Para vídeos do YouTube:
{
"created_at": "2013-01-16T10:28:23-02:00",
"name": "Nome da aula",
"links": [
{ "href": "http://www.redu.com.br/api/lectures/4877-novo", "rel": "self" },
{ "href": "http://www.redu.com.br/espacos/1412/modulos/3111/aulas/4877-novo", "rel": "self_link" },
{ "href": "http://www.redu.com.br/api/subjects/3111", "rel": "subject" },
{ "href": "http://www.redu.com.br/api/spaces/1412", "rel": "space" },
{ "href": "http://www.redu.com.br/api/courses/curso-de-exemplo", "rel": "course" },
{ "href": "http://www.redu.com.br/api/environments/ambiente-de-exemplo-api", "rel": "environment" },
{ "href": "http://www.redu.com.br/api/lectures/4877/statuses", "rel": "statuses" },
{ "href": "http://www.youtube.com/watch?v=zm5GcMjPFOU", "rel": "raw" }
]
"position": 1,
"mimetype": "video/x-youtube",
"type": "Media",
"id": 4877,
"rating": 0,
"view_count": 1,
"updated_at": "2013-01-16T10:28:23-02:00"
}
Para vídeos hospedados no Redu:
{
"created_at": "2013-01-16T10:28:23-02:00",
"name": "Nome da aula",
"links": [
{ "href": "http://www.redu.com.br/api/lectures/4877-novo", "rel": "self" },
{ "href": "http://www.redu.com.br/espacos/1412/modulos/3111/aulas/4877-novo", "rel": "self_link" },
{ "href": "http://www.redu.com.br/api/subjects/3111", "rel": "subject" },
{ "href": "http://www.redu.com.br/api/spaces/1412", "rel": "space" },
{ "href": "http://www.redu.com.br/api/courses/curso-de-exemplo", "rel": "course" },
{ "href": "http://www.redu.com.br/api/environments/ambiente-de-exemplo-api", "rel": "environment" },
{ "href": "http://www.redu.com.br/api/lectures/4877/statuses", "rel": "statuses" },
{ "href": "http://s3.amazonaws.com/redu/video-name.mpg", "rel": "raw" }
],
"position": 1,
"mimetype": "video/mpeg",
"type": "Media",
"id": 4877,
"rating": 0,
"view_count": 1,
"updated_at": "2013-01-16T10:28:23-02:00"
}
POST /api/subjects/:subject_id/lectures
Cria uma aula.
Autorização
Deve estar matriculado no Curso ao qual o módulo pertence (no caso, o curso ao qual a disciplina pertence) e ter o papel de environment_admin
ou teacher
.
Parâmetros
Atributo | Descrição | Restrições |
---|---|---|
lecture[name] | Nome da aula | N/A |
lecture[type] | Tipo | Deve ser Media , Document ou Page |
lecture[media] | Arquivo ou URL do youtube | Apenas para aulas do tipo Media e Document |
lecture[content] | Conteúdo em texto | Apenas para aulas do tipo Page |
Upload de arquivos
Em casos casos em que há o upload de arquivos, são necessários os seguintes cabeçalhos HTTP:
1. Content-Type: multipart/form-data
2. Content-Length: 13951
(tamanho do arquivo em bytes)
O uso do Content-type
multipart/form-data
torna possível que o corpo da requisição HTTP seja composto vários conjuntos de dados, cada qual possuindo seu próprio Content-type. Com isso podemos enviar, além do name
e type
, os dados binários que compõem uma imagem ou um PDF.
O Redu é capaz de detectar automaticamente o Content-type para imagens. Porém, ao fazer upload de outros tipos de mídia, é necessário informar o seu Content-type. A maior parte das bibliotecas HTTP possuem esta funcionalidade implementada. Abaixo pode ser visto um exemplo de corpo de uma requisição HTTP para o upload de vídeo com o formato MPEG:
------------------------------17c3f87d4b40
Content-Disposition: form-data; name="lecture[media]"; filename=
"video_example.avi"
Content-Type: video/mpeg
<dados binários>
------------------------------17c3f87d4b40
Content-Disposition: form-data; name="lecture[name]"
testando_upload_de_aula
------------------------------17c3f87d4b40
Content-Disposition: form-data; name="lecture[type]"
Media
Este comportamento é descrito em detalhes no RFC 2388
Exemplo
Em todos os exemplos é utilizado cURL para testar a criação de Lecture. Um exemplo em Java pode ser encontrado aqui.
- Documento (
Document
)
Neste exemplo, uma aula com o type Document
será criada a partir do arquivo pdf_example.pdf
no diretório atual.
curl \
-H 'Authorization: OAuth AJOBibdmecfKxOpEeRWbdmVVCGujGRU3JKA0jyQM' \
-F 'lecture[media]=@pdf_example.pdf;type=application/pdf' \
-F 'lecture[name]=My lecture' \
-F 'lecture[type]=Document' \
http://www.redu.com.br/api/subjects/117/lectures -vv
- Media (upload)
Neste exemplo, uma aula com o type Media
será criada a partir do arquivo video.avi
no diretório atual.
curl \
-H 'Authorization: OAuth AJOBibdmecfKxOpEeRWbdmVVCGujGRU3JKA0jyQM' \
-F 'lecture[media]=@video.avi;type=video/mpeg' \
-F 'lecture[name]=My lecture' \
-F 'lecture[type]=Media' \
http://www.redu.com.br/api/subjects/117/lectures -vv
- Media (YouTube)
Neste exemplo, uma aula com o type Media
será criada a partir de um link do YouTube.
curl \
-H 'Authorization: OAuth AJOBibdmecfKxOpEeRWbdmVVCGujGRU3JKA0jyQM' \
-H 'Content-type: application/json' \
-d '{ "lecture" : { "name" : "Youtube", "media" : "http://www.youtube.com/watch?v=GrV2SZuRPv0", "type" : "Media" } }' \
http://redu.com.br/api/subjects/117/lectures -vv
- Página (
Page
)
curl \
-H 'Authorization: OAuth AJOBibdmecfKxOpEeRWbdmVVCGujGRU3JKA0jyQM' \
-H 'Content-type: application/json' \
-d '{ "lecture" : { "name" : "Minha pag", "content" : "<strong>meu conteudo</strong>", "type" : "Page" } }' \
http://redu.com.br/api/subjects/117/lectures -vv
DELETE /api/lectures/:id
Deleta uma aula.
Autorização
Deve estar matriculado no Curso ao qual o módulo pertence (no caso, o curso ao qual a disciplina pertence) e ter o papel de environment_admin
ou teacher
.