示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        public List <QueueResult> GetQueueHistory(AirDCPPClientSettings settings)
        {
            var queueRequest = BuildRequest(settings).Resource($"queue/bundles/0/1000").Build();

            return(ProcessRequest <List <QueueResult> >(queueRequest));
        }