Exemple #1
0
        /// <summary>
        /// Retrieves a list of tasks that are available on the DownloadStation
        /// </summary>
        /// <param name="diskStation"></param>
        /// <param name="offset">
        ///     For pagination purposes.
        /// </param>
        /// <param name="limit">
        ///     Limit the number of tasks to retrieve.
        /// </param>
        /// <param name="additionalInfo">
        ///     Additional information <see cref="TaskAdditionalInfoValues"/>
        /// </param>
        /// <returns>
        /// A list of Tasks, <see cref="TaskListResponse"/>
        /// </returns>
        public async Task <TaskListResponse> ListTasksAsync(IDiskStationSession diskStation, int offset = 0, int limit = -1, TaskAdditionalInfoValues[] additionalInfo = null)
        {
            var requestParams = new RequestParameters {
                { "_sid", diskStation.SessionId }
            };

            if (offset != 0)
            {
                requestParams.Add("offset", offset.ToString());
            }

            if (limit != -1)
            {
                requestParams.Add("limit", limit.ToString());
            }

            if (additionalInfo != null && additionalInfo.Length != 0)
            {
                requestParams.Add("additional", string.Join(",", additionalInfo).ToLower());
            }

            if (requestParams.Count > 0)
            {
                return
                    (await
                     this.requestService.PerformOperationAsync <TaskListResponse>(
                         diskStation.Host.ToString(),
                         requestParams));
            }

            return(await this.requestService.PerformOperationAsync <TaskListResponse>(null));
        }
Exemple #2
0
        /// <summary>
        ///     Logs out of the DiskStation.
        /// </summary>
        /// <returns>True if logged in, false in case of errors.</returns>
        public async Task <bool> LogoutAsync(IDiskStationSession diskStation)
        {
            var logoutParams = new RequestParameters {
                { "session", SessionName }
            };
            var logoutRequestResult = await this.requestService.PerformOperationAsync <LogoutResponse>(diskStation.Host.ToString(), logoutParams);

            this.IsLoggedIn = false;
            return(logoutRequestResult.Success);
        }
Exemple #3
0
        /// <summary>
        /// Resume Tasks
        /// </summary>
        /// <param name="diskStation"></param>
        /// <param name="taskList">
        ///     The list of tasks to resume.
        /// </param>
        /// <returns>
        /// A list of Id's with the boolean value indicating if it was properly resumed.
        /// </returns>
        public async Task <ResumeTaskResponse> ResumeTaskAsync(IDiskStationSession diskStation, List <string> taskList)
        {
            var requestParams = new RequestParameters
            {
                { "id", string.Join(",", taskList) },
                { "_sid", diskStation.SessionId }
            };

            return
                (await
                 this.requestService.PerformOperationAsync <ResumeTaskResponse>(
                     diskStation.Host.ToString(),
                     requestParams));
        }
Exemple #4
0
        /// <summary>
        /// Deletes a Task(s) from the DownloadStation
        /// </summary>
        /// <param name="diskStation">
        /// </param>
        /// <param name="taskList">
        ///     List of Task ID's to delete.
        /// </param>
        /// <param name="forceComplete">
        ///     Delete tasks and force to move uncompleted download files to the destination.
        /// </param>
        /// <returns>
        /// A delete response, with a list of ID's and a boolean value indicating if it was deleted correctly.
        ///     <see cref="DeleteTaskResponse"/>
        /// </returns>
        public async Task <DeleteTaskResponse> DeleteTaskAsync(IDiskStationSession diskStation, IList <string> taskList, bool forceComplete)
        {
            var requestParams = new RequestParameters
            {
                { "id", string.Join(",", taskList) },
                { "force_complete", forceComplete ? "true" : "false" },
                { "_sid", diskStation.SessionId }
            };

            return
                (await
                 this.requestService.PerformOperationAsync <DeleteTaskResponse>(
                     diskStation.Host.ToString(),
                     requestParams));
        }
Exemple #5
0
        /// <summary>
        /// Creates a Download task on the DownloadStation using the supplied URL and additional optional parameters.
        /// </summary>
        /// <param name="diskStation"></param>
        /// <param name="taskUrl">
        ///     The URI for the download to create. Can be any valid URI.
        /// </param>
        /// <param name="userName">
        ///     Optional username if the download requires authentication.
        /// </param>
        /// <param name="password">
        ///     Optional password if the download requires authentication.
        /// </param>
        /// <param name="unzipPass">
        ///     Unzip password if it is a zip file download and it has a password.
        /// </param>
        /// <param name="fileStream">
        ///     FileStream for uploading a torrent file directly from your client.
        /// </param>
        /// <returns>
        /// A creation response, <see cref="CreateTaskResponse"/>
        /// </returns>
        public async Task <CreateTaskResponse> CreateTaskAsync(IDiskStationSession diskStation, string taskUrl, string userName = "", string password = "", string unzipPass = "", Stream fileStream = null)
        {
            // Todo: refactor parameter parsing
            var requestParams = new RequestParameters
            {
                { "uri", taskUrl },
                { "_sid", diskStation.SessionId }
            };

            if (userName != string.Empty)
            {
                requestParams.Add("username", userName);
            }

            if (password != string.Empty)
            {
                requestParams.Add("password", password);
            }

            if (unzipPass != string.Empty)
            {
                requestParams.Add("unzip_password", unzipPass);
            }

            if (fileStream != null && fileStream.Length > 0)
            {
                return
                    (await
                     this.requestService.PerformOperationWithFileAsync <CreateTaskResponse>(
                         diskStation.Host.ToString(),
                         requestParams,
                         fileStream));
            }

            return
                (await
                 this.requestService.PerformOperationAsync <CreateTaskResponse>(
                     diskStation.Host.ToString(),
                     requestParams));
        }
Exemple #6
0
        /// <summary>
        /// Gets the information on the Task(s) id's supplied.
        /// </summary>
        /// <param name="diskStation"></param>
        /// <param name="taskList">
        ///     The ID's of the tasks to get information on.
        /// </param>
        /// <param name="additionalInfo">
        ///     Additional info to request. <see cref="TaskAdditionalInfoValues"/>
        /// </param>
        /// <returns>
        /// A task information result. <see cref="TaskGetInfoResponse"/>
        /// </returns>
        public async Task <TaskGetInfoResponse> GetTaskInfoAsync(
            IDiskStationSession diskStation,
            IList <string> taskList,
            TaskAdditionalInfoValues[] additionalInfo = null)
        {
            var requestParams = new RequestParameters
            {
                { "id", string.Join(",", taskList) },
                { "_sid", diskStation.SessionId }
            };

            if (additionalInfo != null)
            {
                requestParams.Add("additional", string.Join(",", additionalInfo).ToLower());
            }

            return
                (await
                 this.requestService.PerformOperationAsync <TaskGetInfoResponse>(
                     diskStation.Host.ToString(),
                     requestParams));
        }