ledown
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

LeDown

A resumable downloader

Build Status Coverage Status npm version

A library for nodejs to download http large file in pauseable and resumable way

Prerequisite

Node >= 8.0

Usage

Commonjs

var Task = require('ledown').Task
Task.create({
  url: 'url',
  downloadPath: 'path'
}).then(function(task) {
  task.on('progress', function(){
    console.log(task.progress)
  })
  task.on('error', function(err) {
    console.log(err)
  })
  task.on('end', function() {
    console.log('end')
  })
  task.start()
})

ES6

import { Task } from 'ledown'
await task = Task.create({
  url: 'url',
  downloadPath: 'path'
})
 
task.on('progress', () => {
  console.log(task.progress)
})
task.on('error',err => {
  console.log(err)
})
task.on('end', () => {
  console.log('end')
})
task.start()
 
setTimeout(() => {
  if(task.progress !== 1) {
    task.stop()
      .then(() => {
        task.storeToFile(path.join(__dirname, './task.config'))
      })
  }
}, 1000)

Documentation

static create(options: TaskOptions): Promise<Task>

Static method on Task class for creating a new download task.

type TaskOptions = {
    url: string
    referUrl?: string
    downloadDir?: string
    downloadPath: string
  } | {
    url: string
    referUrl?: string
    downloadDir: string
    downloadPath?: string
  }

You have to specify whether the downloadDir or downloadPath. If you just specify the downloadDir, a random name will be used.

Task.create use HTTP HEAD method to get metadata of the resource. If server respond an error, the returned promise will be rejected.

static restoreFromFile(path: string): Promise<Task>

Restore task from previous task config file. If ether the specified config file or the previous unfinished downloading file not exists, the returned promise will be rejected.

static Task.Error

  • Task.ERROR.ERR_NO_METADATA
  • Task.ERROR.ERR_DISK_IO_WRITE
  • Task.ERROR.ERR_NETWORK
task.on('error', (e) => {
  if(e.message === Task.ERROR.ERR_DISK_IO_WRITE) {
    // write disk error
  } else if(e.message === Task.ERROR.ERR_NETWORK) {
    // download resource error
  }
})

Task#storeToFile(path: string): Promise<void>

Store a task config to specified path. IO error will cause the returned promise to be rejected. This method will not stop the task. You could call task.stop() as needed.

Task#start(numOfThread: number = 1): void

Start the task. If you specify the numOfThread argument, it will concurrently start multiple http request.

Task#stop(): Promise<void>

Stop the task. We could not stop the task immediately, since we have no method to suspend write task.

Task#on(event: string, listener: function): void

Events that may triggered:

  • on('error')
  • on('progress')
  • on('end')

Task#off(event: string, listener: function): void

Remove the listener of the specific event.

Task#progress: number

Progress of the task. When the task complete, task.progress is 1.

Task#metadata

The structure of task.metadata is:

  • url: string
  • createDate: Date
  • mimeType: string
  • downloadPath: string
  • totalBytes: number
  • resumable: boolean

LICENSE

MIT

Copyright (c) 2017-present, Xiaole (Will) Liu

Package Sidebar

Install

npm i ledown

Weekly Downloads

2

Version

1.0.5

License

MIT

Last publish

Collaborators

  • chn.will.liu