public string DownloadBySearchInstanceAndResultId(AirDCPPClientSettings settings, string id, string title) { var splitResult = id.Split(':'); var searchInstanceId = splitResult[0]; var resultId = splitResult[1]; var downloadRequest = BuildRequest(settings).Resource($"search/{searchInstanceId}/results/{resultId}/download").Post().Build(); var query = new HubDownloadQuery { target_directory = settings.DownloadDirectory }; downloadRequest.SetContent(query.ToJson()); // first start the download ProcessRequest <DownloadResultResponse>(downloadRequest); // next, search for the id of the bundle that has now been added to the queue var downloadBundleId = string.Empty; while (string.IsNullOrEmpty(downloadBundleId)) { var queueResults = GetQueueHistory(settings); downloadBundleId = queueResults.Where(result => result.name == title).FirstOrDefault()?.id.ToString(); Delay(1000); } return(downloadBundleId); }
private HttpRequestBuilder BuildRequest(AirDCPPClientSettings settings) { var urlBase = (settings.UrlBase.IsNotNullOrWhiteSpace() ? $"{settings.UrlBase}/" : string.Empty) + "api/v1"; var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port, urlBase) { LogResponseContent = true, NetworkCredential = new BasicNetworkCredential(settings.Username, settings.Password) }; requestBuilder.SetHeader("Content-Type", "application/json"); return(requestBuilder); }
public void DeleteItemFromQueueHistory(AirDCPPClientSettings settings, string bundleId, bool deleteData) { var deleteRequest = BuildRequest(settings).Resource($"queue/bundles/{bundleId}/remove").Build(); deleteRequest.Method = HttpMethod.Post; var query = new RemoveBundleQuery { remove_finished = deleteData }; deleteRequest.SetContent(query.ToJson()); ProcessRequest(deleteRequest); }
public List <QueueResult> GetQueueHistory(AirDCPPClientSettings settings) { var queueRequest = BuildRequest(settings).Resource($"queue/bundles/0/1000").Build(); return(ProcessRequest <List <QueueResult> >(queueRequest)); }