public AsyncTask UploadAsync(UploadParameter uploadParam, AsyncCallbacks <UploadResult> asyncCallbacks)
        {
            CheckParameter(uploadParam != null, "uploadParam is required");

            var asyncTask = new AsyncTask();

            AsyncUtils.ProcessFirstItem(DoUpload(uploadParam), asyncCallbacks, asyncTask);

            return(asyncTask);
        }
        public AsyncTask SearchAsync(SearchParameter param, AsyncCallbacks <SearchResult> asyncCallbacks = null)
        {
            CheckParameter(param != null, "param is required");

            var asyncTask = new AsyncTask();

            AsyncUtils.ProcessFirstItem(DoSearch(param), asyncCallbacks, asyncTask);

            return(asyncTask);
        }
        public AsyncTask DirectDownloadAsync(DirectDownloadParameter directDownloadParameter,
                                             AsyncCallbacks <Stream> asyncCallbacks = null)
        {
            CheckParameter(directDownloadParameter != null, "directDownloadParameter is required");

            var asyncTask = new AsyncTask();

            AsyncUtils.ProcessFirstItem(DoDirectDownload(directDownloadParameter), asyncCallbacks, asyncTask);

            return(asyncTask);
        }
        public AsyncTask DownloadAsync(DownloadParameter downloadParam,
                                       AsyncCallbacks <DownloadResult> asyncCallbacks = null)
        {
            CheckParameter(downloadParam != null, "downloadParam is required");

            var asyncTask = new AsyncTask();

            AsyncUtils.ProcessFirstItem(DoCompleteDownload(downloadParam), asyncCallbacks, asyncTask);

            return(asyncTask);
        }