Esempio n. 1
0
        public void RemoveFrom(string source, string id, SabnzbdSettings settings)
        {
            var request = new RestRequest();
            var action = String.Format("mode={0}&name=delete&del_files=1&value={1}", source, id);

            ProcessRequest(request, action, settings);
        }
Esempio n. 2
0
        public SabnzbdConfig GetConfig(SabnzbdSettings settings)
        {
            var request = BuildRequest("get_config", settings);

            var response = Json.Deserialize<SabnzbdConfigResponse>(ProcessRequest(request, settings));

            return response.Config;
        }
Esempio n. 3
0
        public SabnzbdHistory GetHistory(int start, int limit, SabnzbdSettings settings)
        {
            var request = new RestRequest();
            var action = String.Format("mode=history&start={0}&limit={1}", start, limit);

            var response = ProcessRequest(request, action, settings);
            return Json.Deserialize<SabnzbdHistory>(JObject.Parse(response).SelectToken("history").ToString());
        }
Esempio n. 4
0
        public SabnzbdConfig GetConfig(SabnzbdSettings settings)
        {
            var request = new RestRequest();
            var action = "mode=get_config";

            var response = Json.Deserialize<SabnzbdConfigResponse>(ProcessRequest(request, action, settings));

            return response.Config;
        }
Esempio n. 5
0
        public SabnzbdCategoryResponse GetCategories(SabnzbdSettings settings)
        {
            var request = new RestRequest();
            var action = "mode=get_cats";

            var response = Json.Deserialize<SabnzbdCategoryResponse>(ProcessRequest(request, action, settings));

            return response;
        }
Esempio n. 6
0
        public string ProcessRequest(IRestRequest restRequest, string action, SabnzbdSettings settings)
        {
            var client = BuildClient(action, settings);
            var response = client.Execute(restRequest);
            _logger.Trace("Response: {0}", response.Content);

            CheckForError(response);

            return response.Content;
        }
Esempio n. 7
0
        public SabnzbdVersionResponse GetVersion(SabnzbdSettings settings)
        {
            var request = new RestRequest();
            var action = "mode=version";

            SabnzbdVersionResponse response;

            if (!Json.TryDeserialize<SabnzbdVersionResponse>(ProcessRequest(request, action, settings), out response))
            {
                response = new SabnzbdVersionResponse();
            }

            return response;
        }
Esempio n. 8
0
        public SabnzbdHistory GetHistory(int start, int limit, string category, SabnzbdSettings settings)
        {
            var request = BuildRequest("history", settings);
            request.AddQueryParam("start", start);
            request.AddQueryParam("limit", limit);

            if (category.IsNotNullOrWhiteSpace())
            {
                request.AddQueryParam("category", category);
            }

            var response = ProcessRequest(request, settings);

            return Json.Deserialize<SabnzbdHistory>(JObject.Parse(response).SelectToken("history").ToString());
        }
Esempio n. 9
0
        public SabnzbdAddResponse DownloadNzb(byte[] nzbData, string filename, string category, int priority, SabnzbdSettings settings)
        {
            var request = new RestRequest(Method.POST);
            var action = string.Format("mode=addfile&cat={0}&priority={1}", Uri.EscapeDataString(category), priority);

            request.AddFile("name", nzbData, filename, "application/x-nzb");

            SabnzbdAddResponse response;

            if (!Json.TryDeserialize<SabnzbdAddResponse>(ProcessRequest(request, action, settings), out response))
            {
                response = new SabnzbdAddResponse();
                response.Status = true;
            }

            return response;
        }
Esempio n. 10
0
        public SabnzbdAddResponse DownloadNzb(Stream nzb, string title, string category, int priority, SabnzbdSettings settings)
        {
            var request = new RestRequest(Method.POST);
            var action = String.Format("mode=addfile&cat={0}&priority={1}", category, priority);

            request.AddFile("name", ReadFully(nzb), title, "application/x-nzb");

            SabnzbdAddResponse response;

            if (!Json.TryDeserialize<SabnzbdAddResponse>(ProcessRequest(request, action, settings), out response))
            {
                response = new SabnzbdAddResponse();
                response.Status = true;
            }

            return response;
        }
Esempio n. 11
0
        public SabnzbdAddResponse DownloadNzb(byte[] nzbData, string filename, string category, int priority, SabnzbdSettings settings)
        {
            var request = BuildRequest("addfile", settings).Post();

            request.AddQueryParam("cat", category);
            request.AddQueryParam("priority", priority);

            request.AddFormUpload("name", filename, nzbData, "application/x-nzb");

            SabnzbdAddResponse response;

            if (!Json.TryDeserialize<SabnzbdAddResponse>(ProcessRequest(request, settings), out response))
            {
                response = new SabnzbdAddResponse();
                response.Status = true;
            }

            return response;
        }
