hokui/hokui.net — pull request #94 by iTakeshi (2014-12-28 05:05:38+00:00)
Title: [WIP][RFC] Documents upload/download

ひと通り #57 に則るように実装してみました。
詳細な仕様を議論した後、specを書きます。

### `POST /api/documents'
`request json`
`class_year`は`ClassYear`モデルとは関係のない、単なる`int`です。
※documentsを登録するためだけに80期とかのモデルを作る必要はあまり無いため
```json
{
"subject_id": 1,
"user_id": 1,
"class_year": 93,
"document_type": 1,
"number": 1,
"with_answer": false,
"note": "hoge"
}
```

`response json`
```json
{
"id": 1,
"subject_id": 1,
"user_id": 1,
"class_year": 93,
"document_type": 1,
"number": 1,
"page": 1,
"with_answer": false,
"note": "hoge",
"download_count": 0,
"file_name": "dummy.pdf",
"file_mime": "application/pdf",
"created_at": "2014-12-28T13:19:46.621+09:00",
"updated_at": "2014-12-28T13:19:46.621+09:00",
"errors": {}
}
```

### `GET /api/documents/1/download_token`
`request json`無し
`response json`
```json
{
"id": 1,
"subject_id": 1,
"user_id": 1,
"class_year": 93,
"document_type": 1,
"number": 1,
"page": 1,
"with_answer": false,
"note": "hoge",
"download_count": 0,
"file_name": "dummy.pdf",
"file_mime": "application/pdf",
"download_token": "624804dfafc445938e36", ###
"created_at": "2014-12-28T13:19:46.621+09:00",
"updated_at": "2014-12-28T13:19:46.621+09:00",
"errors": {}
}
```

### `GET /contents/documents/1?download_token=624804dfafc445938e36`
これがダウンロードURLになります
`response`：普通にファイルが送られてきます

### TODO
#57 では気づかなかったけど、エラー処理をいろいろやる必要があります。
* `/contents/hoge` => `404`
* `/contents/documents/1` (token missing) => `401`
* `/contents/documents/0` => `404`
`routes.rb`にどう書くのが正しいのか調査中

### Future
zipで一括ダウンロード機能を付けたいけど、このPRには含めません。