Nondeterministic Programming Methodology

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

    2.1.5 • Public • Published

    NativeScript Downloader

    npm npm Build Status

    Installation

    NativeScript 4x

    • tns plugin add nativescript-downloader

    NativeScript 3x

    • tns plugin add nativescript-downloader@1.1.0

    Usage

    TypeScript

    import { Downloader } from 'nativescript-downloader';
    Downloader.init(); // <= Try calling this after the app launches to start the downloader service
    Downloader.setTimeout(120); //Increase timeout default 60s
    import { Downloader, ProgressEventData, DownloadEventData } from 'nativescript-downloader';
    const downloader = new Downloader();
    const imageDownloaderId = Downloader.createDownload({
      url:
        'https://wallpaperscraft.com/image/hulk_wolverine_x_men_marvel_comics_art_99032_3840x2400.jpg'
    });
     
    downloader
      .start(imageDownloaderId, (progressData: ProgressEventData) => {
        console.log(`Progress : ${progressData.value}%`);
        console.log(`Current Size : ${progressData.currentSize}%`);
        console.log(`Total Size : ${progressData.totalSize}%`);
        console.log(`Download Speed in bytes : ${progressData.speed}%`);
      })
      .then((completed: DownloadEventData) => {
        console.log(`Image : ${completed.path}`);
      })
      .catch(error => {
        console.log(error.message);
      });

    JavaScript

    var Downloader = require('nativescript-downloader').Downloader;
    Downloader.Downloader.init(); // <= Try calling this after the app launches to start the downloader service
    Downloader.setTimeout(120); //Increase timeout default 60s
    var Downloader = require('nativescript-downloader').Downloader;
    var downloader = new Downloader();
    var imageDownloaderId = downloadManager.createDownload({
      url:
        'https://wallpaperscraft.com/image/hulk_wolverine_x_men_marvel_comics_art_99032_3840x2400.jpg'
    });
     
    downloader
      .start(imageDownloaderId, progressData => {
        console.log(`Progress : ${progressData.value}%`);
      })
      .then(completed => {
        console.log(`Image : ${completed.path}`);
      })
      .catch(error => {
        console.log(error.message);
      });

    Api

    Method Default Type Description
    createDownload(options: DownloadOptions) string Creates a download task it returns the id of the task
    getStatus(id: string) StatusCode Gets the status of a download task.
    start(id: string, progress?: Function) Promise<DownloadEventData> Starts a download task.
    resume(id: string) void Resumes a download task.
    cancel(id: string) void Cancels a download task.
    pause(id: string) void Pauses a download task.
    getPath(id: string) void Return the path of a download task.

    Example Image

    IOS Android
    IOS Android

    Angular

    Injection Root Component

    import { Downloader } from 'nativescript-downloader';
    ....
    ngOnInit() {
     Downloader.init(); // <= Try calling this after the app launches to start the downloader service
    }
    ...

    Custome Downloader option

      // Request format for Downlaoder
                 DownloadOptions {
                 urlstring;
                 query?: Object | string;
                 headers?: Object;
                path?: string;
                 fileName?: string;
              }

    Service File To use any where

    import { Injectable } from '@angular/core';
    import { Subject } from 'rxjs';
    import { Downloader, ProgressEventData, DownloadEventData } from 'nativescript-downloader';
     
     
     
    @Injectable({
        providedIn: 'root',
    })
     
     
    export class DataDownLoadService {
        public database: any;
        downloader: Downloader = new Downloader();
        constructor() { }
     
     
        /**
        * @ngdoc method
        * @name downloadDb
        * @description  download generic method for nay file 
        * @memberof DataDownLoadService
        * @param apiUrl : - https://myserver.com/mypath
        * @param filename :- myfile.zip ...
        * @param downloadlocation : mobile local location
        */
        downloadFile(apiUrl, filename, downloadlocation) {
            const subject = new Subject<any>();
        
            // Request format for Downlaoder
            //      DownloadOptions {
            //     url: string;
            //     query?: Object | string;
            //     headers?: Object;
            //     path?: string;
            //     fileName?: string;
            //   }
     
            // Prepare the header with token work
        
            const headerHttp = {
                "Content-Type": "application/json",
                "Authorization": 'Bearer ' + 'Token...'
            }
     
            const url =  apiUrl;
     
            const zipDownloaderId = this.downloader.createDownload({
                url: url,
                headers: headerHttp,
                path: downloadlocation,
                fileName: filename
            });
     
            this.downloader
                .start(zipDownloaderId, (progressData: ProgressEventData) => {
                    console.log(`Progress : ${progressData.value}%`);
                    console.log(`Current Size : ${progressData.currentSize}%`);
                    console.log(`Total Size : ${progressData.totalSize}%`);
                    console.log(`Download Speed in bytes : ${progressData.speed}%`);
                })
                .then((completed: DownloadEventData) => {
                    console.log(`zip file saved at : ${completed.path}`);
                  
                   
                    
                    subject.next(true);
                  
                })
                .catch(error => {
                    console.log('downloadDb', error.message);
                    subject.error(error);
     
                });
     
            return subject.asObservable();
        }
     
     
     
    }

    TODO

    • Local Notifications

    Install

    npm i nativescript-downloader

    DownloadsWeekly Downloads

    2

    Version

    2.1.5

    License

    Apache-2.0

    Unpacked Size

    235 kB

    Total Files

    21

    Last publish

    Collaborators

    • triniwiz