Esempio n. 1
0
        private async Task <TransmissionResponse> SendRequestAsync(TransmissionRequest data)
        {
#if DEBUG
            using (var client = new HttpClient(new LoggingHandler(new HttpClientHandler())))
#else
            using (var client = new HttpClient())
#endif
            {
                client.BaseAddress = new Uri(String.Format("http://{0}:{1}/", this.Host, this.Port));
                client.Timeout     = TimeSpan.FromSeconds(60);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                client.DefaultRequestHeaders.Add(X_SESSION_HEADER, _SessionId);
                data.Tag = this.Tag;

                HttpResponseMessage response = await client.PostAsJsonAsync(this.Path, data);

                if (response.StatusCode == System.Net.HttpStatusCode.Conflict)
                {
                    //Update SessionId and resend;
                    foreach (var item in response.Headers)
                    {
                        if (item.Key == X_SESSION_HEADER)
                        {
                            _SessionId = item.Value.Last();
                            continue;
                        }
                    }

                    return(await SendRequestAsync(data));
                }
                else if (response.IsSuccessStatusCode)
                {
                    var jsresult = await response.Content.ReadAsAsync <TransmissionResponse>();

                    return(jsresult);
                }

                return(null);
            }
        }
Esempio n. 2
0
        public TorrentAdded AddTorrent(AddTorrentArguments args)
        {
            TransmissionRequest request = new TransmissionRequest("torrent-add");

            request.Arguments = new Dictionary <string, object>();
            request.Arguments = args.ToDictionary();
            var result = SendRequest(request);

            if (result.Result == "success")
            {
                var items = result.Deserialize <TorrentAddedArguments>();
                return(items.TorrentAdded);
            }
            else if (result.Result == "duplicate torrent")
            {
                throw new DuplicateTorrentException();
            }

            return(null);
        }
Esempio n. 3
0
        private TransmissionResponse SendRequest(TransmissionRequest data)
        {
            var task = SendRequestAsync(data);

            return(task.GetAwaiter().GetResult());
        }