コード例 #1
0
        public async Task <IEnumerable <TorrentInfo> > GetTorrentsAsync(ITransmissionConfiguration config)
        {
            var client  = CreateClient(config);
            var request = new RestRequest()
            {
                Method = Method.POST
            };

            request.JsonSerializer = _serializer;
            request.AddJsonBody(new TransmissionRequest("torrent-get", new TorrentRequestArguments {
                Fields = TorrentFields.ALL_FIELDS
            }));

            try
            {
                var response = await client.ExecuteTaskWithCsrfCheckAsync <TransmissionResponse <TorrentsResponse> >(request);

                if (response.IsSuccessful)
                {
                    return(response.Data.Arguments.Torrents);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to fetch data from server");
            }
            return(null);
        }
コード例 #2
0
        public async Task <Statistic> GetStatusAsync(ITransmissionConfiguration config)
        {
            var client  = CreateClient(config);
            var request = new RestRequest()
            {
                Method = Method.POST
            };

            request.JsonSerializer = _serializer;
            request.AddJsonBody(new TransmissionRequest("session-stats"));

            try
            {
                var response = await client.ExecuteTaskWithCsrfCheckAsync <TransmissionResponse <Statistic> >(request);

                if (response.IsSuccessful)
                {
                    return(response.Data.Arguments);
                }
            }
            catch (Exception ex) {
                _logger.LogError(ex, "Failed to fetch data from server");
            }
            return(null);
        }
コード例 #3
0
        public async Task <TorrentInfoBase> AddTorrentAsync(ITransmissionConfiguration config, Uri uri)
        {
            var client  = CreateClient(config);
            var request = new RestRequest()
            {
                Method = Method.POST
            };

            request.JsonSerializer = _serializer;
            request.AddJsonBody(new TransmissionRequest("torrent-add", new NewTorrent()
            {
                Filename = uri.ToString()
            }));
            try
            {
                IRestResponse <TransmissionResponse <TorrentAddedResponse> > response = await client.ExecuteTaskWithCsrfCheckAsync <TransmissionResponse <TorrentAddedResponse> >(request);

                if (response.IsSuccessful)
                {
                    return(response.Data.Arguments?.TorrentAdded);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to fetch data from server");
            }
            return(null);
        }
コード例 #4
0
 public CommandFactory(ITelegramBotClient botClient, ITransmissionService transmissionService,
                       ITransmissionConfiguration defaultTransmissionConfiguration, SelfUpdatingMessage selfUpdatingMessage)
 {
     _botClient           = botClient;
     _transmissionService = transmissionService;
     _defaultTransmissionConfiguration = defaultTransmissionConfiguration;
     _selfUpdatingMessage = selfUpdatingMessage;
 }
コード例 #5
0
        private RestClient CreateClient(ITransmissionConfiguration config)
        {
            var client = new RestClient(config.Url)
            {
                Authenticator = new HttpBasicAuthenticator(config.Login, config.Password),
            };

            // Override with Newtonsoft JSON Handler
            client.AddHandler("application/json", _deserializer);
            client.AddHandler("text/json", _deserializer);
            client.AddHandler("text/x-json", _deserializer);
            client.AddHandler("text/javascript", _deserializer);
            client.AddHandler("*+json", _deserializer);

            return(client);
        }
コード例 #6
0
 public AddCommand(ITelegramBotClient botClient, ITransmissionService transmissionService,
                   ITransmissionConfiguration defaultTransmissionConfiguration) : base(botClient, transmissionService, defaultTransmissionConfiguration)
 {
 }
コード例 #7
0
 public StatusCommand(ITelegramBotClient botClient, ITransmissionService transmissionService,
                      ITransmissionConfiguration defaultTransmissionConfiguration, SelfUpdatingMessage selfUpdatingMessage) : base(botClient, transmissionService, defaultTransmissionConfiguration)
 {
     _selfUpdatingMessage = selfUpdatingMessage;
 }
コード例 #8
0
 protected TransmissionCommandBase(ITelegramBotClient botClient, ITransmissionService transmissionService, ITransmissionConfiguration defaultTransmissionConfiguration) : base(botClient)
 {
     _transmissionService = transmissionService;
     _defaultTransmissionConfiguration = defaultTransmissionConfiguration;
 }