gotipath_stream_uploader 1.0.1 copy "gotipath_stream_uploader: ^1.0.1" to clipboard
gotipath_stream_uploader: ^1.0.1 copied to clipboard

File Uploader for Gotipath

Gotipath Stream Uploader #

Installation #

Add the package to the dependencies section in pubspec.yaml:

  • gotipath_stream_uploader: ^1.0.1 (or latest release)

Usage #

Add the following import to the .dart file that will use GotipathStreamUploader

import 'package:gotipath_stream_uploader/gotipath_stream_uploader.dart';

Example #

  // ADD ENDPOINT and credential HERE
final String _endPoint = "https://apistream.gotipath.com/v1/";
final String _clientID = 'Your client ID';
final String _libraryID = 'Your library ID';
final String _apiKey = 'Your API key';
final String _videoID = 'Your video ID';

GotipathStreamUploader gotipathStreamUploader = GotipathStreamUploader();


// Chunk upload
gotipathStreamUploader
  ..endPoint = _endPoint
  ..clientID = _clientID
  ..libraryID = _libraryID
  ..apiKey= _apiKey
  ..videoID = _videoID
  ..file = fileToUpload
  ..onProgress = (double progress) {
  setState(() {
  _progress = progress.ceil();
  });
  }
  ..onError = (String message, int chunk, int attempts) {
  setState(() {
  _errorMessage = 'error 💥 🙀:\n'
  ' - Message: $message\n'
  ' - part: $chunk\n'
  ' - Attempts: $attempts';
  });
  }
  ..onSuccess = () {
  setState(() {
  _uploadComplete = true;
  });
  };



gotipathStreamUploader.createUpload();

API #

Although the API is a port of the original JS library, some options and properties differ slightly.

createUpload() #

Intializes the upload process. This method must be called after the GotipathUploader instance is created and all event handlers are set.

GotipathStreamUploader parameters:

Upload options
  • endPoint type: string (required if endPointResolver is null)

  • clientID type: string (required)

  • libraryID type: string (required)

  • apiKey type: string (required)

  • videoID type: string (required)

    URL to upload the file to.

  • endPointResolver type: Future<String> (required if endPoint is null)

    A Future that returns the URL as a String.

  • file type: File (required)

    The file you'd like to upload.

  • headers type: Map<String, String>

    A Map with any headers you'd like included with the PUT request for each chunk.

  • chunkSize type: integer, default:5120

    The size in kb of the chunks to split the file into, with the exception of the final chunk which may be smaller. This parameter should be in multiples of 64.

  • attempts type: integer, default: 5

    The number of times to retry any given chunk.

  • delayBeforeRetry type: integer, default: 1

    The time in seconds to wait before attempting to upload a chunk again.

Event options
  • onAttempt { chunkNumber: Integer, chunkSize: Integer }

    Fired immediately before a chunk upload is attempted. chunkNumber is the number of the current chunk being attempted, and chunkSize is the size (in bytes) of that chunk.

  • onAttemptFailure { message: String, chunkNumber: Integer, attemptsLeft: Integer }

    Fired when an attempt to upload a chunk fails.

  • onError { message: String, chunk: Integer, attempts: Integer }

    Fired when a chunk has reached the max number of retries or the response code is fatal and implies that retries should not be attempted.

  • onOffline

    Fired when the client has gone offline.

  • onOnline

    Fired when the client has gone online.

  • onProgress progress double [0..100]

    Fired continuously with incremental upload progress. This returns the current percentage of the file that's been uploaded.

  • onSuccess

    Fired when the upload is finished successfully.

GotipathStreamUploader Instance Methods #

  • pause()

    Pauses an upload after the current in-flight chunk is finished uploading.

  • resume()

    Resumes an upload that was previously paused.

  • cancel()

    Cancels the upload abruptly.