Esempio n. 12
0
        public string RetryDownload(string id, SabnzbdSettings settings)
        {
            var request = new RestRequest();
            var action = string.Format("mode=retry&value={0}", id);

            SabnzbdRetryResponse response;

            if (!Json.TryDeserialize<SabnzbdRetryResponse>(ProcessRequest(request, action, settings), out response))
            {
                response = new SabnzbdRetryResponse();
                response.Status = true;
            }

            return response.Id;
        }
Esempio n. 13
0
        private string ProcessRequest(HttpRequestBuilder requestBuilder, SabnzbdSettings settings)
        {
            var httpRequest = requestBuilder.Build();

            HttpResponse response;

            _logger.Debug("Url: {0}", httpRequest.Url);

            try
            {
                response = _httpClient.Execute(httpRequest);
            }
            catch (HttpException ex)
            {
                throw new DownloadClientException("Unable to connect to SABnzbd, please check your settings", ex);
            }
            catch (WebException ex)
            {
                throw new DownloadClientException("Unable to connect to SABnzbd, please check your settings", ex);
            }

            CheckForError(response);

            return response.Content;
        }
Esempio n. 14
0
        private HttpRequestBuilder BuildRequest(string mode, SabnzbdSettings settings)
        {
            var baseUrl = string.Format(@"{0}://{1}:{2}/api",
                                   settings.UseSsl ? "https" : "http",
                                   settings.Host,
                                   settings.Port);

            var requestBuilder = new HttpRequestBuilder(baseUrl)
                .Accept(HttpAccept.Json)
                .AddQueryParam("mode", mode);

            requestBuilder.LogResponseContent = true;

            if (settings.ApiKey.IsNotNullOrWhiteSpace())
            {
                requestBuilder.AddSuffixQueryParam("apikey", settings.ApiKey);
            }
            else
            {
                requestBuilder.AddSuffixQueryParam("ma_username", settings.Username);
                requestBuilder.AddSuffixQueryParam("ma_password", settings.Password);
            }
            requestBuilder.AddSuffixQueryParam("output", "json");

            return requestBuilder;
        }
Esempio n. 15
0
        public string RetryDownload(string id, SabnzbdSettings settings)
        {
            var request = BuildRequest("retry", settings);
            request.AddQueryParam("value", id);

            SabnzbdRetryResponse response;

            if (!Json.TryDeserialize<SabnzbdRetryResponse>(ProcessRequest(request, settings), out response))
            {
                response = new SabnzbdRetryResponse();
                response.Status = true;
            }

            return response.Id;
        }
Esempio n. 16
0
        public void RemoveFrom(string source, string id, bool deleteData, SabnzbdSettings settings)
        {
            var request = BuildRequest(source, settings);
            request.AddQueryParam("name", "delete");
            request.AddQueryParam("del_files", deleteData ? 1 : 0);
            request.AddQueryParam("value", id);

            ProcessRequest(request, settings);
        }
Esempio n. 17
0
        public string GetVersion(SabnzbdSettings settings)
        {
            var request = BuildRequest("version", settings);

            SabnzbdVersionResponse response;

            if (!Json.TryDeserialize<SabnzbdVersionResponse>(ProcessRequest(request, settings), out response))
            {
                response = new SabnzbdVersionResponse();
            }

            return response.Version;
        }
Esempio n. 18
0
        public SabnzbdQueue GetQueue(int start, int limit, SabnzbdSettings settings)
        {
            var request = BuildRequest("queue", settings);
            request.AddQueryParam("start", start);
            request.AddQueryParam("limit", limit);

            var response = ProcessRequest(request, settings);

            return Json.Deserialize<SabnzbdQueue>(JObject.Parse(response).SelectToken("queue").ToString());
        }
Esempio n. 19
0
        public void RetryDownload(string id, SabnzbdSettings settings)
        {
            var request = new RestRequest();
            var action = String.Format("mode=retry&value={0}", id);

            ProcessRequest(request, action, settings);
        }
Esempio n. 20
0
        private IRestClient BuildClient(string action, SabnzbdSettings settings)
        {
            var protocol = settings.UseSsl ? "https" : "http";

            var authentication = settings.ApiKey.IsNullOrWhiteSpace() ?
                                 String.Format("ma_username={0}&ma_password={1}", settings.Username, settings.Password) :
                                 String.Format("apikey={0}", settings.ApiKey);

            var url = string.Format(@"{0}://{1}:{2}/api?{3}&{4}&output=json",
                                 protocol,
                                 settings.Host,
                                 settings.Port,
                                 action,
                                 authentication);

            _logger.Trace(url);

            return new RestClient(url);
        }