/// <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)); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }