Skip to content

Conversation

misonog
Copy link

@misonog misonog commented Apr 30, 2021

分割ダウンローダ

仕様

  • 分割ダウンロードを行う
    • Range アクセスを用いる
    • いくつかのゴルーチンでダウンロードしてマージする
    • エラー処理を工夫する
      • golang.org/x/sync/errgourp パッケージなどを使ってみる
    • キャンセルが発生した場合の実装を行う

オプション

オプション 内容 デフォルト
-d ファイルをダウンロードするディレクトリ $PWD
-t タイムアウトするまでの時間(秒) 10

利用方法

setup

$ make  # テスト & ビルド

ダウンロードコマンドの例

$ ./pdownload https://blog.golang.org/gopher/header.jpg
$ # ディレクトリとタイムアウトまでの時間の指定
$ ./pdownload -d testdata/ -t 30 https://blog.golang.org/gopher/header.jpg

ディレクトリ構造

.
├── Makefile
├── README.md
├── go.mod
├── go.sum
├── main.go
├── pdownload
├── pdownload.go
├── pdownload_test.go
├── requests.go
├── requests_test.go
├── termination
│   ├── termination.go
│   └── termination_test.go
├── testdata
│   ├── header.jpg
│   └── test_download
│       └── header.jpg
└── util.go

参考

Code-Hex/pgetgopherdojo/dojo3#50を参考にさせていただきました。

メモ

  • net/http/httptestをテストに活用してみました
  • エラーチェックなどでご指摘あるかもしれませんが、レビュー宜しくお願いいたします

@tenntenn tenntenn added the 課題3-2 Good for newcomers label Apr 30, 2021
@tenntenn tenntenn self-assigned this Apr 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
課題3-2 Good for newcomers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants